Friday, September 19, 2014

Northbound application development in SDN controllers - An APIs and SDK Perspective

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 ControllersDoes it support Openflow?Does it expose Northbound APIs?Does it share any SDK?Is SDK Open?Language Used for APIs/SDK
HP VAN ControllerYesYesYes. HP SDN DeveloperKitOpenREST and Java
Juniper ContrailNoYesYes. Junos Space SDKOpenREST
Big SwitchYesYesNo NAREST
FloodlightYesYesNo. But, Provides many applications in java modulesNAREST
RyuYesYesNo. But, It provides framework to develop SDN apps.NAPython
IBM Programmable FlowYesYesNoNAREST
NCL - Hinemos and VNCYesYesNoNAJAVA
Cisco APICYesYesNoNAREST
Cisco XNCYesYesYes. Cisco Open Network Environment Platform KitOpenJAVA/REST
Nicira/VmWare NVPYesYesYesOpenREST
Nuage VSCYesYesNoNAREST
Plexxi ControlNoIt has 2 different API: Workload Affinity API, Network Orchestration APINoNAREST
Sanctum's JupiterYesNo informationYesClosedNo information
PLVision kuFlowYesIt is openflow driver for SDN controllers and it is available as library.NoNAPython, C++
Sandvine SDENo, But it gives you PCRF GUI to design servicesNoNANA
Active Broadband Network's BNGYesYes. It provides web services API and message queuesNoNANo information
NetSocket vFlowNoYesNoNANo information
Metaswitch Perimeta SBCNoYesNoNANo information
Italtel SBCNoNoNoNANA







Next table talks about what should SDN SDK contain and whether these SDK contents are available in existing SDN SDKs.


SDK ContentsHP VAN SDKJunos Space SDKCisco XNC OnePK SDK
GUI CLISDN Controller Console which is web based GUI.Yes, provide GUI plugin for Eclipse IDEProvides API set only.
TemplatesYesProvides REST APIs for Config Template ManagementNo
Schema files (WSDL, XSD)Supports XSD schema filesSupports generation of schema (XSD) from DTO definitions using ANT scripts.No
Sample programsYes, it provides some built-in apps: Device Node Manager, Link Discovery, Topology Manager, Topology viewer, Path daemon, Path daignosticsYes. For example, HelloSpace, WorldCities, oogleMashupAppYes. For example, HelloElement, HelloNetwork, SyslogMonitor
Higher order modelsYes. 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 LibrariesYes. 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 ServiceYes. 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 configurationYes. Configuration is done through metatype.xml and maven's pom/xmlYes. This SDK is available as installer and provides various APIs for configuration management.Yes
Emulator/Simulator for test and validationYesSimulators, virtual machine included with the developer environment.No
Quick start and programming guideYes. 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 AgreementsYes. 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/MacYes
AuthenticationYes. 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 restoreYes. 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 folderNoNo
Logging supportYes. 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 CategoriesHP VAN SDKJunos Space SDKCisco XNC OnePK SDK
Network VirtualizationThis is done by the controller itself.YesNo. Not yet supported.
Appliance virtualization YesYesYes with respect to Firewall.
Service Assurance and Service DifferentiationYesYes, it provides policy and QoS management.Yes. It provides services for QoS and policy control.
Cloud-OpsYesYesNo
Legacy ControlNoYesYes
Network provisioningYesYesYes
Network managementYesYesYes
Network SecurityYesYesYes
Network TroubleshootingNoYesYes

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

1 comment:

  1. Hi Tarun,
    Thanks for the detailed analysis. I noticed you had Sanctum's Jupiter in your comparison list so thught I would share with you few more details about the controller. It has a Python based interface called NPL that is extremely programmable . Its a ultra light weight control plane application that can be launched on a variety of OF switches like Arista, Brocade,HP, Mellanox,Extreme Networks, Pronto, Metaswitch and more.

    Hope to see the info added on :)

    Rgds

    ReplyDelete