SlideShare una empresa de Scribd logo
1 de 28
Automate | Orchestrate | Remediate
OpenDaylight and YANG
A northbound perspective ...
SDN is the physical separation of the network control plane
from the forwarding plane and where the control plane
controls several devices.
So what should this control plane (SDN Controller) be?The
SDN
A platform for deploying SDN applications
Provide (or be associated with) an SDN application
development environment
SDN
Controller:
Platform
Requirements
Flexibility
Accommodate a variety of diverse applications
Controller applications SHOULD use a common framework and
programming
model and provide consistent APIs to their client
Scale the development process:
No infrastructure code hotspots
Independent development of controller applications & short
integration times
Run-time Extensibility and Modularity:
Load new protocol and service/application plugins at run-time.
Adapt to data schemas (models) discovered in the network
Performance & Scale
SDN Controller: App Development Requirements
A DSL for modeling to describe internal and external system behavior
Modeling tools for the controller aligned with modeling tools for devices
Code generation from models:
Enforce standard API contracts
Generate boilerplate code performing repetitive and error-prone tasks
Produce functionally equivalent APIs for different language bindings
Model-to-model adaptations for services and devices
Consumption of aligned device models
In the OpenDaylight Project, these requirements are satisfied with YANG (and YANG
extensions) and via the YANG tool-chain, manifested in the MD-SAL
OpenDaylight Solution
YANG models defined in MD-SAL help in generating the bindings for the RESTCONF and the
south-bound plugins
OpenDaylight Software Architecture
MD-SAL Overview
• Model Driven Service Abstraction Layer (MD-SAL) is the core of Opendaylight project which
helps in connecting between different layer & modules through well defined API
• The MD-SAL uses YANG as the modeling language for both interface and data definitions, and
provides a messaging and data-centric runtime for such services based on YANG modelling
• YANG tools is used to compile YANG template and generate Java classes/interfaces and
automatically build REST API doc explorer.
Yangtools
Generates Java code from YANG
Provides ‘codecs’ to convert
Generated Java classes to DOM
DOM to various formats
XML
JSON
Etc.
Codecs make possible automatic:
RESTCONF
NETCONF
AMQP
Other bindings
YANG → Java … why?
Immutable: to avoid thread contention
Strongly typed: reduce coding errors
Consistent: reduce learning curve
Improvable – generation can be improved and all DTOs get those improvements
immediately system wide
Automated Bindings:
restconf – xml and json
netconf
amqp and xmpp – on the horizon
Runtime Generatable
Consistent Data Transfer Objects (DTOs) everywhere
MD-SAL: Model-Driven Service Abstraction Layer
MD-SAL Details
MD-SAL – The 3 Brokers
Plugin development
14
Annexure
Yang to Java Example - typedef
15
Yang Java
public class BridgeName implements Serializable {
private final String _value;
@ConstructorProperties("value")
public BridgeName(String _value) {
…
}
public BridgeName(BridgeName source) {
this._value = source._value;
}
public String getValue() {
return _value;
}
…
}
typedef bridge-name {
type string;
}
Yang to Java Example - grouping
16
Yang Java
public interface BridgeAttributes
extends DataObject {
BridgeName getBridgeName();
…
}
grouping bridge-attributes {
leaf bridge-name {
type bridge-name;
}
…
}
Yang to Java Eg - container - interface
17
Yang Java
public interface ConnectionInfo
extends Augmentable<ConnectionInfo>,
ConnectionInfoAttributes {
}
container connection-info {
uses connection-info-attributes;
}
Yang to Java Eg - container - builder
18
Yang Java
public class ConnectionInfoBuilder
implements Builder <ConnectionInfo> {
/* fields */
public void setRemoteIp(IpAddress value)
…
public IpAddress getRemoteIp()
…
public ConnectionInfo build() {
return new ConnectionInfoImpl(this);
}
}
container connection-info {
uses connection-info-attributes;
}
Yang to Java Example - list - interface
19
Yang Java
public interface ControllerEntry
extends Augmentable<ControllerEntry>,
Identifiable<ControllerEntryKey> {
Uri getTarget();
ControllerEntryKey getKey();
…
}
list controller-entry {
key “target”
leaf target {
type inet:uri;
}
}
Yang to Java Example - list - builder
20
Yang Java
public class ControllerEntryBuilder
implements Builder <ControllerEntry> {
/* fields */
public ControllerEntryBuilder setTarget(Uri value) {
…
}
…
public Uri getTarget(Uri value) {…}
ControllerEntryKey getKey() {…}
…
public ControllerEntry build() {
return new ControllerEntryImpl(this);
}
…
}
list controller-entry {
key “target”
leaf target {
type inet:uri;
}
}
Yang to Java Eg. - rpc service interface
21
Yang Java
public interface HelloService
extends RpcService {
Future<RpcResult<HelloWorldOutput>> helloWorld(
HelloWorldInput input);
}
rpc hello-world {
input {
leaf name {
type string;
}
}
output {
leaf greating {
type string;
}
}
}
Yang to Java Eg. - rpc - input interface
22
Yang Java
public interface HelloWorldInput
extends DataObject,
Augmentable<HelloWorldInput> {
String getName();
}
rpc hello-world {
input {
leaf name {
type string;
}
}
output {
leaf greating {
type string;
}
}
}
Yang to Java Example - rpc – input builder
23
Yang Java
public class HelloWorldInputBuilder
implements Builder <HelloWorldInput> {
/* fields */
public HelloWorldInputBuilder setName(String value) {
this._name = value;
return this;
}
public HelloWorldInput build() {
return new HelloWorldInputImpl(this);
}
…
}
rpc hello-world {
input {
leaf name {
type string;
}
}
output {
leaf greating {
type string;
}
}
}
Yang to Java Eg. - rpc - output interface
24
Yang Java
public interface HelloWorldOutput
extends DataObject,
Augmentable<HelloWorldOutput> {
String getGreating();
}
rpc hello-world {
input {
leaf name {
type string;
}
}
output {
leaf greating {
type string;
}
}
}
Yang to Java Eg. - rpc - output builder
25
Yang Java
public class HelloWorldOutputBuilder
implements Builder <HelloWorldOutput> {
/* fields */
public HelloWorldOutputBuilder setName(String value) {
this._name = value;
return this;
}
public HelloWorldOutput build() {
return new HelloWorldOutputImpl(this);
}
…
}
rpc hello-world {
input {
leaf name {
type string;
}
}
output {
leaf greating {
type string;
}
}
}
Yang to Java Eg. - notification - interface
26
Yang Java
public interface RandomGreetingNotification
extends ChildOf<DataObject>,
Augmentable<RandomGreetingNotification>,
Notification {
String getRandomGreeting();
}
notification random-greeting-notification
{
leaf random-greeting {
type string;
}
}
Yang to Java Example - notification - builder
27
Yang Java
public class RandomGreetingNotificationBuilder
implements Builder<RandomGreetingNotification> {
public RandomGreetingNotificationBuilder
setRandomGreeting(String value) {
this._randomGreeting = value;
return this;
}
public RandomGreetingNotification build() {
return new RandomGreetingNotificationImpl(this);
}
…
}
notification random-greeting-notification
{
leaf random-greeting {
type string;
}
}
28
Thank
You
Connect with us@
Email: Sabapathy@cloudenablers.com
dvinod@Cloudenablers.com
LinkedIn: http://in.linkedin.com/in/arsabapathy
Twitter: https://twitter.com/arsabapathy

