In a software-defined network (SDN) architecture, the northbound application program interfaces (APIs) are used to communicate between the SDN Controller and the services and applications running over the network. SDN Northbound APIs are also used to integrate the SDN Controller with automation stacks, such as Puppet, and CFEngine
The goal is to abstract the inner-workings of the network, so that application developers can 'hook' into the network and make changes to accommodate the needs of the application without having to understand exactly what that means for the network. In a software-defined network (SDN) architecture, southbound application program interfaces (APIs) (or SDN southbound APIs) are used to communicate between the SDN Controller and the switches and routers of the network. They can be open or proprietary. SDN Controllers in a software-defined network (SDN) are the "brain" of the network. It is the application that acts as the control point in the SDN network, manage flow control to the switches/routers 'below' (via southbound APIs) and the applications and business logic 'above' (via northbound APIs) to deploy intelligent networks.
An SDN Controller platform contains a collection of "pluggable" modules that can perform different network tasks. Some of the basic tasks including inventorying what devices are within the network and the capabilities of each, gathering network statistics, etc. Extensions can be inserted that enhance the functionality and support more advanced capabilities, such as running algorithms to perform analytic and orchestrating new rules throughout the network.
Two of the most well-known protocols used by SDN Controllers to communicate with the switches/routers is Open Flow and OVSDB. Others protocols that could be used by an SDN Controller is YANG or NetConf.
Note that Open Flow is used to communicate with the applications and services via Northbound APIs.