Chapter 5. Network Programmability
The concept of network programmability lies at the heart of one of the key tenets of software-defined networks. The concept of programmability can exist in, or be a feature of, a number of network devices and software components—and this is not a new concept, as network management has existed since the beginning of time for networked devices. What differs now is in specifically how those devices—real or virtual—are not only managed, but also interacted with. Regardless of the type of target, the goal is to make it easily programmable and to facilitate a bidirectional channel of communication between it and the other piece of software communicating with it. This forms what we refer to as a tightly coupled feedback loop between these elements. This concept is in fact quite different from the traditional network management paradigm, where the manager and agent communicated in a relatively loose fashion with considerable lag between operations—including cases where essentially no feedback existed.
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, ...