Más contenido relacionado

La actualidad más candente

End-to-End Reactive Data Access Using R2DBC with RSocket and Proteus
End-to-End Reactive Data Access Using R2DBC with RSocket and ProteusEnd-to-End Reactive Data Access Using R2DBC with RSocket and Proteus
End-to-End Reactive Data Access Using R2DBC with RSocket and ProteusVMware Tanzu
 
High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)Arnaud Bouchez
 
Ekon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsEkon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsArnaud Bouchez
 
LDAP Development Using Spring LDAP
LDAP Development Using Spring LDAPLDAP Development Using Spring LDAP
LDAP Development Using Spring LDAPLDAPCon
 
Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)Arnaud Bouchez
 
Distributed Objects: CORBA/Java RMI
Distributed Objects: CORBA/Java RMIDistributed Objects: CORBA/Java RMI
Distributed Objects: CORBA/Java RMIelliando dias
 
Scala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosScala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosebiznext
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System IntroductionDan Stine
 
HornetQ Presentation On JBoss World 2009
HornetQ Presentation On JBoss World 2009HornetQ Presentation On JBoss World 2009
HornetQ Presentation On JBoss World 2009jarfield
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 
Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)
Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)
Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)Frank Scheffler
 
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference Arnaud Bouchez
 
Java 8 in Anger (JavaOne)
Java 8 in Anger (JavaOne)Java 8 in Anger (JavaOne)
Java 8 in Anger (JavaOne)Trisha Gee
 
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootOracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootMichel Schildmeijer
 
