January 2014 Thomas D. Nadeau

Slides:



Advertisements
Similar presentations
November 2013 Jan Medved, Reinaldo Penno
Advertisements

Project Proposal Anton Tkacik, Lukas Sedlak
Proposal: Model-Driven SAL for the OpenDaylight Controller
Web Service Ahmed Gamal Ahmed Nile University Bioinformatics Group
A Brief Introduction to SDN and OpenDaylight
OpenDaylight Overview for Developers David Meyer Chair, OpenDaylight Technical Steering Committee OpenDaylight | ONS Developer Breakout.
Device Driver Framework Discussion
OpenDaylight: An Open Source SDN for Your OpenStack Cloud Stephan Baucke, Ericsson Kyle Mestery, Cisco Anees Shaikh, IBM Chris Wright,
Hydrogen Helium Lithium
Slide title 70 pt CAPITALS Slide subtitle minimum 30 pt Vpn service Ericsson.
Time Series Data Repository (TSDR)
Created by Jan Medved BGP/PCEP update December 2013 Robert Varga.
Guest Presentation Template ONF NBI Leadership Roundtable November 19, 2013 Instructions: Thank you for your willingness, on admittedly short notice, to.
Device Driver Framework Project October 2014.
OpenDaylight Architecture ONF Member Work Day February 12 th, 2015 Colin TSC Chair, OpenDaylight Principal Engineer, Brocade.
ODL Release Vehicles. Base Network Service Functions Management GUI/CLI Controller Platform Southbound Interfaces & Protocol Plugins OpenDaylight APIs.
Gap Analysis of Simplified Use of Policy Abstractions (SUPA) Presenter: Jun Bi draft-bi-supa-gap-analysis-02 IETF 92 SUPA BoF Dallas, TX March 23, 2015.
SDN Controller Requirement draft-gu-sdnrg-sdn-controller-requirement-00 Rong Gu (Presenter) Chen Li China Mobile.
©2015 Extreme Networks, Inc. All rights reserved. Software Defined Networking (SDN) v2.0 Mikael Holmberg Senior Global Consulting Engineer
Exploring OpenDaylight
NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS INTERDEPARTMENTAL GRADUATE PROGRAM IN MANAGEMENT AND ECONOMICS OF TELECOMMUNICATION NETWORKS Master Thesis.
Helium Hydrogen. AAA: Authentication, Authorization & Accounting AuthN: Authentication BGP: Border Gateway Protocol COPS: Common Open Policy Service DLUX:
NOV 20, 2014 Abi Varghese Tiju John Mahesh Govind
1 SDN Problem Statement and Scenery draft-nadeau-sdn-problem-statement-01 Thomas D. Nadeau IETF-82.
LISP, SDN, and OpenDaylight
Interoperability is Key to Accelerating SDN Adoption Neela Jacques Executive Director OpenDaylight Projectt.
Basic Operations Guide
Ed Warnicke – Note: Read with animations
ONF Configuration and Management WG Jürgen Quittek
OpenDaylight Introduction and Overview David Meyer SP CTO and Chief Scientist
Model-based Programmable Networks
OpenDaylight project introduction An open source project under the Linux Foundation with the goal of furthering the adoption and innovation of Software.
OpenDaylight: Introduction, Lithium and Beyond Colin Dixon Technical Steering Committee Chair, OpenDaylight Senior Principal Engineer, Brocade Some content.
Introduction of Speaker: Claudia 1.
Guest Presentation Template ONF NBI Leadership Roundtable November 19, 2013 Instructions: Thank you for your willingness, on admittedly short notice, to.
OpenDaylight: Introduction, Lithium and Beyond
1 © Cable Television Laboratories, Inc Do not share this material with anyone other than CableLabs Members, and vendors under CableLabs NDA if applicable.
WELCOME TO THE Donald Hunter Cisco.
1 SDN Framework draft-nadeau-sdn-framework-statement-01 Thomas D. Nadeau Ping Pan IETF-82.
December 30, 2015 Richard Chien Marko Lai Jason Yuan
Controller spin-off proposals
Created by Jan Medved I2RS Related/Relevant Yang Models Currently in Use March 2014 Robert Varga, Anton Tkacik, Jan Medved.
IRS Use Case & Requirements Shane Amante Level 3 Communications, Inc. (Speaking on behalf of several Use Case and Requirement I-D’s co-authors)
Azher Mughal / Beraldo Leal Programming OpenFlow Flows for Scientific Profit 1 Azher Mughal / Beraldo Leal SuperComputing 2015.
Clustering in OpenDaylight
Time Series Data Repository #ODSummit - The Generic, Extensible, and Elastic Data Repository in OpenDaylight for Advanced Analytics.
Test and Performance Integration Group.
Author: Maros Marsalek (Honeycomb PTL)
Atrium Router Project Proposal Subhas Mondal, Manoj Nair, Subhash Singh.
OpenDaylight Hydrogen Release Sept 2, 2013.
Exploring OpenDaylight Matt Younkins
1 Peer Mount Eric Voit Alexander Clemm 5-Nov-2015.
1 Needing an extensible Mount syntax across Schema, Alias, & Peers IETF 95 Eric Voit, Alex Clemm April 4 th 2016.
Luis Gomez, Principal SW Test Engineer, Brocade
SDN-O LCM for Mercury Release Key Points and Overview
SDN controllers App Network elements has two components: OpenFlow client, forwarding hardware with flow tables. The SDN controller must implement the network.
Orchestration and Controller Architecture Alignment Vimal Begwani AT&T
Overlay Network Engine (ONE)
Orchestration and Controller Alignment for ONAP Release 1
LISP Flow Mapping Service
Programmable Overlays with VPP
IP/MPLS Backbone Transition to SDN: OpenDaylight Advisory Board
OpenDaylight BGP Use-Cases
OPEN-O Modeling Directions (DRAFT 0)
Time Series Data Repository
ONOS Drake Release September 2015.
Indigo Doyoung Lee Dept. of CSE, POSTECH
ONOS Falcon Release Bill Snow.
YANG Mount draft-clemm-netmod-mount IETF 98 Chicago, 30 March 2017
An Operational View of OpenDaylight
Presentation transcript:

