In order to realize this new paradigm of communication and interaction, tightly coupled,
bidirectional programmatic interfaces are needed. These interfaces also need to
be readily and rapidly implemented in software so as to encourage their use and ubiquitous
deployment. These interfaces have been commonly referred to as application
friendly. These interfaces also need to be developed by communities of developers in
order to make them robust, secure, and widely used. This will lead to de facto standardization
and ultimately proper standardization. Interfaces need to provide selfdescribing
capabilities so that applications can easily and dynamically learn and understand
the capabilities of a network element without having to be recompiled. The
net effect then will be interfaces that one can safely code to and that are portable across
different controller platforms.
We will describe programmatic interfaces in detail in this chapter, as well as explain how
they can be instrumented in such a way as to facilitate this tightly coupled, bidirectional
117
communications channel in order to form a feedback loop between the controller, the
network devices it controls, and ultimately the applications that need to interact with
both of these.
We should note that since the purpose of this chapter is to provide the reader with a
survey of available technologies, we do not intend to go into great detail explaining each
specific management interface. Instead, we will aim for a slightly higher-level view of
the important pros and cons of any given protocol or approach in an effort to show the
reader how it fits in (or doesn’t) into the SDN model of the world. We will, however,
provide the reader with references for further reading of such details.