SDN is the one of the emerging networking technology which
has gained lot of popularity in networking domain.
SDN is the software defined networking which is trying to
create/manage network through software. SDN is trying to centralize brain of
network into controller applications (i.e. SDN controllers).
Even SDN makes you virtualize all the network and their networking
functions through Network virtualization and Network function virtualization techniques.
SDN controller, being brain of network, manages the network
switches/routers by sending intelligent rules on them through southbound APIs
and allows vendor-specific/domain-specific/function-specific applications to run
over with SDN controller via northbound APIs.
There are lot many networking vendors who are working on SDN
at fast rate and launching their SDN controller in market.
But, SDN is not getting adopted at fast rate among network
operators, service providers, network application developers, etc. To
accelerate this adoption, vendors of SDN controller are exposing northbound API
set to create development environment among networking community so that more
and more application can be developed over such SDN controller and more
use-cases of SDN can be opened up.
Few vendors have shared their SDN SDK also for rapid development
of applications over their SDN controllers to gain their strong existence and
popularity in SDN world.
In this blog, focus has been on research of SDKs for SDN. Research on which SDN controller vendor share SDK, what SDN SDK should contain what networking use-cases/functions can be achieved by SDN SDK.
Below is the list of SDN controllers which are researched for finding their support for APIs/SDK.
| SDN Controllers | Does it support Openflow? | Does it expose Northbound APIs? | Does it share any SDK? | Is SDK Open? | Language Used for APIs/SDK |
| HP VAN Controller | Yes | Yes | Yes. HP SDN DeveloperKit | Open | REST and Java |
| Juniper Contrail | No | Yes | Yes. Junos Space SDK | Open | REST |
| Big Switch | Yes | Yes | No | NA | REST |
| Floodlight | Yes | Yes | No. But, Provides many applications in java modules | NA | REST |
| Ryu | Yes | Yes | No. But, It provides framework to develop SDN apps. | NA | Python |
| IBM Programmable Flow | Yes | Yes | No | NA | REST |
| NCL - Hinemos and VNC | Yes | Yes | No | NA | JAVA |
| Cisco APIC | Yes | Yes | No | NA | REST |
| Cisco XNC | Yes | Yes | Yes. Cisco Open Network Environment Platform Kit | Open | JAVA/REST |
| Nicira/VmWare NVP | Yes | Yes | Yes | Open | REST |
| Nuage VSC | Yes | Yes | No | NA | REST |
| Plexxi Control | No | It has 2 different API: Workload Affinity API, Network Orchestration API | No | NA | REST |
| Sanctum's Jupiter | Yes | No information | Yes | Closed | No information |
| PLVision kuFlow | Yes | It is openflow driver for SDN controllers and it is available as library. | No | NA | Python, C++ |
| Sandvine SDE | | No, But it gives you PCRF GUI to design services | No | NA | NA |
| Active Broadband Network's BNG | Yes | Yes. It provides web services API and message queues | No | NA | No information |
| NetSocket vFlow | No | Yes | No | NA | No information |
| Metaswitch Perimeta SBC | No | Yes | No | NA | No information |
| Italtel SBC | No | No | No | NA | NA |
|
|
|
|
|
|
Next table talks about what should SDN SDK contain and whether these SDK contents are available in existing SDN SDKs.
| SDK Contents | HP VAN SDK | Junos Space SDK | Cisco XNC OnePK SDK |
| GUI CLI | SDN Controller Console which is web based GUI. | Yes, provide GUI plugin for Eclipse IDE | Provides API set only. |
| Templates | Yes | Provides REST APIs for Config Template Management | No |
| Schema files (WSDL, XSD) | Supports XSD schema files | Supports generation of schema (XSD) from DTO definitions using ANT scripts. | No |
| Sample programs | Yes, it provides some built-in apps: Device Node Manager, Link Discovery, Topology Manager, Topology viewer, Path daemon, Path daignostics | Yes. For example, HelloSpace, WorldCities, oogleMashupApp | Yes. For example, HelloElement, HelloNetwork, SyslogMonitor |
| Higher order models | Yes. SDK provides models and works on MVC (Model-view-controller) architecture to develop applications. | Supports 3 application models: 1) Complete Junos Space Application. This application model contains all 3: UI + web services + business logic. 2) Web Service Junos Space Application. This application model contains: web services + business logic. 3) UI Only Junos Space Application. This application model contains only: UI app. Business logic is realized by EJB packages (i.e. server side components). | No |
| API Libraries | Yes. The Controller REST API is distributed across 3 distinct namespaces: (1) core (/sdn/v2.0), (2) openflow (/sdn/v2.0/of), (3) network services (/sdn/v2.0/net). Each namespace has its own JSON schema. (1) Core namespace: The core APIs provide general manageability of the controller, such as configuration, health monitoring, teaming, alerts, audit logs, support logs, etc. (2) Openflow namespace: The openflow APIs provide Openflow functionalities of the controller, including both read-only operations (such as port statistics) and modification operations (such as flowmod). The same REST API can be used on both Openflow 1.0 and Openflow 1.3 devices. However, only certain APIs (such as meters) are available when speaking to an Openflow 1.3 device, because the functionality is only available for Openflow 1.3 devices. (3) Network services namespace: The network services APIs provide basic network knowledge such as network topology information and network diagnostics. | Yes. It provides REST APIs for below services: Application Management, Audit Log Management, Configuration File Management, Configuration Management, Configuration Template Management, Debug Log Management, Device Image Management, Device Management, Fault and Performance, Info Service, Inventory Management, Job Management, Script Management, Tag Management, User Management, Well Known Service | Yes. It has various services: 1) Policy service set: allows applications to configure several features of the forwarding path, including filtering, ACLs, and QoS. 2) Routing service set: provides read access to the routing information base (RIB) and enables a developer to safely modify the routing/switching logic of the network element. 3) Element service set: consists of APIs to get and set network device and interface properties, state, and statistics. 4) discovery service set provides a mechanism for an application to discover remote or local network elements, network topology, and the network elements providing onePK services. |
| Binaries: installation and configuration | Yes. Configuration is done through metatype.xml and maven's pom/xml | Yes. This SDK is available as installer and provides various APIs for configuration management. | Yes |
| Emulator/Simulator for test and validation | Yes | Simulators, virtual machine included with the developer environment. | No |
| Quick start and programming guide | Yes. It provides following guides: HP VAN SDN Controller License Registration and Activation Guide, HP VAN SDN Controller Installation Guide, HP VAN SDN Controller Administrator Guide, HP VAN SDN Controller Programmer's Guide, HP VAN SDN Controller REST APIs, HP VAN SDN Controller Release Notes, HP VAN SDN Controller Open Source and Third-Party Software License Agreements | Yes. It provides: Junos Space SDK Release Notes, Junos Space API Reference Guide, Junos Space Application Developer Guide, Device Simulator Guide, Junos Space SDK Installation Guide for Windows/Linux/Mac | Yes |
| Authentication | Yes. HP VAN SDN controller REST APIs are secured via token based authentication scheme. Openstack keystone is used to provide token based authentication. | It is not at API level. It is at user level. Because Junos Space implements a single sign-on authentication scheme, the user name and password credentials you use to log into Junos Space also validate your use of OpenNMS. No separate authentication is needed. | Yes. It uses TLS protocol to authenticate application before accessing cisco network element and also need Cisco network element to enable OnePK and TLS before any communication with apps. |
| Backup and restore | Yes. A controller backup takes a snapshot of the controller state, and includes the following in a single file: Controller databases, License compliance history and metrics log data, In a teaming environment, the teaming configuration, User repository folder (for user-installed applications), Controller configuration folder | No | No |
| Logging support | Yes. Audit log and support logs are provided. | Yes. It provides REST APIs for audit and debug log mangement. | Yes |
Next table talks about what should be use-cases which can be achieved using SDN SDK and whether these networking functions support is available in existing SDN SDKs.
| SDK Categories | HP VAN SDK | Junos Space SDK | Cisco XNC OnePK SDK |
| Network Virtualization | This is done by the controller itself. | Yes | No. Not yet supported. |
| Appliance virtualization | Yes | Yes | Yes with respect to Firewall. |
| Service Assurance and Service Differentiation | Yes | Yes, it provides policy and QoS management. | Yes. It provides services for QoS and policy control. |
| Cloud-Ops | Yes | Yes | No |
| Legacy Control | No | Yes | Yes |
| Network provisioning | Yes | Yes | Yes |
| Network management | Yes | Yes | Yes |
| Network Security | Yes | Yes | Yes |
| Network Troubleshooting | No | Yes | Yes |
This research over SDK for SDN may help in choosing available SDN SDK and it may also provide pointers to start development for any SDN SDK from the scratch.
References
5998-4920_HP_VAN_SDN_Controller_Programming_Guide.pdf
5998-4919_HP_VAN_SDN_Controller_Admin_Guide.pdf
MTOSI ADAPTER USING JUNOS SPACE SDK PDF
Junos_Space_SDK_13.1_Release_Notes.pdf
Junos_Space_SDK_13.1_Release_Notes.pdf
http://www.juniper.net/techpubs/en_US/junos-space-sdk/13.1/apiref/com.juniper.junos_space.sdk.help/Services.html
http://developer.juniper.net/shared/jdn/html/browser-help-13.3/com.juniper.junos_space.sdk.help/html/guides/appdevguide/websvcsproj.html
http://www.juniper.net/techpubs/en_US/junos-space-sdk/13.1/apiref/com.juniper.junos_space.sdk.help/Services.html
Junos_Space_SDK_13.1_Release_Notes.pdf
MTOSI ADAPTER USING JUNOS SPACE SDK PDF
Junos_Space_SDK_13.1_Release_Notes.pdf
Junos Space Virtual Control app is for managing virtual network.
JunosSpaceSDK_DataSheet.pdf
https://juniper.mwnewsroom.com/manual-releases/2009/Juniper-Launches-Open-Software-Platform-to-Acceler
http://trinetprimasolusi.blogspot.in/2011/01/junos-sdk-enables-developers-to.html
http://www.juniper.net/us/en/local/pdf/datasheets/1000297-en.pdf
https://communities.cisco.com/docs/DOC-53411#jive_content_id_Is_there_an_onePK_plugin_for_OpenDaylight_
https://communities.cisco.com/docs/DOC-53411#jive_content_id_Is_there_an_onePK_plugin_for_OpenDaylight_
https://communities.cisco.com/community/developer/networking/cisco-one/onepk/blog/2014/05/15/solving-a-network-securityusability-paradox-with-cisco-onepk--ben-story
http://www.data.proidea.org.pl/plnog/11edycja/PLNOG_11_Day_2/Track_1/Krzysztof_Konkowski_Przemek_Pisarek.pdf