January 2014 Thomas D. Nadeau OpenDaylight January 2014 Thomas D. Nadeau

What is OpenDaylight An OpenSource Project to build an ecosystem of OpenSource SDN software Multi-project Multi-vendor #3 on CIO Magazine’s “Top 10 Software Defined Networking Startups” 2

OpenDaylight Scope Scope:  Projects chosen by TSC are limited to the following areas: The OpenDaylight controller Software for forwarding elements Southbound plugins to enable the controller to speak to the OpenDaylight supplied and other network elements Northbound plugins to expose interfaces to those writing applications to the controller Network services and applications intended to run on top of the controller, integration between the controller and other elements, and Support projects such as tools, infrastructure, or testing. Plugins for inter-controller communication

Who is OpenDaylight Project? Platinum Gold Silver

OpenDaylight Project Goals Code: To create a robust, extensible, open source code base that covers the major common components required to build an SDN solution Acceptance: To get broad industry acceptance amongst vendors and users Community: To have a thriving and growing technical community contributing to the code base, using the code in commercial products, and adding value above, below and around.

ODL “Hydrogen” Release Plan 6

Projects in the Hydrogen Release Controller VTN OpenDove Affinity Management Service LISP Mapping Service Yang Tools Defense4All BGP-LS/PCEP OpenStack Plugin OpenFlow Protocol OpenFlow SB Plugin OVSDB SNMP4SDN GUI Integration Testing 7

OpenDaylight Controller Architecture

