What is an SDN?
Before we look for a perfect
definition of SDN we should know how many kind of definitions are floating out
there for SDN.
1. Open
SDN (Openflow) – Open networking foundation which is org. in charge of openflow
standard defines SDN as separation of control and data plane where the networking
devices are controlled/updated using the openflow protocol.
2. SDN
via APIs – Cisco used this concept. Functionality of networking devices is exposed
using a rich API. Developers can manipulate networking devices using richer
APIs.
3. SDN
via Overlays – VMware use this concept.
We are going to mainly focus on first one which is Open
SDN.
To understand SDN in a better way,
let’s take an example.
**This
diagram shows SDN architecture**
In a traditional environment for
e.g., a company has three devices or switches and each device has local control
plane and data plane. Control plane is essentially the brain of a device.
Protocols like OSPF (distributed routed protocol for exchanging routes b/w the
devices) is implemented locally on each device. So, each device has a local
brain here and each device has to work independently (none of device has
complete visibility of the network) and together they have to synchronize a link
state database (to know state of network topology at a given point of time). If
you have multiple n/w device and using CLI from management point of view you
would have to connect individually with each device and typically manually
configure that network device. Each of all devices also have local data plane which
states how packets are forwarded through the device.
Each switch has a local control
plane (local brain of the device) also has local data plane (used to forward
the traffic through the devices / copy of routing table) e.g., how a packet
will be sent from one port to another (programmed using a control plane or
using a MAC address table) and this information gets pushed to hardware.
From management point of view each
device has local management plane means if we have 100 such devices, we will
have all 100 control planes, 100 data planes, and 100 management interfaces to
manage those devices and will have to connect via TELNET or through CLI to
manage them all.
Different network devices have
their own proprietary OS and interfaces. E.g., HP, CISCO, and Juniper. It becomes
very difficult to create an application / new routing protocols that is
installed in those OS.
In other words, we can’t develop a
new routing protocol and install that across all devices. So, this limits
innovation. It would make much sense to open up networking devices to allow people
to develop applications / protocols / utilities that allow for rapid innovation
/ automation in networking.
So, to overcome these limitations
we use a centralized controller using Open SDN which helps to create open
interface by having an abstraction layer to allow for rapid app development. In
this case user doesn’t need to be aware of details/requirements ASICS (Application
specific integrated switch – Special chip application hardwired to do a specific
job). Using Rest API/ Java API controller take care of nitty gritty of updating
flow tables on switches. It will push policies or configuration down to network
devices. For this we can use BASH scripts to program flow entries.
Key
points to be noted –
1. Application
layer uses Northbound API (Rest/ Java)
2. Controller
uses Southbound API (Openflow / Network configurations / SNMP) to update flow tables
to manipulate traffic
3. We
use four directions here North, South, East and West. North shows communication
between application and controller and south reflects communication between controller
and network devices and east/west shows multiple controllers to do the same task
parallelly.
We have a very good example on use
of SDN which is implemented in a tool from HP i.e., HPE (HP network protector).
Please read official documentation
for this tool here – HP
Network Protector using SDN Application
No comments:
Post a Comment