OpenDaylight
description
Transcript of OpenDaylight
![Page 1: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/1.jpg)
Created by Jan Medvedwww.opendaylight.org
OpenDaylight
January 2014
Thomas D. Nadeau
![Page 2: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/2.jpg)
Created by Jan Medvedwww.opendaylight.org
2
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”
What is OpenDaylight
2
![Page 3: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/3.jpg)
Created by Jan Medvedwww.opendaylight.org
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
OpenDaylight Scope
3
![Page 4: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/4.jpg)
Created by Jan Medvedwww.opendaylight.org
Platinum Gold Silver
Who is OpenDaylight Project?
![Page 5: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/5.jpg)
Created by Jan Medvedwww.opendaylight.org
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.
OpenDaylight Project Goals
5
![Page 6: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/6.jpg)
Created by Jan Medvedwww.opendaylight.org
6
ODL “Hydrogen” Release Plan
6
![Page 7: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/7.jpg)
Created by Jan Medvedwww.opendaylight.org
7
Controller VTN OpenDove Affinity Management Service LISP Mapping Service Yang Tools Defense4All BGP-LS/PCEP OpenStack Plugin
Projects in the Hydrogen Release
7
OpenFlow Protocol OpenFlow SB Plugin OVSDB SNMP4SDN GUI Integration Testing
![Page 8: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/8.jpg)
Created by Jan Medvedwww.opendaylight.org
OpenDaylight Controller Architecture
8
![Page 9: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/9.jpg)
Created by Jan Medvedwww.opendaylight.org
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 in Open Daylight
9
![Page 10: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/10.jpg)
Created by Jan Medvedwww.opendaylight.org
OpenFlow Plugin Architecture
10
![Page 11: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/11.jpg)
Created by Jan Medvedwww.opendaylight.org
Moving to Model-Driven SAL
Network Elements
AbstractionLayer
Netconf PCEPOF x.y
…
Network
Topology
LinksNodes
Paths
NE … NE
System Flows
Table …Table
Table
…Flow Flow Flow
ConfigStats
Tunnels…
NE
BGP-LSOF-Config/OVSDB
ConfigStats
…Table
Table
…FlowFlow Flow
Applications
Network Service Plugin
Platform Service Plugin
Transformer/ Adapter
Java & REST SAL APIs (Generated)
Northbound APIs (Generated & Handcrafted)
Java SAL APIs (Generated)
Internal Plugin
![Page 12: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/12.jpg)
Created by Jan Medvedwww.opendaylight.org
Moving to Model-Driven SAL:The Software Engineer’s View
Controller (Container Instance)
SAL
SB Protocol
Applications
Java SAL APIs (Generated)
NB APIs (Generated & Handcrafted)
Network Service
Platform Service
Internal Plugin
OfConfigOVSDB OF x.y…
Network
ProducerConsumer
RESTCONF FCAPS
Netconf
![Page 13: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/13.jpg)
Created by Jan Medvedwww.opendaylight.org
Controller (Container Instance)
SAL
SB Protocol
Applications
Java SAL APIs (Generated)
NB APIs (Generated & Handcrafted)
Network Service
Platform Service
Internal Plugin
OfConfigOVSDB OF x.y…
Network
ProducerConsumer
RESTCONF FCAPS
Moving to Model-Driven SAL:Add Clustering
Message Bus Data Store
Container instance Container Instance
kv-store, SQL, ...
AMQP, 0-MQ...
…
Netconf
![Page 14: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/14.jpg)
Created by Jan Medved
Demo: RPC Request RoutingModule 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 { uses types:flow; } container updated-flow { uses types:flow; } }
rpc add-flow { input { uses node-flow; } }
rpc remove-flow { ... } rpc update-flow { ... } ...}
API: salFlowServiceadd-flow(AddFlowInput)remove-flow(RemoveFlowInput)update-flow(ApdateflowInput)...
Yang Tools
TestFlowServiceConsumerService
![Page 15: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/15.jpg)
Created by Jan Medved
Demo: RPC Request Routing
Controller (Container Instance)
NodesNetwork
Routing Table:Node [key=foo:node:1]
Consumer
Node[key=foo:node:2]
add-flowremove-flow
...update-fow
Node[key=foo:node:1]
add-flowremove-flow
...update-fow
Node [key=foo:node:2]
TestFlowService(“FlowService1”)
TestFlowService(“FlowService2”)
salFlowService API
1. Create Deploy Providers and Consumer2. 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”
![Page 16: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/16.jpg)
Created by Jan Medved
Demo: RPC Request Routing
Controller (Container Instance)
NodesNetwork
Routing Table:Node [key=foo:node:1]
Consumer
Node[key=foo:node:2]
add-flowremove-flow
...update-fow
Node[key=foo:node:1]
add-flowremove-flow
...update-fow
Node [key=foo:node:2]
TestFlowService(“FlowService1”)
TestFlowService(“FlowService2”)
salFlowService API
1. Consumer invokes ‘add-flow’ with node id ‘foo:node:1”2. Consumer invokes ‘add-flow’ with node id ‘foo:node:2”
![Page 17: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/17.jpg)
Created by Jan Medved
Demo: RPC Request Routing
Controller (Container Instance)
NodesNetwork
Routing Table:Node [key=foo:node:1]
Consumer
Node[key=foo:node:2]
add-flowremove-flow
...update-fow
Node[key=foo:node:1]
add-flowremove-flow
...update-fow
Node [key=foo:node:2]
TestFlowService(“FlowService1”)
TestFlowService(“FlowService2”)
salFlowService API
1. Consumer invokes ‘add-flow’ with node id ‘foo:node:1”
![Page 18: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/18.jpg)
Created by Jan Medved
Controller (Container Instance)
NodesNetwork
Routing Table:Node [key=foo:node:1] Node[key=foo:node:2]
add-flowremove-flow
...update-fow
Node[key=foo:node:1]
add-flowremove-flow
...update-fow
PingAPI
Controller (Container Instance)
Demo: Remote Request Routing
NodesNetwork
Routing Table:Node [key=foo:node:1]
RPC Client
Node[key=foo:node:2]
add-flowremove-flow
...update-fow
Node[key=foo:node:1]
add-flowremove-flow
...update-fow
RpcService
Ping API
1. Consumer invokes ‘add-flow’ with node id ‘foo:node:1”
Message Bus
![Page 19: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/19.jpg)
Created by Jan Medved
Request Routing (App->NE)
19
Controller (Container Instance)
Inventory
Network
Netconf
NE1
Models
NE1
f1 f2...
fn
... ...
NE2
f1 f2...
fn
... ...
NEn
f1 f2...
fn
... ...
NE2
Models
NEn
Models
Routing Table:NE1NE2NEn
RESTCONF
Application
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 "/"; } }}
Inventory
Models
Request Routing
Path: “/inv:nodes/inv:node[id=”NE1"]/nf:mounted-data/f1”
![Page 20: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/20.jpg)
Created by Jan Medved
Request Routing (App->NE, Multi-Dest)
20
Controller (Container Instance)
Inventory
Network
Netconf
NE1
Models
NE1
f1 f2...
fn
... ...
NE2
f1 f2...
fn
... ...
NEn
f1 f2...
fn
... ...
NE2
Models
NEn
Routing Table:NE1NE2NEn
RESTCONF
Application
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 "/"; } }}
Inventory
Models
Request Routing
Path: “/inv:nodes/inv:node[id=”NEn"]/nf:mounted-data/f1”
OpenFlowModels
![Page 21: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/21.jpg)
Created by Jan Medvedwww.opendaylight.org
21
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
Call to Action
21
![Page 22: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/22.jpg)
Created by Jan Medvedwww.opendaylight.org
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
Resources
22
![Page 23: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/23.jpg)
Created by Jan Medvedwww.opendaylight.org
Thank you
23
![Page 24: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/24.jpg)
Created by Jan Medved
Request Routing (App->NE)
24
Controller (Container Instance)
Inventory
Network
Netconf
NE1
Models
NE1
f1 f2...
fn
... ...
NE2
f1 f2...
fn
... ...
NEn
f1 f2...
fn
... ...
NE2
Models
NEn
Models
Routing Table:NE1NE2NEn
RESTCONF
Application
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 "/"; } }}
Inventory
Models
Request Routing
Path: “/inv:nodes/inv:node[id=”NE1"]/nf:mounted-data/f1”
![Page 25: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/25.jpg)
Created by Jan Medved
Request Routing (App->NE, Multi-Dest)
25
Controller (Container Instance)
Inventory
Network
Netconf
NE1
Models
NE1
f1 f2...
fn
... ...
NE2
f1 f2...
fn
... ...
NEn
f1 f2...
fn
... ...
NE2
Models
NEn
Routing Table:NE1NE2NEn
RESTCONF
Application
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 "/"; } }}
Inventory
Models
Request Routing
Path: “/inv:nodes/inv:node[id=”NEn"]/nf:mounted-data/f1”
OpenFlowModels
![Page 26: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/26.jpg)
Created by Jan Medved
Request Routing (RPC App->Service)
26
Controller (Container Instance)
Services
Network
Routing Table:Service1Service2
RESTCONF(Proxy Server)
ApplicationModel1
Request Routing
RESTCONF(Proxy Client)
Service1 Service2Model1 Model2Model2
Service1
Op11
Op21...
Op_1n
Service2
Op21
Op22...
Op_2n
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/Service1:Op11{ input: { [foo=“1234”]}
POST /restconf/v1/operations/Service2:Op21{ input: { [foo=“1234”]}
![Page 27: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/27.jpg)
Created by Jan Medved
Request Routing (RPC App->Service)
27
Controller (Container Instance)
Services
Network
Routing Table:Service1Service2
Netconf
ApplicationModel1
Request Routing
Service1 Service2Model1 Model2Model2
Service1
Op11
Op21...
Op_1n
Service2
Op21
Op22...
Op_2n
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/Service1:Op11{ input: { [foo=“1234”]}
POST /restconf/v1/operations/Service2:Op21{ input: { [foo=“1234”]}
![Page 28: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/28.jpg)
Created by Jan Medved
Controller (Container Instance)
Distributed Request Routing (App->NE)
28
Controller (Container Instance)
Inventory
Network
Netconf
NE1
Models
NE1
f1 f2...
fn
... ...
NE2
f1 f2...
fn
... ...
NEn
f1 f2...
fn
... ...
NE2
Models
NEn
Models
Routing Table:NE1NE2NEn
RESTCONF
Application
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 "/"; } }}
Inventory
Models
Request Routing
Path: “/inv:nodes/inv:node[id=”NE1"]/nf:mounted-data/f1”
Request Routing
Routing Table:
Message Bus
NE1NE2NEn
InventoryNetwork
Data Store
NE1
NE2
NE3
![Page 29: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/29.jpg)
Created by Jan Medvedwww.opendaylight.org
Receiving a ‘Flow Delete’ Message
29
Controller
MD-SAL
OF Plugin Model
OF Plugin API
Flow Programmer Service
OF Library
Topology Manager
RESTCONF/NETCONF
2
3 4
SAL Notification
Statistics ManagerARP Handler …1
“Is generated from”
OF Plugin
6
Request Routing5
![Page 30: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/30.jpg)
Created by Jan Medvedwww.opendaylight.org
Adding a Flow
30
Controller
MD-SAL
OF Plugin Model
OF Plugin API
Flow Programmer Service
OF Library
Topology Manager
RESTCONF/NETCONF
Flow Service API
Flow Service Model
Statistics ManagerARP Handler …
2
“Is generated from”
OF Plugin
Request Routing
1
1
3
7
RPC
6
9
10
RPC
“Is generated from”
Flow Service Model Data
45
8
![Page 31: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/31.jpg)
Created by Jan Medvedwww.opendaylight.org
Network Application Life Cycle (Today)
NetworkNetwork Element
…
API
Network Element…
API
Controller
API
API
… …
NetworkRepresentation
Application Application Application
Feature change
API change
Controller change
GUI/API change
Application change
![Page 32: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/32.jpg)
Created by Jan Medvedwww.opendaylight.org
Network Application Life Cycle(End-to-End Model-Driven Archictecture)
NetworkNetwork Element
…
API
Network Element…
API
Controller
API
API
… …
NetworkRepresentation
Application Application Application
Feature change
Application change
Load NE Model
Autogenerate code
Auto-update API
![Page 33: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/33.jpg)
Created by Jan Medvedwww.opendaylight.org
NFV Virtual Appliance
33
Controller
AD-SALJava plugin SB API
Java plugin NB API
NB-Plugin 1
Adaptation
Java Service NB API
NB-Plugin 2REST API REST API
Controller
MD-SAL
SB-Plugin 1 SB-Plugin 2
NB-Plugin 2Adaptation Plugin
Java SB Modeled API
Java NB Service Modeled API
SB Plugin Model
Request Routing
…SB-Plugin 1 SB-Plugin 2…
… NB-Plugin 1
“Is generated from”
REST API REST API
NB Service Model
“Is generated from”
API-Driven SAL (AD-SAL) Model-Driven SAL (MD-SAL)
Request Routing
SB Model Data NB Model
DataData Store
![Page 34: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/34.jpg)
Created by Jan Medvedwww.opendaylight.org
NFV Virtual Appliance
34
ODL
SAL
Control Plane App
SB Plugin
Netconf/RESTCONF
Controller/EMS/Orchestration
Data Path Fastpath
Netconf, REST (XML & JSON)
Application development environment:• NFV Control Plane • Manageability• Service apps
Control Plane AppControl Plane App
SB PluginSB Plugin
DP1 OVS DPDK
![Page 35: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/35.jpg)
Created by Jan Medvedwww.opendaylight.org
ModelModel
Plugin Build Process
35
Controller
Yang Model
Java API DefinitionJava API DefinitionGenerated API Definition
Module Implementations
Yang Tools
“Plugin”OSGI Bundle
1
4
Generate APIs
Create Plugin BundleDeploy
MavenBuild Tools
Module ImplementationsPlugin source code
“API” OSGI Bundle
MavenBuild Tools
2
3
Create API Bundle
4Deploy
![Page 36: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/36.jpg)
Created by Jan Medvedwww.opendaylight.org
Moving to Model-Driven SAL
Network Elements
AbstractionLayer
SB Protocol PCEPOF x.y
…
Network
Topology
LinksNodes
Paths
NE … NE
System Flows
Table …Table
Table
…Flow Flow Flow
ConfigStats
Tunnels…
NE
BGP-LSOF-Config/OVSDB
ConfigStats
…Table
Table
…FlowFlow Flow
Applications
Network Service Plugin
Platform Service Plugin
Transformer/ Adapter
Java & REST SAL APIs (Generated)
Northbound APIs (Generated & Handcrafted)
Java SAL APIs (Generated)
Internal Plugin
![Page 37: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/37.jpg)
Created by Jan Medvedwww.opendaylight.org
Moving to Model-Driven SAL (Cont.)
Network Elements
AbstractionLayer
SB Protocol PCEPOF x.y
…BGP-LSOF-Config/OVSDB
Applications
OF Network Services
Platform Services Netconf
Java & REST SAL APIs (Generated)
NB APIs (Generated & Handcrafted)
Java SAL APIs (Generated)
Internal Plugin
Topology
LinksNodesPaths
NE…NENE
System Flows RIB
Table …Table Table
…Config Stats
Tunnels…
ALTO
![Page 38: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/38.jpg)
Created by Jan Medvedwww.opendaylight.org
Moving to Model-Driven SAL (Cont.)
Network Elements
AbstractionLayer
SB Protocol PCEPOF x.y
…XMP -ConnOF-Config/OVSDB
Applications
OF Network Services
Platform Services
NetconfRESTCONF
Java & REST SAL APIs (Generated)
NB APIs (Generated & Handcrafted)
Java SAL APIs (Generated)
Topology Module
IETF Topology
LinksNodesPaths
NE…NENE
System Flows RIB
Table …Table Table
…Config Stats
Tunnels…
Topology Manager
XMP topology
Topo Mgr REST API
Topology Service
![Page 39: OpenDaylight](https://reader035.fdocuments.net/reader035/viewer/2022062521/56816932550346895de08356/html5/thumbnails/39.jpg)
Created by Jan Medvedwww.opendaylight.org
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
Providers
Binding Generator
Binding-Independent Consumers
Schema Repository
Binding-Independent Providers