Cisco Logo

Architect & DE Discussions

This post is about the onePK software architecture, and how it allows us to consistently expose network operating system (NOS) features to a wide variety of programming environments for IOS, IOS-XE, IOS-XR and NXOS.

For an overview of onePK in general, and some more context, see my October 2012 post and my slides in Slideshare.

The main elements of the onePK software architecture are illustrated in the diagram below.

The onePK software architecture

The onePK software architecture

The main elements, from top to bottom, are:

Whilst this architectural pattern is very common, the way in which we have implemented it allows us to provide the same functions, in multiple language APIs, across all of our NOSs. Those APIs are implemented on the NOS itself, not by an intermediate EMS/NMS or other “off box” abstraction layer.

Developers can use the same APIs across the whole network, even when the devices in the network are running different NOSs. As the network evolves, this API consistency will be maintained so that different devices, with different NOSs, can be used as appropriate.

When thinking about API design for specific languages, we try to embody the principle of “least surprise”. This means that we aim to provide APIs that match the developer’s perspective and expectations for the language in question. Java developers get packages, classes and methods that (we hope) make sense in the general Java world, whilst C developers get appropriate structs and functions. We will apply the same principle to other languages also.

Whilst all client side APIs sets support the same logical functions, some languages have advantages over others for certain domains. We try to build those advantages in with the APIs and utilities that we create for specific languages. Since the same logical functions are supported in all languages, the developer tools and language capabilities can be chosen on the basis of what makes sense for the developer and the problem at hand.

With this architecture, supporting different languages, development tools and environments on the client side is quite straightforward. The result is a development experience that meets our customers’ needs better.

So, get your build on, in whatever language you like!

Cisco Open Network Environment: onePK, APIs and Controller Technology from Get Your Build On… with Software for the Network & Beyond

In an effort to keep conversations fresh, Cisco Blogs closes comments after 90 days. Please visit the Cisco Blogs hub page for the latest content.


  1. Anything besides java and c planned?

    • Nathan Sowatskey
      Nathan Sowatskey

      Hi Steve

      Both Python and RESTful APIs are very much on our roadmap. We should be hearing more about that at CiscoLive in London at the end of January 2013.

  1. Return to Countries/Regions
  2. Return to Home
  1. All Architect & DE Discussions
  2. All Security
  3. Return to Home