Tech_Implementation of Complex ITIM Workflows
Tech_Implementation of Complex ITIM WorkflowsTech_Implementation of Complex ITIM Workflows
Tech_Implementation of Complex ITIM Workflows51 lecture
 
2021.laravelconf.tw.slides1
2021.laravelconf.tw.slides12021.laravelconf.tw.slides1
2021.laravelconf.tw.slides1LiviaLiaoFontech
 
Akka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with ScalaAkka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with ScalaJerry Kuru
 

La actualidad más candente (20)

End-to-End Reactive Data Access Using R2DBC with RSocket and Proteus
End-to-End Reactive Data Access Using R2DBC with RSocket and ProteusEnd-to-End Reactive Data Access Using R2DBC with RSocket and Proteus
End-to-End Reactive Data Access Using R2DBC with RSocket and Proteus
 
High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)
 
Ekon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsEkon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side Notifications
 
Java 9 sneak peek
Java 9 sneak peekJava 9 sneak peek
Java 9 sneak peek
 
Understanding OpenFlow
Understanding OpenFlowUnderstanding OpenFlow
Understanding OpenFlow
 
LDAP Development Using Spring LDAP
LDAP Development Using Spring LDAPLDAP Development Using Spring LDAP
LDAP Development Using Spring LDAP
 
Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)
 
Distributed Objects: CORBA/Java RMI
Distributed Objects: CORBA/Java RMIDistributed Objects: CORBA/Java RMI
Distributed Objects: CORBA/Java RMI
 
Scala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macrosScala io2013 : Our journey from UML/MDD to Scala macros
Scala io2013 : Our journey from UML/MDD to Scala macros
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
 
HornetQ Presentation On JBoss World 2009
HornetQ Presentation On JBoss World 2009HornetQ Presentation On JBoss World 2009
HornetQ Presentation On JBoss World 2009
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)
Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)
Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)
 
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
 
Java 8 in Anger (JavaOne)
Java 8 in Anger (JavaOne)Java 8 in Anger (JavaOne)
Java 8 in Anger (JavaOne)
 
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootOracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
 
Tech_Implementation of Complex ITIM Workflows
Tech_Implementation of Complex ITIM WorkflowsTech_Implementation of Complex ITIM Workflows
Tech_Implementation of Complex ITIM Workflows
 
2021.laravelconf.tw.slides1
2021.laravelconf.tw.slides12021.laravelconf.tw.slides1
2021.laravelconf.tw.slides1
 
Power tools in Java
Power tools in JavaPower tools in Java
Power tools in Java
 
Akka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with ScalaAkka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with Scala
 

Destacado

OpenDayLight (ODL) Project
OpenDayLight (ODL) ProjectOpenDayLight (ODL) Project
OpenDayLight (ODL) ProjectVahid Sadri
 
Introduction to YANG data models and their use in OpenDaylight: an overview
Introduction to YANG data models and their use in OpenDaylight: an overviewIntroduction to YANG data models and their use in OpenDaylight: an overview
Introduction to YANG data models and their use in OpenDaylight: an overviewCisco DevNet
 
opendayight loadBalancer
opendayight loadBalancer opendayight loadBalancer
opendayight loadBalancer Khubaib Mahar
 
OpenDaylight app development tutorial
OpenDaylight app development tutorialOpenDaylight app development tutorial
OpenDaylight app development tutorialSDN Hub
 
DEVNET-1152 OpenDaylight YANG Model Overview and Tools
DEVNET-1152	OpenDaylight YANG Model Overview and ToolsDEVNET-1152	OpenDaylight YANG Model Overview and Tools
DEVNET-1152 OpenDaylight YANG Model Overview and ToolsCisco DevNet
 
Protocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDNProtocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDNGerardo Pardo-Castellote
 
Using OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound pluginsUsing OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound pluginsOpenDaylight
 
NETCONF & YANG Enablement of Network Devices
NETCONF & YANG Enablement of Network DevicesNETCONF & YANG Enablement of Network Devices
NETCONF & YANG Enablement of Network DevicesCisco DevNet
 
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Cisco DevNet
 
Clash of Titans in SDN: OpenDaylight vs ONOS - Elisa Rojas
Clash of Titans in SDN: OpenDaylight vs ONOS - Elisa RojasClash of Titans in SDN: OpenDaylight vs ONOS - Elisa Rojas
Clash of Titans in SDN: OpenDaylight vs ONOS - Elisa RojasOpenNebula Project
 

Destacado (10)

OpenDayLight (ODL) Project
OpenDayLight (ODL) ProjectOpenDayLight (ODL) Project
OpenDayLight (ODL) Project
 
Introduction to YANG data models and their use in OpenDaylight: an overview
Introduction to YANG data models and their use in OpenDaylight: an overviewIntroduction to YANG data models and their use in OpenDaylight: an overview
Introduction to YANG data models and their use in OpenDaylight: an overview
 
opendayight loadBalancer
opendayight loadBalancer opendayight loadBalancer
opendayight loadBalancer
 
OpenDaylight app development tutorial
OpenDaylight app development tutorialOpenDaylight app development tutorial
OpenDaylight app development tutorial
 
DEVNET-1152 OpenDaylight YANG Model Overview and Tools
DEVNET-1152	OpenDaylight YANG Model Overview and ToolsDEVNET-1152	OpenDaylight YANG Model Overview and Tools
DEVNET-1152 OpenDaylight YANG Model Overview and Tools
 
Protocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDNProtocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDN
 
Using OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound pluginsUsing OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound plugins
 
NETCONF & YANG Enablement of Network Devices
NETCONF & YANG Enablement of Network DevicesNETCONF & YANG Enablement of Network Devices
NETCONF & YANG Enablement of Network Devices
 
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
 
Clash of Titans in SDN: OpenDaylight vs ONOS - Elisa Rojas
Clash of Titans in SDN: OpenDaylight vs ONOS - Elisa RojasClash of Titans in SDN: OpenDaylight vs ONOS - Elisa Rojas
Clash of Titans in SDN: OpenDaylight vs ONOS - Elisa Rojas
 

Similar a OpenDaylight and YANG

Angular for Java Enterprise Developers: Oracle Code One 2018
Angular for Java Enterprise Developers: Oracle Code One 2018Angular for Java Enterprise Developers: Oracle Code One 2018
Angular for Java Enterprise Developers: Oracle Code One 2018Loiane Groner
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011YoungSu Son
 
Effective JavaFX architecture with FxObjects
Effective JavaFX architecture with FxObjectsEffective JavaFX architecture with FxObjects
Effective JavaFX architecture with FxObjectsSrikanth Shenoy
 
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...Flink Forward
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextPrateek Maheshwari
 
Python Streaming Pipelines with Beam on Flink
Python Streaming Pipelines with Beam on FlinkPython Streaming Pipelines with Beam on Flink
Python Streaming Pipelines with Beam on FlinkAljoscha Krettek
 
Presentation on angular 5
Presentation on angular 5Presentation on angular 5
Presentation on angular 5Ramesh Adhikari
 
Introduction to Structured Streaming
Introduction to Structured StreamingIntroduction to Structured Streaming
Introduction to Structured StreamingKnoldus Inc.
 
Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Ido Flatow
 
2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with VoltaDaniel Fisher
 
Vijay Oscon
Vijay OsconVijay Oscon
Vijay Osconvijayrvr
 
Probe Debugging
Probe DebuggingProbe Debugging
Probe DebuggingESUG
 
How to double .net code value
How to double .net code valueHow to double .net code value
How to double .net code valuejavOnet
 
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...Talk Python To Me: Stream Processing in your favourite Language with Beam on ...
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...Aljoscha Krettek
 
Module design pattern i.e. express js
Module design pattern i.e. express jsModule design pattern i.e. express js
Module design pattern i.e. express jsAhmed Assaf
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldAmazon Web Services
 

