Software-Defined Networking: A Comprehensive Survey

The Internet’s astounding success is based on a principle of distributed control and transport protocols in routers and switches that allow digital packets to move worldwide, yet traditional Internet networks are quite challenging to manage, and features such as automatic reconfiguration and response mechanisms barely exist. High-level network policies can only be configured at the low level, which means policies must get translated into vendor-specific commands. Network environments, moreover, are subject to dynamic faults and load changes. Compounding these problems, existing IP networks are vertically integrated: the control plane that manages network traffic and the data plane that forwards the traffic are packaged into the same networking device, in effect locking down network infrastructure. This hinders innovations, as evidenced by the sluggish transition from IPv4 to IPv6. A new networking paradigm called software-defined networking (SDN) hopes to remove the limitations on existing network infrastructures by dismantling the vertical integration model and separating network control logic away from routers and switches, instead handling it by a centralized logical controller within a network operating system. By means of physical, distributed control planes, a more scalable and reliable solution would be achievable. The separation of control from data planes would be realized through an application programming interface (API) between switches and the SDN controller, the best example of which is called OpenFlow. Depending on the rules of an installed controller application, a programmable switch can behave as a router, switch, firewall, load balancer, and so on. An SDN separates the concerns of network policy definitions, switching hardware implementations, and traffic forwarding. This generates significant flexibility and allows for greater network abstraction, simpler network management, and innovation potential. SDN is gaining industry traction via the Open Networking Foundation, which is promoting standards development, and Google has already deployed SDN in its interconnected data centers worldwide. VMware’s network virtualization platform NSX is another example of SDN in action. Computer network functionality exists on three planes: data, control, and management. The management plane defines the network policy, the control plane enforces it, and the data plane executes it. Traditional IP networks couple the control and data planes, embedding them in the same networking device, in a decentralized fashion. Though this has certainly resulted in good network performance and rapidly increasing line rates and port densities, it has also resulted in rigid configurations that are complex and hard to control. Moreover, existing network management relies on costly proprietary solutions and specialized expertise. SDN takes network architecture in a new direction: the forwarding state in the data plane is managed by a remote control plane that is decoupled from the data plane. An SDN has four ‘‘pillars’’: 1) decoupled control and data planes; 2) flow-based (not destination-based) forwarding decisions (‘‘flow’’ being the set of packet field values acting as a match criterion and a set of actions); 3) control logic is moved to an external entity, called an SDN controller or a network operating system (NOS); 4) programmable network: software applications run on top of the NOS, which handles the interaction with the data plane devices. Logical centralization has many benefits: simpler and less error-prone network policies that are easily modified; A new networking paradigm called software-defined networking (SDN) hopes to remove the limitations on existing network infrastructures.