What Software Defined Networking (SDN) is all about?

I have been hearing a lot on SDN for quite a long time.
There are many articles on the web which talks about it but does not adequately explain what IS SDN really. I finally decided to write on SDN from my perspective.
Let’s start with a simple example. We have CISCO Router (I like cisco).

I want to check whether my CISCO Router can ping an IP on the Internet.

To do this I will carry the following steps:
1. telnet or ssh into the router
2. ping an IP address on the internet (

If I have to do this regularly it becomes a boring thing.

What if I can write an Application which can telnet/ssh into my router, then perform a ping and check whether the ping was successful or not?

This is where SDN comes into play. SDN allows you to programmatically configure or run commands on your switches and routers.
I think that the right word for this should have been Programmable Networks (I have seen this on some networking vendor’s website)
To make SDN happen, the network vendors should provide some API or SDK to allow access to their routers and switches. In the case of CISCO, the SDK/API is called onePK.

I can see the following important benefits in using SDN:
Centralization – You can manage your routers and switches from a central point. No need to go into each router or switch.

Abstraction – We don’t need to care whether we are running CISCO, HP or BROCADE. As long as we have the SDK or API, our application is going to talk to them regardless of vendor or make.

Automation – Automation of repetitive tasks like in the example given above.

In the following last 2 sections I will dive deeper into the details and technical architecture of onePK (contents taken from Cisco’s website).

Cisco's One Platform Kit (onePK)

onePK is an element within Cisco's software defined networking (SDN) strategy. onePK is an easy-to-use toolkit for development, automation, rapid service creation, and more.
Build or extend applications from your routers and switches to servers and new business platforms. Automate current services or create new ones on demand, when and where you need them and faster 
than ever. onePK makes your network more powerful and flexible while giving you the control you need. Users also have access to an all-in-one development environment that includes simulated network elements.

Designed for Flexibility 

onePK has the capability to:
·         Integrate with PyCharm, PyDev, Eclipse, IDLE, NetBeans, and more
·         Support commonly used languages, including C, Java, and Python
·         Run on any server or directly on your network elements
·         Use APIs to extend, modify, and tailor your network to your business needs
·         Tie in easily with third-party tools and workflows


Unlimited Possibilities

Use onePK for new application-enablement, service automation, and more. With onePK you can orchestrate and enhance your network elements. You can also:
·         Customize route logic
·         Create flow-based services such as quality of service (QoS)
·         Adapt applications for changing network conditions such as bandwidth
·         Automate workflows spanning multiple devices
·         Empower management applications with new information

Technical Overview

At a high level, the onePK architecture is composed of three major elements:
·         the presentation layer
·         the onePK API infrastructure
·         the communication channel
These elements combine to provide a consistent and adaptable architecture that enables multiple languages and multiple deployment models for applications that work across the network.

Presentation Layer: What the Programmer Sees

The presentation layer consists of the API libraries that programmers can use within their applications. With onePK, application programmers get a universal network programming toolkit. The onePK Libraries are initially available in C, Java, and Python. The libraries were designed with very few dependencies, so it can be easily integrated with existing tools and development requirements.

onePK API Infrastructure: One API for Many Devices

The API Infrastructure provides access to functions that are internal to a router or switch. One of its primary values is that it abstracts underlying differences between operating systems and platforms. For example, if your application uses a onePK function call to read interface statistics, that same function call will work across all Cisco networking software platforms (Cisco IOS® Software, Cisco IOS XR Software, Cisco IOS XE Software, and Cisco NX-OS Software).

Communication Channel: Security and Flexibility

The communication model provides a fast, safe, extensible channel between the application and the network element. (Applications are required to authenticate before being allowed to access the functions of the API Infrastructure layer.)