OpenFlow in Open Daylight The OpenDaylight OpenFlow plugin will provide: Abstraction of OpenFlow networks to the MD-SAL Interim support for Hard-SAL developed functions Support for OpenFlow 1.0 and 1.3.1 in Hydrogen The OpenFlow projects will additionally: Develop network functions for 1.3.1 network models Expose 1.3.1 OpenFlow capabilities through the ODL NBI Follow the ONF OpenFlow release cycle Preliminary plan to support OF 1.5 in Helium

OpenFlow Plugin Architecture

Moving to Model-Driven SAL Applications Northbound APIs (Generated & Handcrafted) Network Service Plugin Platform Service Plugin Transformer/ Adapter Internal Plugin Java & REST SAL APIs (Generated) Network Abstraction Layer … Topology NE NE NE Tunnels System Flows … Nodes Links Table Table … Table … Config Stats Config Stats Table Table … … Paths Flow Flow Flow Flow Flow Flow Java SAL APIs (Generated) Netconf OF-Config/OVSDB OF x.y PCEP … BGP-LS Network Elements

Moving to Model-Driven SAL: The Software Engineer’s View Network Applications Netconf NB APIs (Generated & Handcrafted) Controller (Container Instance) … REST CONF Network Service Platform Service Internal Plugin SB Protocol OfConfig OVSDB OF x.y FCAPS Java SAL APIs (Generated) SAL Consumer Producer

Moving to Model-Driven SAL: Add Clustering Network Applications Netconf NB APIs (Generated & Handcrafted) Controller (Container Instance) … REST CONF Network Service Platform Service Internal Plugin SB Protocol OfConfig OVSDB OF x.y FCAPS Java SAL APIs (Generated) SAL Consumer Producer Data Store kv-store, SQL, ... Message Bus AMQP, 0-MQ... … Container instance Container Instance

