Software-defined networking (SDN) is an umbrella term encompassing several kinds of network technology aimed at making the network as agile and flexible as the virtualized server and storage infrastructure of the modern data center. The goal of SDN is to allow network engineers and administrators to respond quickly to changing business requirements. In a software-defined network, a network administrator can shape traffic from a centralized control console without having to touch individual switches, and can deliver services to wherever they are needed in the network, without regard to what specific devices a server or other hardware components are connected to. The key technologies for SDN implementation are functional separation, network virtualization and automation through programmability.
Originally, SDN focused solely on separation of the control plane of the network, which makes decisions about how packets should flow through the network from the data plane of the network, which actually moves packets from place to place. When a packet arrives at a switch in the network, rules built into the switch’s proprietary firmware tell the switch where to forward the packet. The switch sends every packet going to the same destination along the same path, and treats all the packets the exact same way. In a classic SDN scenario, rules for packet handling are sent to the switch from a controller, an application running on a server somewhere, and switches (also known as data plane devices) query the controller for guidance as needed, and provide it with information about traffic they are handling. Controllers and switches communicate through a controller’s south bound interface, usually OpenFlow, although other protocols exist.
Where a traditional network would use a specialized appliance such as a firewall or link-load balancer, an SDN deploys an application that uses the controller to manage data plane behavior. Applications talk to the controller though its north-bound interface. As of the end of 2014, there is no formal standard for the application interface of the controller to match OpenFlow as a general south-bound interface. It is likely that the OpenDaylight controller’s northbound application program interface (API) may emerge as a defacto standard over time, given its broad vendor support.