Similar a OpenDaylight and YANG (20)

Angular for Java Enterprise Developers: Oracle Code One 2018
Angular for Java Enterprise Developers: Oracle Code One 2018Angular for Java Enterprise Developers: Oracle Code One 2018
Angular for Java Enterprise Developers: Oracle Code One 2018
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
 
Effective JavaFX architecture with FxObjects
Effective JavaFX architecture with FxObjectsEffective JavaFX architecture with FxObjects
Effective JavaFX architecture with FxObjects
 
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's Next
 
Python Streaming Pipelines with Beam on Flink
Python Streaming Pipelines with Beam on FlinkPython Streaming Pipelines with Beam on Flink
Python Streaming Pipelines with Beam on Flink
 
Presentation on angular 5
Presentation on angular 5Presentation on angular 5
Presentation on angular 5
 
Introduction to Structured Streaming
Introduction to Structured StreamingIntroduction to Structured Streaming
Introduction to Structured Streaming
 
Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6
 
2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta
 
Angular 9
Angular 9 Angular 9
Angular 9
 
Vijay Oscon
Vijay OsconVijay Oscon
Vijay Oscon
 
Jdbc
JdbcJdbc
Jdbc
 
Probe Debugging
Probe DebuggingProbe Debugging
Probe Debugging
 
Revealing C# 5
Revealing C# 5Revealing C# 5
Revealing C# 5
 
How to double .net code value
How to double .net code valueHow to double .net code value
How to double .net code value
 
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...Talk Python To Me: Stream Processing in your favourite Language with Beam on ...
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...
 
Module design pattern i.e. express js
Module design pattern i.e. express jsModule design pattern i.e. express js
Module design pattern i.e. express js
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless World
 
A4 from rad to mvc
A4 from rad to mvcA4 from rad to mvc
A4 from rad to mvc
 

Más de CoreStack

How hybrid/multi-cloud governance platform benefits your cloud strategy
How hybrid/multi-cloud governance platform benefits your cloud strategy How hybrid/multi-cloud governance platform benefits your cloud strategy
How hybrid/multi-cloud governance platform benefits your cloud strategy CoreStack
 
Corestack Multi-Cloud Management
Corestack Multi-Cloud ManagementCorestack Multi-Cloud Management
Corestack Multi-Cloud ManagementCoreStack
 
Cloudenablers profile
Cloudenablers profileCloudenablers profile
Cloudenablers profileCoreStack
 
Schedule based network orchestration using opendaylight
Schedule based network orchestration using opendaylightSchedule based network orchestration using opendaylight
Schedule based network orchestration using opendaylightCoreStack
 
Accelerating Devops using Corestack
Accelerating Devops using CorestackAccelerating Devops using Corestack
Accelerating Devops using CorestackCoreStack
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to AnsibleCoreStack
 
Introduction to SDN and NFV
Introduction to SDN and NFVIntroduction to SDN and NFV
Introduction to SDN and NFVCoreStack
 
Getting started with YANG
Getting started with YANGGetting started with YANG
Getting started with YANGCoreStack
 
Cloudenablers startup deck
Cloudenablers   startup deckCloudenablers   startup deck
Cloudenablers startup deckCoreStack
 
Openstack heat & How Autoscaling works
Openstack heat & How Autoscaling worksOpenstack heat & How Autoscaling works
Openstack heat & How Autoscaling worksCoreStack
 
Federation of OpenStack clouds
Federation of OpenStack cloudsFederation of OpenStack clouds
Federation of OpenStack cloudsCoreStack
 
Extending Openstack Horizon for multi cloud management
Extending Openstack Horizon for multi cloud managementExtending Openstack Horizon for multi cloud management
Extending Openstack Horizon for multi cloud managementCoreStack
 

Más de CoreStack (12)

How hybrid/multi-cloud governance platform benefits your cloud strategy
How hybrid/multi-cloud governance platform benefits your cloud strategy How hybrid/multi-cloud governance platform benefits your cloud strategy
How hybrid/multi-cloud governance platform benefits your cloud strategy
 
Corestack Multi-Cloud Management
Corestack Multi-Cloud ManagementCorestack Multi-Cloud Management
Corestack Multi-Cloud Management
 