Demo: RPC Request Routing Module sal-flow { namespace "urn:opendaylight:flow:service"; prefix flow; import yang-ext {prefix ext;} import opendaylight-inventory {prefix inv;} import ietf-inet-types {prefix inet;} import opendaylight-flow-types {prefix types;} typedef flow-table-ref { type instance-identifier; } grouping node-flow { leaf node { ext:context-reference "inv:node-context"; type inv:node-ref; leaf flow-table { type flow-table-ref; uses types:flow; grouping flow-update { container original-flow { container updated-flow { rpc add-flow { input { uses node-flow; }     rpc remove-flow { ... } rpc update-flow { ... } ... API: salFlowService add-flow(AddFlowInput) remove-flow(RemoveFlowInput) update-flow(ApdateflowInput) ... Yang Tools ConsumerService TestFlowService

Demo: RPC Request Routing Controller (Container Instance) Consumer TestFlowService (“FlowService1”) TestFlowService (“FlowService2”) salFlowService API Network Nodes Routing Table: Node[key=foo:node:1] add-flow remove-flow ... update-fow Node[key=foo:node:2] add-flow remove-flow ... update-fow Node [key=foo:node:1] Node [key=foo:node:2] 1. Create Deploy Providers and Consumer 2. Register “FlowService1” as the provider for the ‘salFlowService’ API 3. Register “FlowService2” as the provider for the ‘salFlowService’ API 4. Register “Consumer” as the consumer for the ‘salFlowService’ API 5. Register path /Nodes/Node[key=foo:node:1] for “FlowService1” 6. Register path /Nodes/Node[key=foo:node:2] for “FlowService2”

Demo: RPC Request Routing Controller (Container Instance) Consumer TestFlowService (“FlowService1”) TestFlowService (“FlowService2”) salFlowService API Network Nodes Node[key=foo:node:1] add-flow remove-flow ... update-fow Routing Table: Node[key=foo:node:2] add-flow remove-flow ... update-fow Node [key=foo:node:1] Node [key=foo:node:2] 1. Consumer invokes ‘add-flow’ with node id ‘foo:node:1” 2. Consumer invokes ‘add-flow’ with node id ‘foo:node:2”

Demo: RPC Request Routing Controller (Container Instance) Consumer TestFlowService (“FlowService1”) TestFlowService (“FlowService2”) salFlowService API Network Nodes Node[key=foo:node:1] add-flow remove-flow ... update-fow Routing Table: Node[key=foo:node:2] add-flow remove-flow ... update-fow Node [key=foo:node:1] Node [key=foo:node:2] 1. Consumer invokes ‘add-flow’ with node id ‘foo:node:1”

Demo: Remote Request Routing Controller (Container Instance) Controller (Container Instance) RPC Client RpcService PingAPI Ping API Message Bus Network Network Nodes Nodes Routing Table: Routing Table: Node [key=foo:node:1] Node[key=foo:node:2] add-flow remove-flow ... update-fow Node [key=foo:node:1] Node[key=foo:node:2] add-flow remove-flow ... update-fow Node[key=foo:node:1] add-flow remove-flow ... update-fow Node[key=foo:node:1] add-flow remove-flow ... update-fow 1. Consumer invokes ‘add-flow’ with node id ‘foo:node:1”

Request Routing (App->NE) Application NE1 NE2 NEn Models Models Models Models Controller (Container Instance) RESTCONF Inventory Netconf Network Inventory Request Routing NE1 f1 f2 ... fn NEn f1 f2 ... fn Routing Table: NE2 f1 f2 ... fn NE1 NE2 NEn module node-feature-inventory { prefix nf;                    import opendaylight-inventory {prefix inv};     import yang-ext { prefix ext};     import mount { prefix mount};     augment "/inv:nodes/inv:node" { ext:context-instance “node";      ext:augment-identifier "netconf-node";         mount:mountpoint "mounted-data" {          mount:subtree "/";         }     } } Path: “/inv:nodes/inv:node[id=”NE1"]/nf:mounted-data/f1”

Request Routing (App->NE, Multi-Dest) Application NE1 NE2 NEn Models Models Models Controller (Container Instance) RESTCONF Inventory Netconf OpenFlow Models Network Inventory Request Routing NE1 f1 f2 ... fn NEn f1 f2 ... fn Routing Table: NE2 f1 f2 ... fn NE1 NE2 NEn module node-feature-inventory { prefix nf;                    import opendaylight-inventory {prefix inv};     import yang-ext { prefix ext};     import mount { prefix mount};     augment "/inv:nodes/inv:node" { ext:context-instance “node";      ext:augment-identifier "of-node";         mount:mountpoint "mounted-data" {          mount:subtree "/";         }     } } Path: “/inv:nodes/inv:node[id=”NEn"]/nf:mounted-data/f1”

Call to Action Open Source is standards for the 21st Century OpenDaylight is rapidly becoming the focal point for SDN Code is the Coin of the Realm Influence comes from contribution of code Brings forth ideas to contribute and resources to do the work 21

Resources IRC: #opendaylight on Freenone More information and to join: wiki.opendaylight.org Keep informed and join the conversation IRC: #opendaylight on Freenone Open mailing lists: lists.opendaylight.org @openDaylightSDN #OpenDaylight 22

Thank you

Request Routing (App->NE) Application NE1 NE2 NEn Models Models Models Models Controller (Container Instance) RESTCONF Inventory Netconf Network Inventory Request Routing NE1 f1 f2 ... fn NEn f1 f2 ... fn Routing Table: NE2 f1 f2 ... fn NE1 NE2 NEn module node-feature-inventory { prefix nf;                    import opendaylight-inventory {prefix inv};     import yang-ext { prefix ext};     import mount { prefix mount};     augment "/inv:nodes/inv:node" { ext:context-instance “node";      ext:augment-identifier "netconf-node";         mount:mountpoint "mounted-data" {          mount:subtree "/";         }     } } Path: “/inv:nodes/inv:node[id=”NE1"]/nf:mounted-data/f1”

Request Routing (App->NE, Multi-Dest) Application NE1 NE2 NEn Models Models Models Controller (Container Instance) RESTCONF Inventory Netconf OpenFlow Models Network Inventory Request Routing NE1 f1 f2 ... fn NEn f1 f2 ... fn Routing Table: NE2 f1 f2 ... fn NE1 NE2 NEn module node-feature-inventory { prefix nf;                    import opendaylight-inventory {prefix inv};     import yang-ext { prefix ext};     import mount { prefix mount};     augment "/inv:nodes/inv:node" { ext:context-instance “node";      ext:augment-identifier "of-node";         mount:mountpoint "mounted-data" {          mount:subtree "/";         }     } } Path: “/inv:nodes/inv:node[id=”NEn"]/nf:mounted-data/f1”

Request Routing (RPC App->Service) module Service1 { prefix svc1; import yang-ext {prefix ext} import inventory {prefix inv} rpc Op11 { input { leaf foo { type bar; } module Service2 { prefix svc1; import yang-ext {prefix ext} import inventory {prefix inv} rpc Op21 { input { leaf foo { type bar; } POST /restconf/v1/operations/Service2:Op21 { input: { [foo=“1234”] } Application Service1 Service2 Model2 Model1 Model1 Model2 POST /restconf/v1/operations/Service1:Op11 { input: { [foo=“1234”] } Controller (Container Instance) RESTCONF (Proxy Server) RESTCONF (Proxy Client) Network Services Request Routing Service1 Op11 Op21 ... Op_1n Service2 Op21 Op22 ... Op_2n Routing Table: Service1 Service2

Request Routing (RPC App->Service) module Service1 { prefix svc1; import yang-ext {prefix ext} import inventory {prefix inv} rpc Op11 { input { leaf foo { type bar; } module Service2 { prefix svc1; import yang-ext {prefix ext} import inventory {prefix inv} rpc Op21 { input { leaf foo { type bar; } POST /restconf/v1/operations/Service2:Op21 { input: { [foo=“1234”] } Application Service1 Service2 Model2 Model1 Model1 Model2 POST /restconf/v1/operations/Service1:Op11 { input: { [foo=“1234”] } Controller (Container Instance) Netconf Network Services Request Routing Service1 Op11 Op21 ... Op_1n Service2 Op21 Op22 ... Op_2n Routing Table: Service1 Service2

Distributed Request Routing (App->NE) Application NE1 NE2 NEn Models Models Models Models Controller (Container Instance) Controller (Container Instance) Data Store RESTCONF Inventory Netconf Network Network Request Routing Inventory Request Routing Inventory NE1 NE2 NE3 NE1 f1 f2 ... fn NEn f1 f2 ... fn Routing Table: Routing Table: NE1 NE1 NE2 f1 f2 ... fn NE2 NE2 NEn NEn Message Bus module node-feature-inventory { prefix nf;                    import opendaylight-inventory {prefix inv};     import yang-ext { prefix ext};     import mount { prefix mount};     augment "/inv:nodes/inv:node" { ext:context-instance “node";      ext:augment-identifier "netconf-node";         mount:mountpoint "mounted-data" {          mount:subtree "/";         }     } } Path: “/inv:nodes/inv:node[id=”NE1"]/nf:mounted-data/f1”

Receiving a ‘Flow Delete’ Message Controller … Topology Manager ARP Handler Statistics Manager Flow Programmer Service 1 MD-SAL 6 RESTCONF/ NETCONF SAL Notification “Is generated from” 5 Request Routing OF Plugin API 3 4 OF Plugin OF Library 2 OF Plugin Model

Adding a Flow … Controller Topology Manager ARP Handler Flow Service Model 2 “Is generated from” Controller … Topology Manager ARP Handler Statistics Manager Flow Programmer Service 1 4 MD-SAL 5 RESTCONF/ NETCONF 6 Flow Service API 7 RPC Request Routing “Is generated from” OF Plugin API RPC Flow Service Model Data 3 9 8 1 OF Plugin OF Library 10 OF Plugin Model

Network Application Life Cycle (Today) Application change Application Application Application GUI/API change API Controller Controller change Network Representation … … API Network API change API API Network Element Network Element Feature change … …

Network Application Life Cycle (End-to-End Model-Driven Archictecture) Application change Application Application Application Auto-update API API Controller Autogenerate code Network Representation … … API Load NE Model Network API API Network Element Network Element Feature change … …

Java NB Service Modeled API NFV Virtual Appliance SB Plugin Model NB Service Model “Is generated from” “Is generated from” Controller Controller REST API … REST API REST API REST API NB-Plugin 1 NB-Plugin 2 NB-Plugin 1 Adaptation Plugin NB-Plugin 2 AD-SAL Java plugin NB API Java Service NB API MD-SAL Request Routing Java NB Service Modeled API Request Routing Adaptation Data Store SB Model Data Java SB Modeled API NB Model Data Java plugin SB API … … SB-Plugin 1 SB-Plugin 2 SB-Plugin 1 SB-Plugin 2 API-Driven SAL (AD-SAL) Model-Driven SAL (MD-SAL)

NFV Virtual Appliance Controller/EMS/Orchestration ODL Netconf, REST (XML & JSON) ODL Control Plane App Control Plane App Control Plane App Netconf/RESTCONF Application development environment: NFV Control Plane Manageability Service apps SAL SB Plugin SB Plugin SB Plugin DP1 OVS DPDK Data Path Fastpath

Plugin Build Process Controller Generate APIs 1 Yang Tools Model Model Yang Model Generate APIs 1 Yang Tools Create API Bundle 2 Deploy Maven Build Tools “API” OSGI Bundle Java API Definition 4 Java API Definition Generated API Definition Controller Maven Build Tools “Plugin” OSGI Bundle 4 3 Deploy Create Plugin Bundle Module Implementations Module Implementations Plugin source code

Moving to Model-Driven SAL Applications Northbound APIs (Generated & Handcrafted) Network Service Plugin Platform Service Plugin Transformer/ Adapter Internal Plugin Java & REST SAL APIs (Generated) Network Abstraction Layer … Topology NE NE NE Tunnels System Flows … Nodes Links Table Table … Table … Config Stats Config Stats Table Table … … Paths Flow Flow Flow Flow Flow Flow Java SAL APIs (Generated) SB Protocol OF-Config/OVSDB OF x.y PCEP … BGP-LS Network Elements

Moving to Model-Driven SAL (Cont.) Applications NB APIs (Generated & Handcrafted) Platform Services Netconf OF Network Services ALTO Internal Plugin Java & REST SAL APIs (Generated) Abstraction Layer … Topology NE NE NE System Flows RIB … Tunnels Paths Nodes Links Table Table … Table Config Stats … Java SAL APIs (Generated) SB Protocol OF-Config/OVSDB OF x.y PCEP … BGP-LS Network Elements

Moving to Model-Driven SAL (Cont.) Applications Topo Mgr REST API NB APIs (Generated & Handcrafted) Platform Services Netconf RESTCONF OF Network Services Topology Manager Topology Module Java & REST SAL APIs (Generated) Abstraction Layer … NE NE NE IETF Topology System Flows RIB … Tunnels Paths Nodes Links Table Table … Table XMP topology Config Stats … Topology Service Java SAL APIs (Generated) SB Protocol OF-Config/OVSDB OF x.y PCEP … XMP -Conn Network Elements

Architecture Binding-Aware Core Binding Independent Core Data Repository Transient Repository (MI Data Repository) Providers Binding-Aware Providers   Binding-Aware Consumers Applications Controller SAL Core Binding Generator Binding-Independent Consumers Schema Repository Binding-Independent Providers