Project Proposal: SDN-App SDK May XX th 2015 Presented by: Rajani Srivastava Sumit Kapoor
SDN-App SDK SDN-App for OpenDaylight: Current approach Current Approach What are we missing? SDN Application (SDN-App) being implemented leveraging OpenDaylight NB API s Business logic being implemented across SDN-Apps Interfaces/adaptors being implemented by SDN-Apps to inter-work with 3 rd party products/tools App developers write independent database CRUD services Silo operations of SDN-Apps Recommended framework as guideline to all SDN-Apps Reusability interfaces and database services Audit management for the SDN-Apps Validation suite for SDN-Apps Extensible to add-on Abstract APIs incorporating reusable business logic A SDN-App Software Development Kit (SDK) that provides a base reference for all the above 2
SDN-App SDK SDN-App for OpenDaylight: Approach queries? Category Users Developer Operator Security Current working view Any recommended framework/modelling technique to be used? Do I need to write own interface to inter-work with 3 rd party products/tools (possible duplication across SDN-Apps) Are there any abstract APIs available for application development? Any standardized approach to leverage database (if applicable)? Can my SDN-App co-exist with other SDN-Apps Are there SDN-App management & audit tools available? How does SDN-Apps cater to - Loss of service due to rules confliction What are by Backup and Recovery procedures for a SDN-App? How do I deploy this SDN-App in a live environment? Are these SDN Apps certified for OpenDaylight deployment? How to verify licensing alignment of these SDN-App? 3
SDN-App SDK Proposing SDN-App SDK for OpenDaylight An OpenDaylight SDN-App Software Development Kit 01 A reference platform that provides guidelines for a SDN-App development - framework, modelling techniques 02 Enables OpenDaylight SDN-App developers to collaborate (reuse, enhance, add-on) existing interfaces/adaptors/database services across SDN Apps 03 A common platform to validate SDN-Apps being implemented/deployed on OpenDaylight 04 A framework to enable application management start / stop / audit SDN-Apps being deployed on OpenDaylight 4
Primary Controller SDN-App SDK SDK Architecture (coverage) - Beryllium SDK APPs Prioritization of Mice Flows Application 2 Application 3 Application N SDK APIs and Tools SDK Framework 3rd Party Services IF-NMS Keeper Audit Application Management Start Stop Build DevOps tools Installation & Deployment Database Services CRUD IF-OSS IF-DPI Alerts Logging Backup Restore CLI Sample Code Sample code - Services Guidelines and Modelling Data Modelling YANG / WSDL / XSD Northbound API Project proposal for Beryllium-Release 5
Primary Controller SDN-App SDK SDK Architecture (coverage) - Boron SDK APPs Prioritization of Mice Flows Application 2 Application 3 Application N SDK APIs and Tools SDK Framework 3rd Party Services IF-NMS IF-OSS IF-DPI Keeper Audit Alerts Logging Application Management Start Stop Backup Restore CLI High Order Services Abstract API #1 Abstract API #1 NEMO API leverage Build DevOps tools Installation & Deployment Sample Code Sample code - Services Guidelines and Modelling Authentication Tokenization Certificates Validation Test Suite SDN App V&V Database Services CRUD Data Modelling YANG / WSDL / XSD Northbound API Beryllium-Release Boron-Release (wish list) 6
SDN-App SDK Functional Overview (coverage) Beryllium (1/2) SDK Feature Leveraging the SDK for SDN Application development Data Modelling 1. Yang generic and abstracted model for SDN App implementation 2. Defines 3 rd party tool type (DPI, monitoring, application suite) 3. Defines Data format (-Value List) for 3 rd party tool/suite integration 4. Defines Database connectivity (Cassandra, Mongo DB), database schemas 5. Enables defining Application specific data to be used by the SDN App 3rd Party Services 1. Listener APIs for modeled information from east-west interfaced 3 rd party tools (DPI, monitoring tools, Lync) 2. Leverage SDK YANG model to defined the tool type and related information from interfaced tools 3. Leverage SDK Listener APIs to retrieve modelled information from east-west interfaced tools Database Services 1. Leverage SDK YANG model enables creation of database schema for the data modelled object 2. Defined SDK YANG model enables inter-working with different database types (Cassandra, MongoDB) 3. Leverage SDK Database CRUD operations enables SDN App to use these database services 7
SDN-App SDK Functional Overview (coverage) Beryllium (2/2) SDK Feature Leveraging the SDK for SDN Application development Application Management 1. SDK Application Management Enables Keeper and OAM services for the SDN App 2. SDK OAM Services APIs enables SDN App to include Start, Stop, Backup/Restore capability 3. SDK CLI APIs enables extending OAM services via CLI Keeper 1. SDK Keeper APIs enables SDN App to include Audit, Alerts and Logging capability 2. Extend APIs to provide audit/monitoring of the SDN-App by other applications Build and Deploy 1. Follows OpenDaylight development (SONAR, Junit etc.) and build (Jenkings etc.) processes 2. SDN-App will also follow the OpenDaylight deployment approach (Karaf) Sample Code 1. As part of the SDN-App use case implemented, sample code for leveraging the SDK services to be available 2. Interface specifications/sdk User Guide to be available to enable leveraging the SDN-App SDK 8
Lifecycle of SDN-App development leveraging SDK 1 2 3 SDN-App SDK Developing an SDN App using the SDK (Sample) Prioritization of Mice Flows (1/4) SDN App developer Define model pom.xml for SDN-App Write a MICE- APP.YANG for SDN-App Write a MICE- APP- IMPL.YANG for SDN-App 1. <Sample> <project > <modelversion>4.0.0</modelversion> <groupid>org.sdk.apps</groupid> <artifactid>mice-app-parent</artifactid> <packaging>pom</packaging> </project> 2. <Sample> module mice-app{ container mice { grouping app-specific-params { leaf user-type { type String; } leaf l7-app-name { type string; } leaf priority { type int32; } } grouping dpi-params { leaf src-address { type String;} leaf dest-address { type string; } leaf l7-app-name { type string; } } grouping sflow-params { leaf threshold { type String; } } grouping node-info { leaf node-id { type String; } leaf queue { type string; } } rpc get-app-data{ input{ uses appl-specific-params;.. 3. <Sample> OpenDaylight SDN-App SDK //These are the services that will be provided by the sdk so any app that need to do crud operation will use these services module mice-app-impl{ container db-crud { uses config:service-ref { refine type { mandatory true; config:required-identity sdk:db-crud-agent; }} //any app that need to get some parameters from 3rd party tools //for sample we are providing two services for getting data from sflow and dpi container sflow-info { uses config:service-ref { refine type { mandatory true; config:required-identity sdk:3rd-party-sfowinfo-agent; }} container dpi-info { uses config:service-ref { refine type { mandatory true; config:required-identity sdk:3rd-party-dpi-infoagent; 9
Lifecycle of SDN-App development leveraging SDK SDN-App SDK Developing an SDN App using the SDK (Sample) Prioritization of Mice Flows (2/4) SDN App developer 4. <Sample> OpenDaylight SDN-App SDK 4 Additional implementation for Audit services 5 Update POM.XML //These are the services that will be provided by the sdk so any app can do operation leveraging these services module mice-app-impl{ continued }}// app that need logs and audit services container keeper { uses config:service-ref { refine type { mandatory true; config:required-identity sdk:keeperagent; }}// app status and monitoring container app-manager { uses config:service-ref { refine type { mandatory true; config:required-identity sdk:appmanager-agent; }} 5. <Sample> <dependencies> <dependency> <groupid>org.opendaylight.yangtools</groupid> <artifactid>maven-sal-api-gen-plugin</artifactid> </dependency <dependency> <groupid>org.opendaylight.yangtools</groupid> <artifactid>yang-binding</artifactid> </dependency> <dependency> <groupid>org.opendaylight.yangtools</groupid> <artifactid>yang-common</artifactid> </dependency> <dependency> <groupid>org.opendaylight.yangtools</groupid> <artifactid>yang-jxm-generator-plugin</artifactid> </dependency> </dependencies> 10
Lifecycle of SDN-App development leveraging SDK 6 7 SDN-App SDK Developing an SDN App using the SDK (Sample) Prioritization of Mice Flows (3/4) SDN App developer Implementing the business logic Implement listener APIs 6. <Sample> Doing mvn clean install will create a skeleton for the application. Then the app developer need to implement the interfaces created by yang and can apply business logic. public class MiceAppManager implements interfacescreatedbyyang, SDKServiceA, SDKServiceB... { public docrud(usertype,l7app, priority) { //save the configuration recieved as input in a database //retrieve the data from database } public dokeeper(usertype){ // if user type is undefined alert.post("critical..."); } 7. <Sample> OpenDaylight SDN-App SDK For getting the data from sflow and dpi, we need to create listeners API that will listen to the changes once sflow and dpi will be triggered public class MiceFlow implements SflowParam, DPIParams{ sflow.listener(sflowparams){ //send the sflow params for business logic once received } dpi.listener(dpiparams) { //send the dpi params for business logic once received } } public getappdata(usertype,l7app, priority, dpiparams, sflowparams) { // Based on the inputs received, apply the logic and set the priority of flows calltonbapis();}} 11
Lifecycle of SDN-App development leveraging SDK SDN-App SDK Developing an SDN App using the SDK (Sample) Prioritization of Mice Flows (4/4) SDN App developer OpenDaylight SDN-App SDK 8 CLI & Application Management 8. <Sample> Installation and Deployment using CLI: Installing the app will create the DB schema from model object Will move the snapshot or jar to target directory Will run and load classes Starting the application: App will register to 3rd party notifications Make the DB connection stop 12
Release Plan SDN-App SDK Milestone Offset 0 date Deliverable M1 Release Plan Candidate Release Plan M2 Release Plan Formal release plan Data Model, Database & 3 rd Party Services Setup SDK Framework and build SDK project. Implement Data modelling approach, Database and 3 rd party tools API services M3 Audit-Keeper and Listener Service Implement Keeper, Audit SDK Services. Implement CLI support for Keeper services Implement SDK Listener Services for modeled information M4 Use-Case/Sample code Implement use-case of Prioritization of Mice flows using SDK. Build and Deploy on ODL M5 Code Freeze SDN SDK-App code freeze. RC0 Bug Fixes Bug fixes for M2 and M3 SDK User Guide User Guide for SDN-App SDK RC1 Bug Fixes Bug fixes for M4 RC2 Release Review Release Notes and documentation Bug Fixes Bug fixes for M5 Formal Beryllium release 13
Thanks
SDN-App SDK SDK Framework (an overview) Exposed API Model Approach Listener Services Service APIs Database CRUD Application Management Keeper Higher Order / NEMOServices Validation Suite Authentication Build and Deploy Northbound API Model API YANG Service implementation Keeper & OAM Services Start/Stop Backup/Restore Audit Alert Uses Listener to 3rd Party suite Implementation 3 rd Party plugin 1 Implements 3 rd Party suite API 3 rd Party plugin 2 DB Access API Implementation 3 rd Party plugin 3 DAO Client Beryllium-Release Boron-Release (wish list) 15 To 3 rd party tools (ex. DPI, Monitoring tools, Lync) Database (ex. Cassandra, MongoDB)