I had an opportunity recently to sit in a Cisco onePK lab and it opened my eyes to exactly what Cisco is doing with onePK, why it's going to be so important as Software Defined Networking (SDN) continues to gain traction, and why onePK is different than what anyone else is doing in the industry.

onePK is a key element within Cisco's announced Open Network Environment SDN strategy. onePK is an easy-to-use toolkit for development, automation, rapid service creation and more. It enables you to access the valuable data inside your network via easy-to-use APIs.

Source: www.cisco.com/go/onepk

Since having my own eyes opened, I've been pondering how to explain my new found understanding in a way that others will grasp. In particular to business decision makers (BDMs) and technical decision makers (TDMs). I'm really, really, struggling to come up with a good analogy for BDMs. I'm still working on that one. Surprisingly, I'm also struggling to come up with a sound analogy that will work with the majority of TDMs that I know. Maybe I shouldn't be so surprised at that since all the TDMs I deal with are on the infrastructure side of things (networks, storage, compute, platform) and really don't deal with software. There's a gap there that I somehow need to bridge. I'm still pondering how to successfully do that.

However, there is a slice of the TDM population that I believe I can reach right now. These folks, like myself, have software and network experience. Maybe through open source projects, previous careers, or just mucking about with LAMP stacks in their own lab/home network, they understand programming semantics, APIs, and extending the functionality of third-party software.

I'm going to use a popular open source software package to draw some parallels with what Cisco onePK will soon allow organizations to do to their networks.

Drawing Parallels

The open source software I'm going to draw parallels to is WordPress. In their own words, "WordPress is web software you can use to create a beautiful website or blog". WordPress is the software that powers www.packetmischief.ca. Out of the box, WordPress has specific features, functions, and behaviors that make it what it is (just like every other piece of software has).

WordPress is the software that powers websites just like IOS and NX-OS are the software components that power switches and routers.

onePK is designed for IOS, IOS-XE, NX-OS, and IOS-XR. So as not to give the impression that onePK only works with one particular OS, I'm going to summarize all of those OSes by using the term "NOS" for Network Operating System. Substitute whichever OS you prefer when you see that term throughout this post.

Like WordPress, NOS also has specific features, functions, and behaviors that make it what it is. When you use either piece of software, you deal with those characteristics and accept them for what they are.

Today, with NOS, that's the end of the story. You get what you get and that's all. With WordPress, that's only the beginning of the story and with onePK, it'll only be the beginning of the story with NOS as well.

You see, WordPress has been written to be extendable. There are hooks all throughout the software that allow plugins to augment the features and functions of WordPress or even change WordPress's behavior! Again, in their own words: "Plugins can extend WordPress to do almost anything you can imagine_"._

To me, this right here is the essence of what onePK is: the ability to extended NOS's features and functions or even change its behavior all in ways that make sense to me, my organization, and my customers/users.

Example #1 - Augmenting Features

Let's look at an example of adding features. First, with WordPress.

Notice on the right-hand side of this page how there is a box titled "Popular Posts"? That box does not exist in stock WordPress. It's a feature that WordPress doesn't ship with. However, it's a feature I wanted on my site. By leveraging the open, extendable nature of WordPress, I was able to write some code which integrates with stock WordPress to add a Popular Posts feature to the site. The end result is that the software now conforms more tightly with my specific needs. The value and utility of my website is now increased beyond what it was with the stock software.

Now with NOS I'm going to throw out what might seem like an odd feature but it ties nicely into a future article I'm drafting on onePK. Consider the impact of MTU mismatches in the network: sporadic application hangs or disconnects, difficulty reproducing the issue as reported by users, and very low likelihood of catching the issue with basic reachability tests. It would be fantastic to avoid having to deal with MTU mismatches ever again within the core of the network. Now NOS does not have a native "MTU Checker" feature, but such a feature is possible thanks to onePK. onePK provides the necessary hooks within NOS to enable a software application to check the MTU on both sides of a link and ensure they match up. Discrepancies can be identified immediately, before they cause user impact.

Did you catch what I wrote there? The application could check the MTU on both sides of the link. An application written to onePK isn't isolated to a device-centric viewpoint but can look across the whole network of onePK enabled devices!

Think about the business and technical impact of such a small application as the MTU Checker:

  • NetOps' time and energy troubleshooting MTU mismatches: reduced to zero
  • Service level that infrastructure can deliver to users/customers: increased
  • Impact to user/customer applications and services: decreased
  • Reliability of the infrastructure: increased

The value and utility of the network β€” not of a single router or switch, but of the overall network as a key piece of infrastructure β€” is now increased beyond what it was with the stock NOS software.

What the plugin API is to WordPress is what onePK is to IOS/XE/XR/NX-OS.

Example #2 - Changing Behavior

Ok, on to another example, this time of a behavioral change.

On certain pages on a WordPress site where lists of articles are displayed, the first few words of the article are shown along with the article title. This is called the "excerpt". It's a bit of a teaser of the actual article's content.

By default the excerpt is 55 words long. My personal preference is that a shorter excerpt length is more appropriate. Now, for whatever reason, the length is not a tunable setting β€” I can't go into the WordPress dashboard and change the value "55" to something else. The behavior of this particular WordPress function is fixed.

Enter the plugin subsystem. By writing a brief amount of code that is hooked into WordPress whenever WordPress goes to output an excerpt, I can modify the behavior of WordPress to only show 25 words. Again, just like the previous example, I'm bringing the software more in line with what my requirements are which increases the value of the software to me and allows me to deliver exactly the kind of website/service that I want to deliver.

Here's another NOS example that will tie nicely into a future onePK blog post I'm drafting: modifying the Layer 3 forwarding table.

I want to strongly point out here that onePK is about way more than just modifying forwarding tables: onePK offers network programmability. As Example #1 showed, onePK will allow inspection of many different aspects of the network. I'm using the example of manipulating a forwarding table because it's 1) very much top of mind in the industry right now and 2) it ties into that mystical future article I keep hinting at.

We all know the standard NOS behavior for picking the best path to a destination network: it's based on a measure of "cost" where cost in this context is a purely technical metric such as bandwidth, delay, or hop count. From the business' standpoint, these metrics mean very little, however this behavior is fixed within NOS.

With onePK though, we can exercise hooks within the forward table to apply more business-relevant policies to traffic flow. For example, our policy might say that we need to take into consideration the actual dollar cost (OpEx) of putting bits on one link vs. another link. An application written to onePK could implement this policy by taking knowledge of things like transit cost for each link and perhaps the hours of the day during which the business is the most busy or requires the highest amount of bandwidth and translating these business metrics into actual forwarding table entries in the network. The behavior of the network is now changed to comply with business policy rather than (only) technical policy.

Again, (and again, and again), this is an example of bringing the network more in line with what the business needs in order for the network to deliver services that more tightly align with the business' requirements.

Closing Thoughts

The geek in me is pretty excited by onePK. Having the ability to program the network is going to open up a whole new set of possibilities. I'm no stranger to hacking code to automate tasks in the network or pull telemetry from the network. But, I've always been relegated to SNMP or scraping the output from the CLI. Being able to write software against a standard API is really exciting! No more modifying the script to understand different OS versions/families or dealing with parsing CLI prompts (which is harder than it sounds, believe me!)

The IT professional in me is also pretty excited. Cisco onePK will open up new avenues for IT infrastructure to deliver services to enterprises, service providers, and users. It's exciting to be a part of delivering this first generation of such services to customers.


Disclaimer: The opinions and information expressed in this blog article are my own and not necessarily those of Cisco Systems.