In my previous post, I explained what is Software Defined Networking (SDN). As I wanted to keep the introduction simple, I avoided discussing SDN internals in that post. Now that you understand what SDN is, let us get into other details.
In SDN, sequence of packets exchanged between two end-points is known as ‘flow’. A ‘flow’ is uni-directional. A ‘flow’ is uniquely identified by various fields in the packet’s header. Each switch/router is configured to take specified actions for specified ‘flows’ in the network. The table containing all the flows is usually called Flow Table. An IP forwarding table can be called a Flow table where each IP route is a ‘flow’ with destination address as the only field to uniquely identify the flow.
A SDN network uses SDN-enabled switches/routers and a centralized controller. The controller communicates with switches/routers using a well defined protocol (open flow) to configures them with flows and actions. Take a look at figure-1. All the switches in this network are SDN enabled and controller controls all the switches.
How does controller knows about each flow in the network? There could be multiple ways. An application running on a server can ask controller to configure the specified flow on a given path or an administrator can statically configure all the known flows. In figure-1, an application can instruct controller to configure switch-1, switch-2 and switch-3 to create a path between client-1 and server-1 for e-mail exchange. Similarly, the administrator can statically configure switch-1, switch-2 and switch-4 to forward video data from server-2 to client-1. In these two cases, two flows are configured in switch-1 and switch-2 while one flow in each switch-3 and switch-4. Different action is taken at switch-2 which forward the video flow to switch-4 and e-mail flow to switch-3.
What happens if a switch does not find any flows for a packet? Controller can configure switch to either drop the packet or forward it to the controller. Controller would know how to handle this packet. For example: if client-1 sends out a packet for accessing ftp server in server-3 for which there is no flow configured in switch-1, switch-1 will send the packet to controller. Controller then figures out the optimum way for this flow and then configure the required switches with the flow and action. After this, the packets are switched normally.
Now that we understand what SDN is and how SDN works, I am sure you can see some of the benefits it provides. Let me help you by listing some of the benefits people claim it provides:
- SDN helps in achieving dynamically programmable networks. An application can program the network based on its own requirements. As mentioned in the previous post, a video server or a normal web server can configure two different path between the same client and server for these two services.
- SDN provides one single consistent way of configuring all the network elements. For example, in figure-1, switch-1 and switch-2 is of one vendor while other switches are from another vendor but the controller uses same configuration to configure all the switches. This reduces the overall operational expenses in managing a network.
- SDN helps in making IaaS (Infrastructure as a Service) more efficient.
- Controller has the complete view of the network and an administrator can manage all the switches/routers through one single controller, following benefits are possible:
- New services can be rolled out more efficiently
- A network administrator can plan and manage his network more efficiently and effectively.
- Network elements like switches/routers can be dynamically added/removed in the network without much changes in the network configuration.
- An administrator can manage the network wide policies including filters more efficiently.
SDN is still evolving and it seems to be a great alternative for the traditional networking. But there are few things you need to consider before you decide to use SDN in your network:
- As more intelligence has been added into the controller, controller becomes a single point failure in the network. If controller fails or misbehave, it may affect the whole traffic in the network.
- As a single controller manages all the flows in the network, the network management may become more complex with higher number of flows.
- As a single controller configures the flows in all the switches/routers in the network, there could be scalability issues. Though there are studies that shows a controller can manage millions of flows.
- It is still not clear if there will be lots of applications which would want to manage/configure underline network.
So some people are suggesting that SDN is ready for deployment and couple of vendors are providing complete solution while some people are suggesting that SDN is still evolving and may not be useful for all types of networks. So please do some more research before you take a plunge in SDN world.
If you have deployed SDN, please let me know for what benefits and type of network you have deployed it.