What is the glue that allows the Software Defined Networking (SDN) architecture to function so well? That communication process between the Control and Data planes? It is the Application Programming Interface or API.
What is a classic example of an API in the SDN world? The answer is OpenFlow. Recall from other discussions here at AJSNETWORKING that the OpenFlow specification defines both a protocol between the control and data planes and an API by which the control plane can invoke the OpenFlow protocol.
APIs are implemented by writing function calls in the program. This provides the linkage to the required subroutine for execution. An open or standardized API can ensure the portability of the application code and the vendor independence of the called service.
SDN controllers can be implemented directly on a server or on a virtual server. OpenFlow or some other open API is used to control the switches in the data plane. In addition, controllers use information about capacity and demand obtained from the networking equipment through which the traffic flows.
SDN controllers also expose northbound APIs. As we have discussed here at the blog, this allows developers and their network engineers to deploy a wide range of off-the-shelf and custom-built network applications. Obviously, many of these applications were never before possible before SDN.
As yet there is no standardized northbound API nor a consensus on an open northbound API. A number of vendors offer a REpresentational State Transfer (REST)-based API to provide a programmable interface to their SDN controller.
Also envisioned but not yet defined are horizontal APIs (east/westbound), which would enable communication and cooperation among groups or federations of controllers to synchronize state for high availability.
At the application plane are a variety of applications that interact with SDN controllers. SDN applications are programs that may use an abstract view of the network for their decision-making goals. These applications convey their network requirements and desired network behavior to the SDN controller via a northbound API. Examples of applications are energy-efficient networking, security monitoring, access control, and network management.
Want more information – check out the excellent – Foundations of Modern Networking: SDN, NFV, QoE, IoT, and Cloud