Software Defined Networks (SDN) is a new technology with a lot of potential and a healthy dose of hype. The main premise of SDN is moving the intelligence of the network from distributed network nodes to a centralized location to enable programmability and flexibility of configuration through software applications.
Each router in today’s communication networks is capable of making decisions on its own regarding how to forward data packets to their final destination. The router gathers information about available paths to other networks and builds a view of the entire network topology independent from all other routers. This view allows the router to decide along which path a packet should be forwarded to reach its destination according to predetermined criteria. The distributed routing decision mechanism creates resiliency. If the path fails the routers will find another path to deliver packets to their destination with minimal interruption. To be able to provide this level of survivability, each router has to process every received data packet, decide where it should go, and forward it; all while communicating with other routers to maintain up-to-date topology view.
SDN proposes to separate the packet forwarding function from the routing decision function in all network devices, not just routers, and move all control to a central device. This simplifies the design of network devices and reduces their cost. Removing all control from devices also means eliminating the distinction between switches, routers, or firewalls as they all can be combined in one device that forwards (or drops) packets according to instructions received from a central controller. The result is simplified, inexpensive hardware and significant reduction in energy consumption due to eliminating the redundant computation needed in topology discovery.
Advances in general purpose microprocessors makes it possible to use an off-the-shelf server as a central controller; thus eliminating any need for special hardware. The SDN controller offers many functions that are currently difficult to perform with current network management tools. For instance, routing and other configuration policies can be pushed from a central location and changed dynamically as needed.
In virtualized environments where a virtual machine (VM) may move from one physical hardware to another, even across data centers, there is a need to reconfigure the network accordingly to maintain VM connectivity without human intervention. Carriers and infrastructure providers may use the central configuration ability of SDN to create visualized, independent networks to deliver services or rent directly to customers. Organizations, such as universities, may use the technology to run research experiments on the same hardware as production networks without affecting the latter. Some of these abilities exist today using various technologies and standards. SDN brings dramatic simplification to routing functions by centralizing the control. Also, allowing user applications to control routing means that network users can write their own routing protocols to handle data packets in the networks under their control.
The SDN’s potential to turn networking equipment into commodity products, maximize network utilization, and meeting the dynamic demands of cloud environments, has attracted the support of cloud and network service providers such as Deutsche Telekom, Facebook, Google, Microsoft, Verizon, Yahoo, and NTT. Yet, there are many challenges to overcome in order for the technology to be widely adopted. Among these challenges, fault-tolerance must be achieved by replicating the controller and maintaining synchronization among the replicas. Performance bottleneck issues may arise in large networks when all decisions need to be taken by a single controller. Also, vendor support and standardization remains a major challenge in this early stage of the technology development.
SDN can be disruptive because of the fundamental way it changes network design, operation, configuration, and management. The ability to provide X-as-a-Service (XaaS) over virtualized networks may depend on it. However, its widespread adoption will require resolving outstanding issues in areas of performance, scalability, security, and interoperability.