IP/Networks - Software Defined Network                          Home : www.sharetechnote.com





SDN - Overview


SDN stands for 'Software Defined Network'. When we say 'Software Define Something', it usually mean a system or a component implemented in software and in conventional way, that system/component used to be implemented in Hardware or configured by human intervention (manually). Applying this to SDN (Software Defined Network), the term SDN implies that we want to implement a Network (or Network Components) by software and those component used to be implemented hardware or configured by human intervention.  

Then you may ask 'which part of Network will be replaced by Software in SDN ?' How ? and Why ?

Just keep these questions in mind and follow along following sections and the answer gradually emerge.



What is the typical structure of current network ?


Before we talk of the new system (SDN), let's briefly think of how we implement and configure the network in current (conventional) way.

In a very simple representation, a network can be represented as a lot of switches (routers) connected together to form a fishing net or spider web like architecture.

Each componet (Switch in this case) is made up of roughly two parts. One part is for forwarding a packets from a port to another port and the other part is for setting up various information/configuration that directs how those packets should be forwarded.



This is very simple (oversimplified in some aspect) description of the networking with current (conventional, non-SDN) switches/routers. Getting into a little bit further details, followings are considered as characterisfics of the network based on conventional switch/routers. Most of these are targets to be improved in the new network called SDN.

  • No Abstraction in Control Plane : This means 'Configuration/Algorithms in control plane is local to a specific Switch/Router and No general structure that can be applied to every switch/routers
  • Control Plane has no modularity and has limited functionalities : It means .. if you want to write a new routing algorithm, you have to start from scratch. There is no modular library you can base on and evolving into a new one.



How do we configure (change configure) in conventional (non-SDN) network ?


Now let's suppose that we need to change the configuration of a network to optimize it for a specific purpose or specific use model. The most typical way would be to dispatch tech people to the location of each switch and configure each of the switch manually.




What is problem with the current (conventional) way  ?


If they are only a few switches/routers that you need to reconfigure, there wouldn't be much problem. Or even if you need to reconfigure much more of them (like hundreds or thousands), that may be tolerable if it happens very seldom (like once or twice a year), but there are many cases where these kind of manual/local reconfiguration become impractical or almost impossible. Some of these cases would as follows (Most of these items are based on Ref [4]):

  • What if you need to change several thousands or even more (approaching almost million in worst case) of network components (e.g, switch, routers or local servers) ?
  • What if you need to change those configuration very often ? Several times even in a single day ?
  • What if those network components are from different vendors ? (Each vendor has its own way of configuration method, different parameter set, different tools for configuring those component. So you need different group of tech people with specialized in different vendor's product)



How do we configure (change configure) in SDN network ?


Naturally, you would come up with a question. How do we cope with those issues listed above ? The new technology that came out to cope with these issue was SDN (Software Defined Networking). The fundamental idea on SDN can be illustrated as shown below. It is to setup a centeralized Control Center and hook up all the individual network components to the centeralized Control Center. And then, configure those individual components remotely with software technology.




What is to be done to realize SDN ?


It may sound good and easy. But 'sound easy' does not always mean 'easily doable'. There will be many things to be done first in order for SDN to be realized. Followings are a couple of things you have to consider first

  • What kind of network topology (overall picture of a network) you want to form at the end ? This doesn't need to only one structure. There can be many different topolgies depending on use-model/business model ? It means you need to have some global view of a network.
  • What kind of functionality and configuration should be included as part of this new control mechanism (Control Plane). To figure these out, you would need to list up all the possible configurations and functionality and identify those items that can commonly apply to all the switches/routers.
  • Each of the network component (switch, router etc) has its own interface that can communicate with the centralized controller and understand the instruction from the controller.  
  • This interface (C-Plane interface) needs to be common to all the network components regardless of the vendors. So it should be possible to control all the network components from the central control center without worrying about who is the manufacturer of the components.
  • There should be a new type of control protocol and tools that can be used for this new control mechanism.

One best known control protocol and tools to handle these issue are OpenFlow (I will handle about OpenFlow in a separate page)





[1]  Software-Defined Networking: The New Norm for Networks (ONF Whitepaper)  

[2]  SoftAir: A software defined networking architecture for 5G wireless systems

[3]  SDN and OpenFlow Overview - Open, API and Overlay based SDN (YouTube)

[4]  Stanford Seminar - Software-Defined Networking at the Crossroads : A Lecture from an early inventor of SDN