
Northbound Application Programming Interfaces (APIs) enable a Software-Defined Network controller to communicate With applications in the plane. An SDN is a intelligent network architecture in Which a software controller assumes the
control plane functionality for all network devices.
The SON architecture consists Of three planes: the application plane, the control plane, and the data plane. The application plane consists Of SON the control plane consists Of controllers, and the data plane consists of network devices.
An controller uses two different sets of APIs: one set to communicate with applications and another set to communicate with devices in the data plane. Northbound APIs enable an controller to communicate with applications in the application plane. Applications use northbound APIs to send requests or instructions to the SDN controller, which uses that information to modify and manage network flow. Southbound APIs enable an SDN controller to communicate with devices in the data plane.

The service abstraction layer (SAL) does not link northbound APIs to the SDN controller; it links southbound APIs to the controller. The SAL is a database, or registry, of the services provided by the southbound APIs.
Examples of northbound APIs include Java Open Services Gateway initiative (OSG) and Representational State Transfer (REST). contrast, OpenFIow, OpFIex, NETCONF, and onePK are examples of southbound APIs. OpenFIow, Opfiex, and NETCONF
are standards-based APIs; one PK is a Cisco-proprietary API. OpenFIow uses an imperative SON model in which detailed instructions are sent to the SON controller when a new policy is to be configured; the SON controller manages both the network and
the policies applied to the devices.
OpFlex uses a declarative SDN model in which the instructions that are sent to the controller are not so detailed: the controller allows the devices in the data plane to make more network decisions about how to implement the policy. uses Extensible Markup Language (XML) and Remote Procedure Calls (RPG) to configure network devices. The one PK API uses Java, C, or Python to configure network devices.