Open Daylight Tutorial For Developers February 2014 Thomas D. Nadeau, Brocade tnadeau@brocade.com Madhu Venugopal, Red Hat Luis Gomez, Ericsson Luis.gomez@ericsson.com Created by Jan Medved www.opendaylight.org
Tutorial Agenda � Overview and Introduction � Developer Hands.on Live! � Kickstarter for Developers � End.User Hands.on Live! 2 Created by Jan Medved www.opendaylight.org
Overview and Introduction 3 Created by Jan Medved www.opendaylight.org
What is OpenDaylight The Open Daylight Project is a collaborative open source project that aims to accelerate adoption of Software. Defined Networking (SDN) and create a solid foundation for Network Functions Virtualization (NFV) for a more transparent approach that fosters new innovation and reduces risk. Founded by industry leaders and open to all, the OpenDaylight community is developing a common, open SDN framework consisting of code and blueprints. 4 4 Created by Jan Medved www.opendaylight.org
OpenDaylight Project 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 5 Created by Jan Medved www.opendaylight.org
Who is OpenDaylight Project? �������� ���� ������ Created by Jan Medved www.opendaylight.org
OpenDaylight Project Goals � ����� To create a robust, extensible, open source code base that covers the major common components required to build an SDN solution � ������������ To get broad industry acceptance amongst vendors and users � ����������� 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. 7 Created by Jan Medved www.opendaylight.org
ODP First Release “Hydrogen” � ������������������ ������� � OpenDaylight Controller Base, Virtualization, Service Provider, Extra � OpenDaylight Virtual Tenant Network (VTN) � Open DOVE � OpenFlow Plugin � Affinity Metadata Service � OpenDaylight OSCP Project � ������������������� � YANG Tools � LISP Flow Mapping � OVSDB Open vSwitch Database Project � OpenFlow Protocol Library � BGP.LS/PCEP � Defense4All � SNMP4SDN � dlux . open � ay � ight � ser e � perience � SDN Simulation Platform 8 8 Created by Jan Medved www.opendaylight.org
Developer Info – Start With the Wiki https://wiki.opendaylight.org/view/Main_Page 9 Created by Jan Medved www.opendaylight.org
Open Daylight Controller Architecture 10 Created by Jan Medved www.opendaylight.org
Network Application Life Cycle (Today) Application Application Application Application change GUI/API change API Network Controller change Controller Representation � � API API change API API ������� � � Feature change ��������������� ��������������� Created by Jan Medved www.opendaylight.org
Network Application Life Cycle (End.to.End Model.Driven Archictecture) Application Application Application Application change Auto.update API API Network Controller Autogenerate code Representation � � API Load NE Model API API ������� � � Feature change ��������������� ��������������� Created by Jan Medved www.opendaylight.org
Model.Driven SAL Applications Northbound APIs (Generated & Handcrafted) Network Service Platform Service Transformer/ Internal Plugin Plugin Plugin Adapter Java & REST SAL APIs (Generated) Network Abstraction Topology J Layer NE NE NE Tunnels J System Flows Nodes Links Tabl J Tabl Tabl J e e e Config Stats Tabl Stats Config Tabl e J J e Paths Flow Flow Flow Flow Flow Flow Java SAL APIs (Generated) Netconf OF.Config/OVSDB OF x.y PCEP BGP.LS J Network Elements Created by Jan Medved www.opendaylight.org
Model.Driven SAL: The Software Engineer’s View ������� Applications Netconf NB APIs (Generated & Handcrafted) J Network Platform Internal SB OfConfig OF x.y Service Service Plugin Protocol OVSDB REST FCAPS Java SAL APIs (Generated) CONF SAL �������� �������� Controller (Container Instance) Created by Jan Medved www.opendaylight.org
Moving to Model.Driven SAL: Add Clustering ������� Applications Netconf NB APIs (Generated & Handcrafted) J Network Platform Internal SB OfConfig OF x.y Service Service Plugin Protocol OVSDB REST FCAPS Java SAL APIs (Generated) CONF SAL �������� �������� Controller (Container Instance) Data Store kv.store, SQL, ... Message Bus AMQP, 0.MQ... J Container instance Container Instance Created by Jan Medved www.opendaylight.org
Demo: RPC Request Routing ����������������� ������������������������������������������ ������������ ����������������������������� ������������������������������������������� ������������������������������������� ���������������������������������������������� ������������������������ ������������������������� � �������������������� ����������� ����������������������������������������� ������������������ � ������������������� ����������������� �������������������� � ���������������������� ���������������� ���������� ���������������������������� � ���������������������������� ���������������������� ���� ������������������������� ���������������� � ������������������������ ���������������� � � �������������� ������� ConsumerService TestFlowService ��������������� � � ������������������������ ����������������������� Created by Jan Medved ��� �
Demo: RPC Request Routing TestFlowService TestFlowService Consumer (“FlowService1”) (“FlowService2”) ������������������ Network Nodes Node[key=foo:node:1] Routing Table: Node[key=foo:node:2] Node [key=foo:node:1] ... ... Node [key=foo:node:2] add.flow update.fow add.flow update.fow remove.flow remove.flow Controller (Container Instance) 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 Created by Jan Medved 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 TestFlowService TestFlowService Consumer (“FlowService1”) (“FlowService2”) ������������������ Network Nodes Node[key=foo:node:1] Routing Table: Node[key=foo:node:2] Node [key=foo:node:1] ... ... Node [key=foo:node:2] add.flow update.fow add.flow update.fow remove.flow remove.flow Controller (Container Instance) 1. Consumer invokes ‘add.flow’ with node id ‘foo:node:1” 2. Consumer invokes ‘add.flow’ with node id ‘foo:node:2” Created by Jan Medved
Recommend
More recommend