Cloudenablers profile
Cloudenablers profileCloudenablers profile
Cloudenablers profile
 
Schedule based network orchestration using opendaylight
Schedule based network orchestration using opendaylightSchedule based network orchestration using opendaylight
Schedule based network orchestration using opendaylight
 
Accelerating Devops using Corestack
Accelerating Devops using CorestackAccelerating Devops using Corestack
Accelerating Devops using Corestack
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
Introduction to SDN and NFV
Introduction to SDN and NFVIntroduction to SDN and NFV
Introduction to SDN and NFV
 
Getting started with YANG
Getting started with YANGGetting started with YANG
Getting started with YANG
 
Cloudenablers startup deck
Cloudenablers   startup deckCloudenablers   startup deck
Cloudenablers startup deck
 
Openstack heat & How Autoscaling works
Openstack heat & How Autoscaling worksOpenstack heat & How Autoscaling works
Openstack heat & How Autoscaling works
 
Federation of OpenStack clouds
Federation of OpenStack cloudsFederation of OpenStack clouds
Federation of OpenStack clouds
 
Extending Openstack Horizon for multi cloud management
Extending Openstack Horizon for multi cloud managementExtending Openstack Horizon for multi cloud management
Extending Openstack Horizon for multi cloud management
 

Último

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...masabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsBert Jan Schrijver
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 

Último (20)

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

