What is Software-Defined Network?

In this post, I will mention about Software Defined Networks (mostly we call it “SDN”). I think all computer or software engineers should know about computer communications/networks. After you create a software, if it is not local, your software need to communicate each other’s. So, I will explain more detail and most recent topic (SDN). I will put my references on last part of page for more detail.

Computer Networks has a large number of devices such as routers, switches, firewalls and other types. In last decade and following one, an exponential growth in the amount of traffic and data are major challenges will be also in future networks.

Network operators are responsible for functions such as configuring the network with policies, instructions and changes in these large scale networks. Modern network systems include integrated switches and routers provided special APIs which are produced by different vendors. Even the small network is tried to integrate with different network, configuration of this process takes several months, it is long right?

On the other hand, since 50 years, internet and infrastructure are settled. Therefore, the internet has become extremely hard to develop. It is called “Internet Ossification”. Vendors have hard situation to introduce new protocols or deployment. Actually, traditional networks handle all functions but they are so static and has management issues to be solved. Infrastructure should be more dynamic and responsive. So, researchers focus on these issues and start to design an innovative architecture of network can operable, programmable and efficient. Still there are many researches and papers to contribute SDN.

Software-Defined Network (SDN) was introduced in 2005 to solve and overcome above issues also includes Quality of Service (QoS), security, virtualization etc. Basically, “Software-Defined Networking (SDN)” is a term of the programmable networks. The network can be divided into three functional planes which are data plane, control plane and management plane. The function of data plane is that forwarding the packets to destination by all network devices. Control plane takes on every logic function of network such as routing paths, load balancing and firewall. Control plane is a brain of the network. Another one is management plane which is responsible for monitoring, configuring and maintaining. I will give more detail of them in below.

SDN allows to control the network as a whole and dynamically in order to reduce complexity and faster development on planes. It leads to interoperability, flexible, cost-effective solutions and it is open technology to develop. Ten keys make approach of SDN more understandable;

  • Programming rather than managing manually in GUI/console interface
  • Making for easier policy implementation by network operators
  • Supporting multivendor ecosystems to see whole network as manageable
  • Understanding the importance of the controller/centralized network
  • Speaking dynamic language with other infrastructures
  • Customization of software programs using the northbound lane
  • Flexibility to cloud automation tools
  • Considering an scalability network for future
  • Openness and interoperability platform
  • Keeping communication and flow as seamless
Figure I – The overview of SDN (taken from link)

Comparison of a traditional network and SDN architecture is shown in Figure I. SDN decoupled the control mechanism to controller and leave forwarding devices without embedded control.

Architecture of SDN

Briefly, an approach of SDN is separation between a controlled and a controller devices. Controller manage other devices by interfaces. All switches in the core network are connected to the SDN controller directly or via other switches. SDN controller manipulates the packet forwarding on network topology. SDN Controller includes southbound interface is to communicate between SDN controller and the network nodes (switches) and also northbound interface is to communicate between controller and applications.

I said tree planes but we can expand into five planes. These are control plane, data plane and management plane are aforementioned. In addition to these, operational plane and application plane can be added. These terms are so nested each other except data and control plane. More detail explanation of these planes as;

  • Data Plane, receives instructions from controller and handle packets on communication path according to these instructions include forwarding, dropping and changing packets. This plane has network devices such as switches and microwave network elements in data link layer, routers in network layer, firewalls, load balancers and video transcoders in above of transport layer.
  • Operational Plane, connect with management plane and responsible for forwarding devices whether is active or passive, status of ports, memory and some hardware diagnoses.
  • Control Plane, decides how packets should be forwarded by network devices according to network topology. It cares about devices operational metrics to decide the paths. Also, when any path changes, flow tables will be updated on forwarding devices. Control plane has these functions;
    • Topology discovery and maintenance
    • Packet route selection
    • Path failover mechanism
  • Management Plane, maintains network and provides monitoring, configuring functions to network operators. So, they do not have to configure all network devices individually.
  • Application Plane, includes definition about behavior of network and holds application and services working on network.
Figure II – SDN Architecture with Layers

In SDN architecture, when a data come to switch, the flow table is searched according to data headers. If there is a rule in flow table, the switch forward the packet to the next switch or network. Otherwise, the metadata or whole packet send to controller where the packet should be forwarded. The controller responses this request with flow rule and broadcast this rule for all switches according to administration rule.

OpenFlow Protocol

OpenFlow is the one of the most famous protocol for SDN and huge range of academic research about it. A group of network operators, service providers and vendors created the Open Network Foundation and standardize the OpenFlow protocol for SDN. OpenFlow protocol provide the secure communication between SDN Controller and each forwarding devices via interface which is called South-bound API mentioned in Figure II. Many famous market vendors (HP, IBM, NetGear, Cisco etc.) support this protocol and produce capable network devices.

The OpenFlow protocol supports three message types, controller-to-switch, asynchronous, and symmetric, each with multiple sub-types. Controller-to-switch messages are initiated by the controller and used to directly manage or inspect the state of the switch. Asynchronous messages are initiated by the switch and used to update the controller of network events and changes to the switch state. Symmetric messages are initiated by either the switch or the controller and sent without solicitation.

In research area, there are many types implementation of OpenFlow Controller. These controllers should support the latest OpenFlow protocol version. For example, NOX allows to software developers with C++ or Phyton, using APIs to access to switches and communicate. Floodlight is java-based controller Maestro aims to better performance using multithreading. The Table I shown below includes current OpenFlow controllers and their overview.

Table - OpenFlow Controller Implementations 
(taken from link)
Controller Implementation Developer Overview
POX Python Nicira General, open-source SDN controller written in Python.
NOX Python / C++ Nicira The first openflow controller.
MUL C Kulcloud C based multi-threaded infrastructure
Maestro Java Rice University A network operation system,
Beacon Java Stanford Supports event-based and threaded operations.
Trema Ruby/C NEC OpenFlow controller developed by Ruby and C
Jaxon Java Independent Developers Based on NOX but implementation by Java
FloodLight Java BigSwitch Based on Beacon implementation
NodeFlow Javascript Independent Developers Written by javascript by Node.js
Ryu Phyton Independent Developers Ryu fully supports OpenFlow with all versions.

After that part, we computer engineers take the place to develop fast algorithms and software for controllers. I hope the post is helpful to understand what SDN is. These are my references to collapse the topic. Thank you and see you in next posts.



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s