Much has been made of the emergence of Software Defined Networking and the programmable network.  At its core, SDN involves opening up network interfaces in order to make the network programmable and allow for the development of applications.  While some of those applications interact directly with the data plane, determining how individual packets are treated, many applications actually involve what can fundamentally be described as management functionality – automation of workflows, reaction to events, closing of control loops.   A popular example concerns orchestration, in which resources are allocated and state modified so that collectively a service is provided – in many ways resembling a reincarnation of service provisioning in a new context and under a new name.

Of course, management applications and management interfaces have been around for a long time, so what is really new and different this time?  Is SDN simply an exciting new label for a tired old concept? Does SDN obviate the need for traditional management? At the core of these questions are the concepts of programmability and manageability

Both concepts are related, hence they are often confused despite the fact that they are really complementary and address different concerns.  While the lines are blurry, as far as the network is concerned, the aspect that is at SDN’s core is programmability and the desire to develop applications for the network.  Management and manageability, on the other hand, are about the need to operate a network.  Both are important but address different needs.  Programmability is what allows the capabilities of an entity to be extended and modified.  It is an enabler that is of particular concern to application developers, allowing them to add new features and properties which add to the functionality of the entity.  Manageability is what allows an entity to be managed.  It is of particular concern to network operators and administrators, affecting the ease, efficiency, and effectiveness with which a network can be operated, provisioned, administered, and maintained.

The fact that a network or a device can be programmed does not remove the need for it to still be managed.  Some applications may provide for considerable additional embedded management intelligence that make the network smarter and easier to manage, but do not replace that need entirely.  Some interaction with users and management applications will always still be required, even if at some point in the future the network were to become fully autonomic – perhaps the subject of a future blog post.  Programmability also facilitates the development of custom agents which in turn facilitate integration into a wide variety of operations support environments, but the need for such integration to have the network managed still remains.

At the same time, programmability, as provided through SDN, provides exciting new opportunities to increase manageability by facilitating the development of corresponding applications.  There are two aspects that determine manageability: management interfaces (affecting ease of integration and efficiency of management communication patterns) and management intelligence (affecting what and how much outside management functionality is required in the first place).  Both of these aspects stand to benefit tremendously from programmability:

Programmability promises to enable the development of a whole new wave of applications that provide additional management intelligence, such as applications that analyze traffic patterns and fluctuations of operational state to determine the presence of anomalous conditions require operator attention, that may be able to learn such patterns by themselves, take responsive action,  and dynamically adapt their behavior.  Today, the development of such applications is often not feasible or requires heavy centralized system infrastructure.

Likewise, programmability facilitates the development of applications whose purpose is to provide an alternative management interface or management agent.  Why would someone want to implement such a management agent when they already have other interfaces?  There are many reasons, including the desire to implement higher layers of management abstraction closer to the “box”, such a policy-based management, the need for custom integration with a given operations support system infrastructure that requires a specific kind of interface, or the desire to extend an application’s capabilities with application-specific pre-processing that can be delegated to the network.

In summary, while there is some overlap between programmability and manageability, there are also very clear distinctions and ultimately they serve different purposes.  Both have important and complementary roles to play in networks of the future: Programmability enables the development of applications whose purpose it is to make the network easier to manage, and that can be embedded and tightly coupled with the network, whereas traditional management applications tend to be more loosely coupled.  At the same time, programmability by itself does not help network operators who are primarily concerned with running their network, not building applications to run it.  Those operators still require management capabilities that are embedded in the network to perform their task.  They are application users require functionality that helps them perform their operational tasks, not application developers needing infrastructure that helps them develop such applications.

SDN brings many impulses to the area of manageability and network management and opens up exciting new opportunities.  Perhaps we are witnessing the dawn of a new era of manageability that is enabled by SDN: SDM – Software Defined Manageability.  We have much to look forward to in the coming years!