An Object-Oriented data model will be critical to SDN.
Why is an Object-Oriented Data Model Important?
I’ve started to learn about a variety of SDN APIs. Cisco’s ACI (Application Centric Infrastructure) was the starting point. One of the first documents I found is Network Programmability with Cisco Application Centric Infrastructure. At least ACI, and I assume the other SDN developments, is using an object-oriented data model for network configuration. This makes a lot of sense.
Consider a network as the top object. It is composed of various hardware elements (routers, switches, and firewalls, etc.) and software functions (network protocols, filters, etc.). Each of these elements is composed of sub-elements. In the case of hardware, there are modules and interfaces. Routing protocols have peers or even multiple instances of routing protocols. Controlling and configuring the network based on these objects makes a lot of sense.
The above document also talks about the Management Information Tree (MIT). Remember the SNMP MIB (Management Information Base)? Well, the MIT is the same thing, only applied to ACI. It is a tree structure, just like the SNMP MIB. This guarantees that each object appears only once and that there is a unique name for accessing that object. The MIT name for each object is used by the REST (Representational State Transfer) API, with either XML or JSON encoding. [Note: XML and JSON use very similar representations of objects and supporting both makes a lot of sense.] I certainly hope that the teams that are working on the data model for QoS make it simpler than the Class-Based-QOS MIB that we had with SNMP.
It’s Déjà vu All Over Again
Seeing the object-oriented data model brought back memories of thinking about network management many years ago. I had a revelation, as I’m sure many other NMS developers have had, that networks should be represented by an object-oriented data model. The hierarchy of elements within a network just feel like that model would be best. I never had the opportunity to explore the idea any further.
I think that using an object-oriented data model will help us create new abstractions that simplify how we think about networks. We network folk are going to have to start learning about XML, JSON, object-oriented data models, and object-oriented programming. This will allow us to better communicate with software developers who are going to be building a lot of the future SDN control systems.