all interactions with the devices have to go through the
controller. They provide an abstraction layer between the
administrators of the network and network devices.
Network controllers usually expose a northbound REST
API interface for management and integration with
third-party systems and one or several southbound
interfaces through which they connect and manage the
network devices. Typical southbound interfaces are CLI-
based interfaces that use Telnet and SSH, OpenFlow,
SNMP, NETCONF, RESTCONF, and so on. In most
situations, the network controller manages different
network devices running different network operating
systems with different versions and different features; by
abstracting the underlying network capabilities, the
controller exposes only a subset of the network
functions. This minimal loss of network functionality is
an assumed risk when choosing to go the network
controller route for managing a network.
On one side is the controller-based management of
networks supporting a subset of network functions, and
on the other side is direct access to the devices with full
access to all network features. Network administrators
have to choose between these two options, keeping in
mind the requirements of the network and which option
works best for each situation.
There are several other considerations to keep in mind
when integrating controllers into a network. Support for
atomic network configuration is one of them. Atomicity
in the case of network configuration means that either
the intended configuration has been applied to all
network elements without error or, to deal with potential
errors, there is a rollback mechanism in place to ensure
that the partial configuration is removed and the devices
are brought back to the initial state before there is any