OpenDaylight and YANG

  • 1. Automate | Orchestrate | Remediate OpenDaylight and YANG A northbound perspective ...
  • 2. SDN is the physical separation of the network control plane from the forwarding plane and where the control plane controls several devices. So what should this control plane (SDN Controller) be?The SDN A platform for deploying SDN applications Provide (or be associated with) an SDN application development environment
  • 3. SDN Controller: Platform Requirements Flexibility Accommodate a variety of diverse applications Controller applications SHOULD use a common framework and programming model and provide consistent APIs to their client Scale the development process: No infrastructure code hotspots Independent development of controller applications & short integration times Run-time Extensibility and Modularity: Load new protocol and service/application plugins at run-time. Adapt to data schemas (models) discovered in the network Performance & Scale
  • 4. SDN Controller: App Development Requirements A DSL for modeling to describe internal and external system behavior Modeling tools for the controller aligned with modeling tools for devices Code generation from models: Enforce standard API contracts Generate boilerplate code performing repetitive and error-prone tasks Produce functionally equivalent APIs for different language bindings Model-to-model adaptations for services and devices Consumption of aligned device models In the OpenDaylight Project, these requirements are satisfied with YANG (and YANG extensions) and via the YANG tool-chain, manifested in the MD-SAL
  • 6. YANG models defined in MD-SAL help in generating the bindings for the RESTCONF and the south-bound plugins OpenDaylight Software Architecture
  • 7. MD-SAL Overview • Model Driven Service Abstraction Layer (MD-SAL) is the core of Opendaylight project which helps in connecting between different layer & modules through well defined API • The MD-SAL uses YANG as the modeling language for both interface and data definitions, and provides a messaging and data-centric runtime for such services based on YANG modelling • YANG tools is used to compile YANG template and generate Java classes/interfaces and automatically build REST API doc explorer.
  • 8. Yangtools Generates Java code from YANG Provides ‘codecs’ to convert Generated Java classes to DOM DOM to various formats XML JSON Etc. Codecs make possible automatic: RESTCONF NETCONF AMQP Other bindings
  • 9. YANG → Java … why? Immutable: to avoid thread contention Strongly typed: reduce coding errors Consistent: reduce learning curve Improvable – generation can be improved and all DTOs get those improvements immediately system wide Automated Bindings: restconf – xml and json netconf amqp and xmpp – on the horizon Runtime Generatable Consistent Data Transfer Objects (DTOs) everywhere
  • 10. MD-SAL: Model-Driven Service Abstraction Layer
  • 12. MD-SAL – The 3 Brokers
  • 15. Yang to Java Example - typedef 15 Yang Java public class BridgeName implements Serializable { private final String _value; @ConstructorProperties("value") public BridgeName(String _value) { … } public BridgeName(BridgeName source) { this._value = source._value; } public String getValue() { return _value; } … } typedef bridge-name { type string; }
  • 16. Yang to Java Example - grouping 16 Yang Java public interface BridgeAttributes extends DataObject { BridgeName getBridgeName(); … } grouping bridge-attributes { leaf bridge-name { type bridge-name; } … }
  • 17. Yang to Java Eg - container - interface 17 Yang Java public interface ConnectionInfo extends Augmentable<ConnectionInfo>, ConnectionInfoAttributes { } container connection-info { uses connection-info-attributes; }
  • 18. Yang to Java Eg - container - builder 18 Yang Java public class ConnectionInfoBuilder implements Builder <ConnectionInfo> { /* fields */ public void setRemoteIp(IpAddress value) … public IpAddress getRemoteIp() … public ConnectionInfo build() { return new ConnectionInfoImpl(this); } } container connection-info { uses connection-info-attributes; }
  • 19. Yang to Java Example - list - interface 19 Yang Java public interface ControllerEntry extends Augmentable<ControllerEntry>, Identifiable<ControllerEntryKey> { Uri getTarget(); ControllerEntryKey getKey(); … } list controller-entry { key “target” leaf target { type inet:uri; } }
  • 20. Yang to Java Example - list - builder 20 Yang Java public class ControllerEntryBuilder implements Builder <ControllerEntry> { /* fields */ public ControllerEntryBuilder setTarget(Uri value) { … } … public Uri getTarget(Uri value) {…} ControllerEntryKey getKey() {…} … public ControllerEntry build() { return new ControllerEntryImpl(this); } … } list controller-entry { key “target” leaf target { type inet:uri; } }
  • 21. Yang to Java Eg. - rpc service interface 21 Yang Java public interface HelloService extends RpcService { Future<RpcResult<HelloWorldOutput>> helloWorld( HelloWorldInput input); } rpc hello-world { input { leaf name { type string; } } output { leaf greating { type string; } } }
  • 22. Yang to Java Eg. - rpc - input interface 22 Yang Java public interface HelloWorldInput extends DataObject, Augmentable<HelloWorldInput> { String getName(); } rpc hello-world { input { leaf name { type string; } } output { leaf greating { type string; } } }
  • 23. Yang to Java Example - rpc – input builder 23 Yang Java public class HelloWorldInputBuilder implements Builder <HelloWorldInput> { /* fields */ public HelloWorldInputBuilder setName(String value) { this._name = value; return this; } public HelloWorldInput build() { return new HelloWorldInputImpl(this); } … } rpc hello-world { input { leaf name { type string; } } output { leaf greating { type string; } } }
  • 24. Yang to Java Eg. - rpc - output interface 24 Yang Java public interface HelloWorldOutput extends DataObject, Augmentable<HelloWorldOutput> { String getGreating(); } rpc hello-world { input { leaf name { type string; } } output { leaf greating { type string; } } }
  • 25. Yang to Java Eg. - rpc - output builder 25 Yang Java public class HelloWorldOutputBuilder implements Builder <HelloWorldOutput> { /* fields */ public HelloWorldOutputBuilder setName(String value) { this._name = value; return this; } public HelloWorldOutput build() { return new HelloWorldOutputImpl(this); } … } rpc hello-world { input { leaf name { type string; } } output { leaf greating { type string; } } }
  • 26. Yang to Java Eg. - notification - interface 26 Yang Java public interface RandomGreetingNotification extends ChildOf<DataObject>, Augmentable<RandomGreetingNotification>, Notification { String getRandomGreeting(); } notification random-greeting-notification { leaf random-greeting { type string; } }
  • 27. Yang to Java Example - notification - builder 27 Yang Java public class RandomGreetingNotificationBuilder implements Builder<RandomGreetingNotification> { public RandomGreetingNotificationBuilder setRandomGreeting(String value) { this._randomGreeting = value; return this; } public RandomGreetingNotification build() { return new RandomGreetingNotificationImpl(this); } … } notification random-greeting-notification { leaf random-greeting { type string; } }
  • 28. 28 Thank You Connect with us@ Email: Sabapathy@cloudenablers.com dvinod@Cloudenablers.com LinkedIn: http://in.linkedin.com/in/arsabapathy Twitter: https://twitter.com/arsabapathy