What is an SDN controller?
A Software-Defined Networking (SDN) controller is a central component of SDN architecture. It provides control over the network elements (in the managed domain).
In networking, there is the Management Plane, Control Plane and Data Plane. An SDN controller provides Management Plane and Control Plane functionalities for the network elements in the domain it manages. This means that an SDN controller, based on network information and a set of predefined rules and policies, manages the network elements and configures (“programs”) the Data Plane (i.e. steers the flow of data through the network.
One of the key benefits of using an SDN controller is that it allows more efficient network management - changes in network configuration can be applied from a central location rather than having to manually configure each individual network element. Additionally, an SDN controller can automate certain tasks, such as traffic management and security, which can help reduce the risk of human error and improve the overall reliability of the network.
SDN controllers provide an API (Application Programming Interface), also known as a northbound interface, through which external applications or systems such as orchestration platforms can interact with the network. In such cases, an SDN controller translates the application’s layer requirements (e.g. high-level description of the network configuration) into a configuration specific to the supported network elements.
SDN controllers can manage both physical network devices and software components that execute network functions.
The main functions of an SDN controller include:
- Managing the flow of data in the managed network
- Providing an API for applications and other components (e.g. orchestration platforms) to interact with the network
- Providing visibility into the network, allowing monitoring of network performance and detection of problems
- Automating network management tasks, such as provisioning new network elements and reconfiguring network paths
How do SDN controllers work?
An SDN controller is a logically centralized entity (which also allows for architectures with a federation of multiple controllers, the hierarchical connection of controllers, etc.), typically implemented as a software application running on a server or cluster of servers.
It communicates with various network devices (such as switches and routers) and/or software components (realizing network functions) through its southbound interfaces e.g. an API and/or standardized/proprietary protocols. Examples of protocols include OpenFlow, Open vSwitch (OVS) database, NETCONF, P4RT (P4Runtime - protocol-independent runtime APIs for a P4-defined or P4-described data plane) and XMPP (Juniper Contrail).
Vendor and open-source SDN controllers
On the market, there are both proprietary and open-source SDN controllers. Below are a few examples of each.
Vendors offering SDN controllers:
- Cisco
- Juniper Networks
- VMware
- Nokia
Open-source SDN controller options:
- OpenDaylight
- ONOS (Open Network Operating System)
- Tungsten Fabric (open-source version of Juniper Contrail)
SDN controller benefits
Deployment and integration of an SDN controller into a network may bring a number of benefits:
- Provides a single, unified interface allowing network administrators and external applications (e.g. orchestration platforms) to interact (configure and manage) with the network
- Increases the level of network automation (an SDN controller can automate network management and configuration tasks)
- Optimizes usage of resources (thanks to information covering the whole managed network domain, an SDN controller can optimize packet paths to achieve better network efficiency)
- Increases network resilience (e.g. faster reaction to changes in the network, building alternative paths)
- Possible management of physical network devices and software based network elements