SlideShare a Scribd company logo
1 of 46
Download to read offline
Krzysztof Mazepa
Consulting Systems Engineer
26 września 2017, Krakow
Yang Development Kit
– stwórz swój pierwszy program
obsługujący urządzenia Cisco
IOS XR/XE (i nie tylko) dzięki
ułatwieniom jakie oferuje YDK.
ydk.io
• Wprowadzenie
• Data Models
• Management Protocols
• Model-Driven APIs
• Demonstration
• Resources
• Conclusion
Agenda
Większość materiałów w tej prezentacji pochodzi z sesji Santiago Alvarez’a
BRKSPG-2303 Model-driven programmability for Cisco IOS XR.pdf
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 3
Motivations for Network Programmability
• Speed and scale demand software
automation and data analytics
• Rapid innovation as competitive
advantage
• One network operator per 1000s /
10000s of complex network devices
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 4
Controller
Orchestrator
Controller
Orchestrator
Device Programmability
Data Plane
Control Plane
Management Plane
App
Controller
Orchestrator
Data Plane
Control Plane
App
Data Plane
App
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 5
Model-Driven Programmability Stack
Encoding XML JSON GPB
Protocol NETCONF gRPCRESTCONF
Models
APIs
Apps
Model-Driven APIs
YANG Development Kit (YDK)
YANG Models
(native, open)
App App App
SSH HTTPTransport
Model-Driven
Configuration
Model-Driven
Telemetry
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 6
Benefits of Model-Driven Programmability
• Model based, structured, computer
friendly
• Multiple model types (native,
OpenConfig, IETF, etc.)
• Models decoupled from transport,
protocol end encoding
• Choice of transport, protocol and
encoding
• Model-driven APIs for abstraction and
simplification
• Wide standard support while leveraging
open source
Data Models
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 8
Data Models
• Data (config and operational) and actions
(RPCs) in a tree structure
• Self-documented and shipped with devices
• Cisco IOS XR supports ~300 YANG
models (native and open) in release 6.2.1
• OpenConfig support includes BGP, routing
policy, interfaces, MPLS, telemetry, VLAN,
platform, RIB, local routing and terminal
device
• Native models provide most coverage
• OpenConfig and IETF models are mapped
to native models
Native / Common OpenConfig / IETF
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 9
Cisco IOS XR Native Data Models
• Provide most comprehensive coverage for device functionality
• Approximately ~300 models in XR 6.2.1 (700+ YANG files)
• A single model defines either configuration (cfg), operational state (oper) or an
action (act)
• Cisco-IOS-XR-ipv4-bgp-cfg.yang
• Cisco-IOS-XR-ipv4-bgp-oper.yang
• Cisco-IOS-XR-ipv4-bgp-act.yang
• Models posted at
• https://github.com/YangModels/yang/tree/master/vendor/cisco/xr
• https://github.com/YangModels/yang/tree/master/vendor/cisco/xe
• https://github.com/YangModels/yang/tree/master/vendor/cisco/nx
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 10
OpenConfig Data Models
• Operator group pursuing more dynamic and programmable networks
• Currently focused on vendor-neutral data models (YANG)
• Models designed by operators for operators
• Model coverage still limited, but model development rapidly evolving
• IOS XR 6.2.1 supports
• BGP, routing policy, RIB, local routing
• Interfaces, VLAN
• MPLS
• Telemetry
• Platform
• Terminal device (optical)
• Other new models in active development
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 11
Native vs Open Data Models
• Native data models provide most
configuration and operational
coverage
• Open models mapped to native data
models
• Departures from open models
specified as deviation module
Native Model
Open
Model
Native device
config/oper
data
Mapped
config/oper
data
Deviations
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 12
Native Data Models
Model Mapping
Open Data Models
Internal Datastore
Management Protocol
Model-Driven APIs
YANG Development Kit (YDK)
Open Model Mapping in IOS XR
• Model mapping converts open model
data to native model data and vice
versa
• Support for mapping config and
operational data (including telemetry)
• Single view of config and operational
data in internal datastore
• Planning to enable user defined
mapping (Model Mapping SDK)
Reference slide
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 13
YANG
• Modeling language for networking
• Defines data hierarchy (config or oper) and
RPCs
• Main node types
• Leaf – node with name, type and value (no
children)
• Leaf list – sequence of leafs (no children)
• Container – node that groups nodes and has
no type or value
• List – Series of data instances generally with
one or more keys
• Models extended through augmentations
• Unsupported nodes specified as deviations
Leaf
Node without type/value
Node with a type/value
Leaf list
Container List
key
Reference slide
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 14
YANG Model Example
container community-sets {
description “Container for community sets";
list community-set {
key community-set-name;
description "Definitions for community sets";
leaf community-set-name {
type string;
description "name of the community set";
}
leaf-list community-member {
type string {
pattern '([0-9]+:[0-9]+)';
}
description "members of the community set";
}
}
}
community-sets
community-set C-SET1
65172:1,
65172:2,
65172:3
!
community-set C-SET10
65172:10,
65172:20,
65172:30
!
!
YANG CLI
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 15
Model Data Example
<community-sets>
<community-set>
<community-set-name>C-SET1</community-set-name>
<community-member>65172:1</community-member>
<community-member>65172:2</community-member>
<community-member>65172:3</community-member>
</community-set>
<community-set>
<community-set-name>C-SET10</community-set-name>
<community-member>65172:10</community-member>
<community-member>65172:20</community-member>
<community-member>65172:30</community-member>
</community-set>
</community-sets>
community-sets
community-set C-SET1
65172:1,
65172:2,
65172:3
!
community-set C-SET10
65172:10,
65172:20,
65172:30
!
!
XML CLI
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 16
Model Data Example
community-sets
community-set C-SET1
65172:1,
65172:2,
65172:3
!
community-set C-SET10
65172:10,
65172:20,
65172:30
!
!
{ "community-sets": {
"community-set": [
{ "community-set-name": "CSET1",
"community-member": [
"65172:1",
"65172:2",
"65172:3" ]
},
{ "community-set-name": "CSET10",
"community-member": [
"65172:10",
"65172:20",
"65172:30" ]
}
]
}
}
JSON CLI
Reference slide
Management Protocols
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 18
XML
NETCONF
NETCONF Protocol Overview
• Rich functionality to manage configuration
and operational (state) data
• Operations defined as RPCs (request /
reply) in XML
• Client/app initiate request towards
server/device
• Supports running, candidate and startup
configurations
• Capability exchange during session
initiation
18
YANG
SSH
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 19
Main NETCONF Protocol Operations
Operation Description
get-config Retrieve all or part of a specified configuration
edit-config
Loads all or part of a specified
configuration (merge, replace, create, delete,
remove)
copy-config Create or replace an entire configuration datastore
get
Retrieve all or part of running configuration and device
operational data
get-schema Retrieve device schema (model)
lock Lock entire configuration datastore (e.g. candidate)
unlock
Remove lock on entire configuration datastore (e.g.
candidate)
close-session Request graceful session termination
Reference slide
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 20
NETCONF Edit-Config Operations
Operation Description
Merge Merge configuration with existing configuration (default)
Replace Replace configuration with existing configuration
Create
Create configuration if non-existent. Otherwise, return
error. (non-idempotent*)
Delete
Delete configuration if non-existent. Otherwise, return
error. (non-idempotent)
Remove
Remove configuration. Ignore if configuration non-
existent.
* Cannot be applied multiple times without changing the result beyond the initial application
Reference slide
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 21
Cisco gRPC
CLIJSON
YANG
HTTP/2
Overview of gRPC on Cisco IOS XR
• Google RPC provides a general
(open source) RPC framework
• Interface definition in Cisco IOS XR
specifies device operations
• Functional subset of NETCONF
• Simple client development
• High performance
21
Reference slide
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 22
Protocol Operations in Cisco IDL
Operation Description
GetConfig Retrieve configuration
MergeConfig Merge configuration
DeleteConfig Delete configuration
ReplaceConfig Replace configuration
CommitReplace Replace entire configuration
GetOper Retrieve operational data
CliConfig Merge configuration data in CLI format
ShowCmdTextOutput Retrieves CLI show-command output data
Reference slide
Model-Driven APIs
ydk.io
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 24
Model-Driven APIs
• Simplify app development
• One-to-one correspondence between
model and class hierarchy
• Abstract protocol, transport, encoding,
modeling language
• API generated from YANG model
• Rich data validation
• Multi-language (Python, C++, Ruby,
Go, etc.)
YANG Model
Class Hierarchy
(Python, C++, Go)
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 25
YANG Development Kit
Services
Providers
Cisco
IOS XR
Models
OpenConfig
Models
IETF
Models
Services
Providers
YDK-Py
Python
YDK-Cpp
C++
Cisco
IOS XE
Models
Cisco
IOS XR
Models
OpenConfig
Models
IETF
Models
Cisco
IOS XE
Models
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 26
YDK API Structure
• Models group Python APIs created for
each YANG model
• Services perform operations on
model objects (interface)
• Providers implement services
(implementation)
26
Models
(BGP, IS-IS, etc)
Services
(CRUD, NETCONF, Codec, Executor, etc.)
Providers
(NETCONF, Codec, etc.)
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 27
Reference slide
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 28
Reference slide
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 29
Reference slide
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 30
Reference slide
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 31
Reference slide
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 32
YDK Client-Side Validation
• Client will automatically perform local
validation based on model constraints
• Check between type of data: config (read-
write) and state (read-only)
• Type check (enum, string, etc.)
• Value check (range, pattern, etc.)
• Semantic check (key
uniqueness/presence, mandatory leafs,
etc.)
• Model deviation check (unsupported leafs,
etc.)
Application
(client)
Device
(server)
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 33
A YDK-Py “Hello World” Using OpenConfig BGP
# Cisco YDK-Py OC-BGP “Hello world”
from ydk.services import CRUDService
from ydk.providers import NetconfServiceProvider
from ydk.models.openconfig import openconfig_bgp as oc_bgp
if __name__ == "__main__":
provider = NetconfServiceProvider(address=10.0.0.1,
port=830,
username=“admin”,
password=“admin”,
protocol=“ssh”)
crud = CRUDService() # create CRUD service
bgp = oc_bgp.Bgp() # create oc-bgp object
bgp.global_.config.as_ = 65000 # set local AS number
crud.create(provider, bgp) # create on NETCONF device
provider.close()
exit()
# End of script
module: openconfig-bgp
+--rw bgp
+--rw global
| +--rw config
| | +--rw as
| | +--rw router-id?
| +--ro state
| | +--ro as
| | +--ro router-id?
| | +--ro total-paths?
| | +--ro total-prefixes?
...
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 34
How to Get YDK-Py
Native Virtual Cloud
Install Python
Install YDK
Download ydk-py-samples
Install Vagrant
Install Virtualbox
Download ydk-py-samples
YANG Development Kit Sandbox
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 35
CRUD service
NETCONF provider
NETCONF
service
Codec service
deviations
Service
improvements
Better
error
handling
Bundles
(core, XR,
OC, IETF)
YDK Releases
C++
support
Bundle
updates0.3.0
Mar 2016
0.4.0
Apr 2016
0.4.1
May 2016
0.4.2
Jun 2016
0.5.0
Aug 2016
https://github.com/CiscoDevNet/ydk-gen/releases
Python 3
Bundle
updates
0.5.1
Oct 2016
0.5.2
Dec 2016
0.5.3
Jan 2017
RESTCONF
OpenDaylight
0.5.4
Mar 2017
0.5.5
Jun 2017
PyPi install
Bundle
updates
IOS XE
bundle
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 36
• Path API
• Additional providers (e.g. Google RPC, Cisco NSO)
• Additional services (e.g. Google RPC)
• Additional languages (e.g. Go, etc)
• Additional encodings (e.g. YAML, GPB)
• Telemetry support
• Model-mapping support
Future Work Items
Demo
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 38
Testbed Topology (dCloud)
R2R1
Out-of-band
network
lo0
172.16.255.1/32
g0/0/0/0
172.16.1.0/31
lo0
172.16.255.2/32
IS-IS L2 (Area 49.0001)
198.18.1.127/24 s
198.18.1.12/24
g0/0/0/0
172.16.1.1/31
198.18.1.11/24
NETCONF NETCONF
YDK App
Controller
Resources
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 40
Resources
Model-driven programmability @ Cloud-Scale Networking
• Model-Driven Programmability (http://goo.gl/x3GZDB)
Programmability @ XR Docs
• Tutorials (https://xrdocs.github.io/programmability/tutorials)
• Blogs (https://xrdocs.github.io/programmability/blogs)
Configuration guide
• Cisco IOS XR programmability configuration guide for ASR 9000 series router (http://goo.gl/8dYUeK)
• Cisco IOS XR programmability configuration guide for NCS 5500 series router (http://goo.gl/cnYPw7)
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 41
Resources
YDK Portal
• YDK at DevNet (http://ydk.io)
YDK Sample Apps
• YDK-Py sample apps (https://github.com/CiscoDevNet/ydk-py-samples) - Over 700 apps!
• YDK-Cpp sample apps (https://github.com/CiscoDevNet/ydk-cpp-samples ) - Coming soon
Sandboxes
• dCloud YANG Development Kit sandbox (https://goo.gl/RPpBvL)
• Ubuntu YDK Vagrant box (https://git.io/vaw1U)
Support
• Cisco support community (https://communities.cisco.com/community/developer/ydk)
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 42
Resources (cont.)
YDK Documentation
• YDK-Py docs (http://ydk.cisco.com/py/docs)
• YDK-Cpp docs (http://ydk.cisco.com/cpp/docs)
GitHub
• YDK Python API – YDK-Py (https://git.io/vaWsg)
• YDK-Py sample apps (https://git.io/vaw1U)
• YDK C++ API – YDK-Cpp (https://git.io/v1Cst) - alpha
• YDK-Cpp sample apps (https://git.io/v14Qh) - coming soon
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 43
Resources (cont.)
Conferences
• CiscoLive 2017 Las Vegas - BRKSPG-2303 Model-driven programmability for Cisco IOS
XR (www.ciscolive365.com)
• NANOG 68: Ok, We Got YANG Data Models. Now What? (http://youtu.be/2oqkiZ83vAA )
• LinuxCon NA 2016: Simplifying Network Programmability Using Model-Driven APIs
(https://goo.gl/W6tH2X)
Conclusion
© 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 45
• Model-Driven Programmability
• Speed and scale through
automation
• Rich and flexible in terms of
models, transports and encodings
• NETCONF
• Rich, mature protocol
• Relies on XML encoding
• Google RPC
• Cisco interface definition (device
operations)
• Supports JSON and unstructured data
(CLI)
• High performance
• Model-Driven APIs
• Simplify app development
• Abstract transport and encoding
Let’s Recap
Dziękuję za uwagę

More Related Content

What's hot

20190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev220190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev2Ivan Ma
 
MySQL 8.0 InnoDB Cluster demo
MySQL 8.0 InnoDB Cluster demoMySQL 8.0 InnoDB Cluster demo
MySQL 8.0 InnoDB Cluster demoKeith Hollman
 
Upcoming changes in MySQL 5.7
Upcoming changes in MySQL 5.7Upcoming changes in MySQL 5.7
Upcoming changes in MySQL 5.7Morgan Tocker
 
MySQL 8.0 Released Update
MySQL 8.0 Released UpdateMySQL 8.0 Released Update
MySQL 8.0 Released UpdateKeith Hollman
 
MySQL Tech Tour 2015 - 5.7 InnoDB
MySQL Tech Tour 2015 - 5.7 InnoDBMySQL Tech Tour 2015 - 5.7 InnoDB
MySQL Tech Tour 2015 - 5.7 InnoDBMark Swarbrick
 
From Nice to Have to Mission Critical: MySQL Enterprise Edition
From Nice to Have to Mission Critical: MySQL Enterprise EditionFrom Nice to Have to Mission Critical: MySQL Enterprise Edition
From Nice to Have to Mission Critical: MySQL Enterprise Edition郁萍 王
 
MySQL Technology Overview
MySQL Technology OverviewMySQL Technology Overview
MySQL Technology OverviewKeith Hollman
 
MySQL Tech Tour 2015 - 5.7 Whats new
MySQL Tech Tour 2015 - 5.7 Whats newMySQL Tech Tour 2015 - 5.7 Whats new
MySQL Tech Tour 2015 - 5.7 Whats newMark Swarbrick
 
Oracle Cloud Infrastructure – Compute
Oracle Cloud Infrastructure – ComputeOracle Cloud Infrastructure – Compute
Oracle Cloud Infrastructure – ComputeMarketingArrowECS_CZ
 
Node.js and the MySQL Document Store
Node.js and the MySQL Document StoreNode.js and the MySQL Document Store
Node.js and the MySQL Document StoreRui Quelhas
 
MySQL For Linux Sysadmins
MySQL For Linux SysadminsMySQL For Linux Sysadmins
MySQL For Linux SysadminsMorgan Tocker
 
MySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPIMySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPIRui Quelhas
 
The latest with MySql on OpenStack Trove
The latest with MySql on OpenStack TroveThe latest with MySql on OpenStack Trove
The latest with MySql on OpenStack TroveTesora
 
[db tech showcase Tokyo 2015] C16:Oracle Disaster Recovery at New Zealand sto...
[db tech showcase Tokyo 2015] C16:Oracle Disaster Recovery at New Zealand sto...[db tech showcase Tokyo 2015] C16:Oracle Disaster Recovery at New Zealand sto...
[db tech showcase Tokyo 2015] C16:Oracle Disaster Recovery at New Zealand sto...Insight Technology, Inc.
 
MySQL Innovation: from 5.7 to 8.0
MySQL Innovation:  from 5.7 to 8.0MySQL Innovation:  from 5.7 to 8.0
MySQL Innovation: from 5.7 to 8.0Frederic Descamps
 
MySQL Community Meetup in China : Innovation driven by the Community
MySQL Community Meetup in China : Innovation driven by the CommunityMySQL Community Meetup in China : Innovation driven by the Community
MySQL Community Meetup in China : Innovation driven by the CommunityFrederic Descamps
 
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...Dave Stokes
 
Develop Python Applications with MySQL Connector/Python
Develop Python Applications with MySQL Connector/PythonDevelop Python Applications with MySQL Connector/Python
Develop Python Applications with MySQL Connector/PythonJesper Wisborg Krogh
 
Introduction to MySQL Document Store
Introduction to MySQL Document StoreIntroduction to MySQL Document Store
Introduction to MySQL Document StoreFrederic Descamps
 
MySQL Performance Tuning 101
MySQL Performance Tuning 101MySQL Performance Tuning 101
MySQL Performance Tuning 101Mirko Ortensi
 

What's hot (20)

20190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev220190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev2
 
MySQL 8.0 InnoDB Cluster demo
MySQL 8.0 InnoDB Cluster demoMySQL 8.0 InnoDB Cluster demo
MySQL 8.0 InnoDB Cluster demo
 
Upcoming changes in MySQL 5.7
Upcoming changes in MySQL 5.7Upcoming changes in MySQL 5.7
Upcoming changes in MySQL 5.7
 
MySQL 8.0 Released Update
MySQL 8.0 Released UpdateMySQL 8.0 Released Update
MySQL 8.0 Released Update
 
MySQL Tech Tour 2015 - 5.7 InnoDB
MySQL Tech Tour 2015 - 5.7 InnoDBMySQL Tech Tour 2015 - 5.7 InnoDB
MySQL Tech Tour 2015 - 5.7 InnoDB
 
From Nice to Have to Mission Critical: MySQL Enterprise Edition
From Nice to Have to Mission Critical: MySQL Enterprise EditionFrom Nice to Have to Mission Critical: MySQL Enterprise Edition
From Nice to Have to Mission Critical: MySQL Enterprise Edition
 
MySQL Technology Overview
MySQL Technology OverviewMySQL Technology Overview
MySQL Technology Overview
 
MySQL Tech Tour 2015 - 5.7 Whats new
MySQL Tech Tour 2015 - 5.7 Whats newMySQL Tech Tour 2015 - 5.7 Whats new
MySQL Tech Tour 2015 - 5.7 Whats new
 
Oracle Cloud Infrastructure – Compute
Oracle Cloud Infrastructure – ComputeOracle Cloud Infrastructure – Compute
Oracle Cloud Infrastructure – Compute
 
Node.js and the MySQL Document Store
Node.js and the MySQL Document StoreNode.js and the MySQL Document Store
Node.js and the MySQL Document Store
 
MySQL For Linux Sysadmins
MySQL For Linux SysadminsMySQL For Linux Sysadmins
MySQL For Linux Sysadmins
 
MySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPIMySQL Connector/Node.js and the X DevAPI
MySQL Connector/Node.js and the X DevAPI
 
The latest with MySql on OpenStack Trove
The latest with MySql on OpenStack TroveThe latest with MySql on OpenStack Trove
The latest with MySql on OpenStack Trove
 
[db tech showcase Tokyo 2015] C16:Oracle Disaster Recovery at New Zealand sto...
[db tech showcase Tokyo 2015] C16:Oracle Disaster Recovery at New Zealand sto...[db tech showcase Tokyo 2015] C16:Oracle Disaster Recovery at New Zealand sto...
[db tech showcase Tokyo 2015] C16:Oracle Disaster Recovery at New Zealand sto...
 
MySQL Innovation: from 5.7 to 8.0
MySQL Innovation:  from 5.7 to 8.0MySQL Innovation:  from 5.7 to 8.0
MySQL Innovation: from 5.7 to 8.0
 
MySQL Community Meetup in China : Innovation driven by the Community
MySQL Community Meetup in China : Innovation driven by the CommunityMySQL Community Meetup in China : Innovation driven by the Community
MySQL Community Meetup in China : Innovation driven by the Community
 
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
 
Develop Python Applications with MySQL Connector/Python
Develop Python Applications with MySQL Connector/PythonDevelop Python Applications with MySQL Connector/Python
Develop Python Applications with MySQL Connector/Python
 
Introduction to MySQL Document Store
Introduction to MySQL Document StoreIntroduction to MySQL Document Store
Introduction to MySQL Document Store
 
MySQL Performance Tuning 101
MySQL Performance Tuning 101MySQL Performance Tuning 101
MySQL Performance Tuning 101
 

Similar to PLNOG19 - Krzysztof Mazepa - Yang Development Kit – stwórz swój pierwszy program obsługujący urządzenia Cisco IOS XR/XE dzięki ułatwieniom jakie oferuje YDK

Cisco Connect Toronto 2018 model-driven programmability for cisco ios xr-v1
Cisco Connect Toronto 2018   model-driven programmability for cisco ios xr-v1Cisco Connect Toronto 2018   model-driven programmability for cisco ios xr-v1
Cisco Connect Toronto 2018 model-driven programmability for cisco ios xr-v1Cisco Canada
 
Cisco connect montreal 2018 saalvare md-program-xr-v2
Cisco connect montreal 2018 saalvare md-program-xr-v2Cisco connect montreal 2018 saalvare md-program-xr-v2
Cisco connect montreal 2018 saalvare md-program-xr-v2Cisco Canada
 
Cisco's Open Device Programmability Strategy: Open Discussion
Cisco's Open Device Programmability Strategy: Open DiscussionCisco's Open Device Programmability Strategy: Open Discussion
Cisco's Open Device Programmability Strategy: Open DiscussionCisco 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
 
Devicemgmt
DevicemgmtDevicemgmt
Devicemgmtxyxz
 
Neo4j Vision and Roadmap
Neo4j Vision and Roadmap Neo4j Vision and Roadmap
Neo4j Vision and Roadmap Neo4j
 
Elastic Cloud Enterprise @ Cisco
Elastic Cloud Enterprise @ CiscoElastic Cloud Enterprise @ Cisco
Elastic Cloud Enterprise @ CiscoElasticsearch
 
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław Borek
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław BorekPLNOG14: Service orchestration in provider network, Tail-f - Przemysław Borek
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław BorekPROIDEA
 
MySQL 8.0 in a nutshell
MySQL 8.0 in a nutshellMySQL 8.0 in a nutshell
MySQL 8.0 in a nutshellOracleMySQL
 
State ofdolphin short
State ofdolphin shortState ofdolphin short
State ofdolphin shortMandy Ang
 
AnsibleFest London 2016 - managing your cisco datacenter network with ansible
AnsibleFest London 2016 - managing your cisco datacenter network with ansibleAnsibleFest London 2016 - managing your cisco datacenter network with ansible
AnsibleFest London 2016 - managing your cisco datacenter network with ansiblefmaccioni
 
Managing Your Cisco Datacenter Network with Ansible
Managing Your Cisco Datacenter Network with AnsibleManaging Your Cisco Datacenter Network with Ansible
Managing Your Cisco Datacenter Network with Ansiblefmaccioni
 
Super-NetOps Source of Truth
Super-NetOps Source of TruthSuper-NetOps Source of Truth
Super-NetOps Source of TruthJoel W. King
 
Enterprise guide to building a Data Mesh
Enterprise guide to building a Data MeshEnterprise guide to building a Data Mesh
Enterprise guide to building a Data MeshSion Smith
 
One tool, two fabrics: Ansible and Nexus 9000
One tool, two fabrics: Ansible and Nexus 9000One tool, two fabrics: Ansible and Nexus 9000
One tool, two fabrics: Ansible and Nexus 9000Joel W. King
 
Gain Insight and Programmability with Cisco DC Networking
Gain Insight and Programmability with Cisco DC NetworkingGain Insight and Programmability with Cisco DC Networking
Gain Insight and Programmability with Cisco DC NetworkingCisco Canada
 
Better Network Management Through Network Programmability
Better Network Management Through Network ProgrammabilityBetter Network Management Through Network Programmability
Better Network Management Through Network ProgrammabilityCisco Canada
 

Similar to PLNOG19 - Krzysztof Mazepa - Yang Development Kit – stwórz swój pierwszy program obsługujący urządzenia Cisco IOS XR/XE dzięki ułatwieniom jakie oferuje YDK (20)

Cisco Connect Toronto 2018 model-driven programmability for cisco ios xr-v1
Cisco Connect Toronto 2018   model-driven programmability for cisco ios xr-v1Cisco Connect Toronto 2018   model-driven programmability for cisco ios xr-v1
Cisco Connect Toronto 2018 model-driven programmability for cisco ios xr-v1
 
Cisco connect montreal 2018 saalvare md-program-xr-v2
Cisco connect montreal 2018 saalvare md-program-xr-v2Cisco connect montreal 2018 saalvare md-program-xr-v2
Cisco connect montreal 2018 saalvare md-program-xr-v2
 
Cisco's Open Device Programmability Strategy: Open Discussion
Cisco's Open Device Programmability Strategy: Open DiscussionCisco's Open Device Programmability Strategy: Open Discussion
Cisco's Open Device Programmability Strategy: Open Discussion
 
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)
 
SDN and metrics from the SDOs
SDN and metrics from the SDOsSDN and metrics from the SDOs
SDN and metrics from the SDOs
 
Devicemgmt
DevicemgmtDevicemgmt
Devicemgmt
 
Neo4j Vision and Roadmap
Neo4j Vision and Roadmap Neo4j Vision and Roadmap
Neo4j Vision and Roadmap
 
Elastic Cloud Enterprise @ Cisco
Elastic Cloud Enterprise @ CiscoElastic Cloud Enterprise @ Cisco
Elastic Cloud Enterprise @ Cisco
 
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław Borek
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław BorekPLNOG14: Service orchestration in provider network, Tail-f - Przemysław Borek
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław Borek
 
MySQL 8.0.1 DMR
MySQL 8.0.1 DMRMySQL 8.0.1 DMR
MySQL 8.0.1 DMR
 
MySQL 8.0 in a nutshell
MySQL 8.0 in a nutshellMySQL 8.0 in a nutshell
MySQL 8.0 in a nutshell
 
State ofdolphin short
State ofdolphin shortState ofdolphin short
State ofdolphin short
 
AnsibleFest London 2016 - managing your cisco datacenter network with ansible
AnsibleFest London 2016 - managing your cisco datacenter network with ansibleAnsibleFest London 2016 - managing your cisco datacenter network with ansible
AnsibleFest London 2016 - managing your cisco datacenter network with ansible
 
Managing Your Cisco Datacenter Network with Ansible
Managing Your Cisco Datacenter Network with AnsibleManaging Your Cisco Datacenter Network with Ansible
Managing Your Cisco Datacenter Network with Ansible
 
Super-NetOps Source of Truth
Super-NetOps Source of TruthSuper-NetOps Source of Truth
Super-NetOps Source of Truth
 
Enterprise guide to building a Data Mesh
Enterprise guide to building a Data MeshEnterprise guide to building a Data Mesh
Enterprise guide to building a Data Mesh
 
One tool, two fabrics: Ansible and Nexus 9000
One tool, two fabrics: Ansible and Nexus 9000One tool, two fabrics: Ansible and Nexus 9000
One tool, two fabrics: Ansible and Nexus 9000
 
Gain Insight and Programmability with Cisco DC Networking
Gain Insight and Programmability with Cisco DC NetworkingGain Insight and Programmability with Cisco DC Networking
Gain Insight and Programmability with Cisco DC Networking
 
E-GEN iCAN
E-GEN iCANE-GEN iCAN
E-GEN iCAN
 
Better Network Management Through Network Programmability
Better Network Management Through Network ProgrammabilityBetter Network Management Through Network Programmability
Better Network Management Through Network Programmability
 

Recently uploaded

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 

Recently uploaded (20)

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 

PLNOG19 - Krzysztof Mazepa - Yang Development Kit – stwórz swój pierwszy program obsługujący urządzenia Cisco IOS XR/XE dzięki ułatwieniom jakie oferuje YDK

  • 1. Krzysztof Mazepa Consulting Systems Engineer 26 września 2017, Krakow Yang Development Kit – stwórz swój pierwszy program obsługujący urządzenia Cisco IOS XR/XE (i nie tylko) dzięki ułatwieniom jakie oferuje YDK. ydk.io
  • 2. • Wprowadzenie • Data Models • Management Protocols • Model-Driven APIs • Demonstration • Resources • Conclusion Agenda Większość materiałów w tej prezentacji pochodzi z sesji Santiago Alvarez’a BRKSPG-2303 Model-driven programmability for Cisco IOS XR.pdf
  • 3. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 3 Motivations for Network Programmability • Speed and scale demand software automation and data analytics • Rapid innovation as competitive advantage • One network operator per 1000s / 10000s of complex network devices
  • 4. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 4 Controller Orchestrator Controller Orchestrator Device Programmability Data Plane Control Plane Management Plane App Controller Orchestrator Data Plane Control Plane App Data Plane App
  • 5. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 5 Model-Driven Programmability Stack Encoding XML JSON GPB Protocol NETCONF gRPCRESTCONF Models APIs Apps Model-Driven APIs YANG Development Kit (YDK) YANG Models (native, open) App App App SSH HTTPTransport Model-Driven Configuration Model-Driven Telemetry
  • 6. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 6 Benefits of Model-Driven Programmability • Model based, structured, computer friendly • Multiple model types (native, OpenConfig, IETF, etc.) • Models decoupled from transport, protocol end encoding • Choice of transport, protocol and encoding • Model-driven APIs for abstraction and simplification • Wide standard support while leveraging open source
  • 8. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 8 Data Models • Data (config and operational) and actions (RPCs) in a tree structure • Self-documented and shipped with devices • Cisco IOS XR supports ~300 YANG models (native and open) in release 6.2.1 • OpenConfig support includes BGP, routing policy, interfaces, MPLS, telemetry, VLAN, platform, RIB, local routing and terminal device • Native models provide most coverage • OpenConfig and IETF models are mapped to native models Native / Common OpenConfig / IETF
  • 9. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 9 Cisco IOS XR Native Data Models • Provide most comprehensive coverage for device functionality • Approximately ~300 models in XR 6.2.1 (700+ YANG files) • A single model defines either configuration (cfg), operational state (oper) or an action (act) • Cisco-IOS-XR-ipv4-bgp-cfg.yang • Cisco-IOS-XR-ipv4-bgp-oper.yang • Cisco-IOS-XR-ipv4-bgp-act.yang • Models posted at • https://github.com/YangModels/yang/tree/master/vendor/cisco/xr • https://github.com/YangModels/yang/tree/master/vendor/cisco/xe • https://github.com/YangModels/yang/tree/master/vendor/cisco/nx
  • 10. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 10 OpenConfig Data Models • Operator group pursuing more dynamic and programmable networks • Currently focused on vendor-neutral data models (YANG) • Models designed by operators for operators • Model coverage still limited, but model development rapidly evolving • IOS XR 6.2.1 supports • BGP, routing policy, RIB, local routing • Interfaces, VLAN • MPLS • Telemetry • Platform • Terminal device (optical) • Other new models in active development
  • 11. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 11 Native vs Open Data Models • Native data models provide most configuration and operational coverage • Open models mapped to native data models • Departures from open models specified as deviation module Native Model Open Model Native device config/oper data Mapped config/oper data Deviations
  • 12. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 12 Native Data Models Model Mapping Open Data Models Internal Datastore Management Protocol Model-Driven APIs YANG Development Kit (YDK) Open Model Mapping in IOS XR • Model mapping converts open model data to native model data and vice versa • Support for mapping config and operational data (including telemetry) • Single view of config and operational data in internal datastore • Planning to enable user defined mapping (Model Mapping SDK) Reference slide
  • 13. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 13 YANG • Modeling language for networking • Defines data hierarchy (config or oper) and RPCs • Main node types • Leaf – node with name, type and value (no children) • Leaf list – sequence of leafs (no children) • Container – node that groups nodes and has no type or value • List – Series of data instances generally with one or more keys • Models extended through augmentations • Unsupported nodes specified as deviations Leaf Node without type/value Node with a type/value Leaf list Container List key Reference slide
  • 14. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 14 YANG Model Example container community-sets { description “Container for community sets"; list community-set { key community-set-name; description "Definitions for community sets"; leaf community-set-name { type string; description "name of the community set"; } leaf-list community-member { type string { pattern '([0-9]+:[0-9]+)'; } description "members of the community set"; } } } community-sets community-set C-SET1 65172:1, 65172:2, 65172:3 ! community-set C-SET10 65172:10, 65172:20, 65172:30 ! ! YANG CLI
  • 15. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 15 Model Data Example <community-sets> <community-set> <community-set-name>C-SET1</community-set-name> <community-member>65172:1</community-member> <community-member>65172:2</community-member> <community-member>65172:3</community-member> </community-set> <community-set> <community-set-name>C-SET10</community-set-name> <community-member>65172:10</community-member> <community-member>65172:20</community-member> <community-member>65172:30</community-member> </community-set> </community-sets> community-sets community-set C-SET1 65172:1, 65172:2, 65172:3 ! community-set C-SET10 65172:10, 65172:20, 65172:30 ! ! XML CLI
  • 16. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 16 Model Data Example community-sets community-set C-SET1 65172:1, 65172:2, 65172:3 ! community-set C-SET10 65172:10, 65172:20, 65172:30 ! ! { "community-sets": { "community-set": [ { "community-set-name": "CSET1", "community-member": [ "65172:1", "65172:2", "65172:3" ] }, { "community-set-name": "CSET10", "community-member": [ "65172:10", "65172:20", "65172:30" ] } ] } } JSON CLI Reference slide
  • 18. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 18 XML NETCONF NETCONF Protocol Overview • Rich functionality to manage configuration and operational (state) data • Operations defined as RPCs (request / reply) in XML • Client/app initiate request towards server/device • Supports running, candidate and startup configurations • Capability exchange during session initiation 18 YANG SSH
  • 19. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 19 Main NETCONF Protocol Operations Operation Description get-config Retrieve all or part of a specified configuration edit-config Loads all or part of a specified configuration (merge, replace, create, delete, remove) copy-config Create or replace an entire configuration datastore get Retrieve all or part of running configuration and device operational data get-schema Retrieve device schema (model) lock Lock entire configuration datastore (e.g. candidate) unlock Remove lock on entire configuration datastore (e.g. candidate) close-session Request graceful session termination Reference slide
  • 20. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 20 NETCONF Edit-Config Operations Operation Description Merge Merge configuration with existing configuration (default) Replace Replace configuration with existing configuration Create Create configuration if non-existent. Otherwise, return error. (non-idempotent*) Delete Delete configuration if non-existent. Otherwise, return error. (non-idempotent) Remove Remove configuration. Ignore if configuration non- existent. * Cannot be applied multiple times without changing the result beyond the initial application Reference slide
  • 21. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 21 Cisco gRPC CLIJSON YANG HTTP/2 Overview of gRPC on Cisco IOS XR • Google RPC provides a general (open source) RPC framework • Interface definition in Cisco IOS XR specifies device operations • Functional subset of NETCONF • Simple client development • High performance 21 Reference slide
  • 22. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 22 Protocol Operations in Cisco IDL Operation Description GetConfig Retrieve configuration MergeConfig Merge configuration DeleteConfig Delete configuration ReplaceConfig Replace configuration CommitReplace Replace entire configuration GetOper Retrieve operational data CliConfig Merge configuration data in CLI format ShowCmdTextOutput Retrieves CLI show-command output data Reference slide
  • 24. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 24 Model-Driven APIs • Simplify app development • One-to-one correspondence between model and class hierarchy • Abstract protocol, transport, encoding, modeling language • API generated from YANG model • Rich data validation • Multi-language (Python, C++, Ruby, Go, etc.) YANG Model Class Hierarchy (Python, C++, Go)
  • 25. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 25 YANG Development Kit Services Providers Cisco IOS XR Models OpenConfig Models IETF Models Services Providers YDK-Py Python YDK-Cpp C++ Cisco IOS XE Models Cisco IOS XR Models OpenConfig Models IETF Models Cisco IOS XE Models
  • 26. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 26 YDK API Structure • Models group Python APIs created for each YANG model • Services perform operations on model objects (interface) • Providers implement services (implementation) 26 Models (BGP, IS-IS, etc) Services (CRUD, NETCONF, Codec, Executor, etc.) Providers (NETCONF, Codec, etc.)
  • 27. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 27 Reference slide
  • 28. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 28 Reference slide
  • 29. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 29 Reference slide
  • 30. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 30 Reference slide
  • 31. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 31 Reference slide
  • 32. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 32 YDK Client-Side Validation • Client will automatically perform local validation based on model constraints • Check between type of data: config (read- write) and state (read-only) • Type check (enum, string, etc.) • Value check (range, pattern, etc.) • Semantic check (key uniqueness/presence, mandatory leafs, etc.) • Model deviation check (unsupported leafs, etc.) Application (client) Device (server)
  • 33. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 33 A YDK-Py “Hello World” Using OpenConfig BGP # Cisco YDK-Py OC-BGP “Hello world” from ydk.services import CRUDService from ydk.providers import NetconfServiceProvider from ydk.models.openconfig import openconfig_bgp as oc_bgp if __name__ == "__main__": provider = NetconfServiceProvider(address=10.0.0.1, port=830, username=“admin”, password=“admin”, protocol=“ssh”) crud = CRUDService() # create CRUD service bgp = oc_bgp.Bgp() # create oc-bgp object bgp.global_.config.as_ = 65000 # set local AS number crud.create(provider, bgp) # create on NETCONF device provider.close() exit() # End of script module: openconfig-bgp +--rw bgp +--rw global | +--rw config | | +--rw as | | +--rw router-id? | +--ro state | | +--ro as | | +--ro router-id? | | +--ro total-paths? | | +--ro total-prefixes? ...
  • 34. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 34 How to Get YDK-Py Native Virtual Cloud Install Python Install YDK Download ydk-py-samples Install Vagrant Install Virtualbox Download ydk-py-samples YANG Development Kit Sandbox
  • 35. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 35 CRUD service NETCONF provider NETCONF service Codec service deviations Service improvements Better error handling Bundles (core, XR, OC, IETF) YDK Releases C++ support Bundle updates0.3.0 Mar 2016 0.4.0 Apr 2016 0.4.1 May 2016 0.4.2 Jun 2016 0.5.0 Aug 2016 https://github.com/CiscoDevNet/ydk-gen/releases Python 3 Bundle updates 0.5.1 Oct 2016 0.5.2 Dec 2016 0.5.3 Jan 2017 RESTCONF OpenDaylight 0.5.4 Mar 2017 0.5.5 Jun 2017 PyPi install Bundle updates IOS XE bundle
  • 36. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 36 • Path API • Additional providers (e.g. Google RPC, Cisco NSO) • Additional services (e.g. Google RPC) • Additional languages (e.g. Go, etc) • Additional encodings (e.g. YAML, GPB) • Telemetry support • Model-mapping support Future Work Items
  • 37. Demo
  • 38. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 38 Testbed Topology (dCloud) R2R1 Out-of-band network lo0 172.16.255.1/32 g0/0/0/0 172.16.1.0/31 lo0 172.16.255.2/32 IS-IS L2 (Area 49.0001) 198.18.1.127/24 s 198.18.1.12/24 g0/0/0/0 172.16.1.1/31 198.18.1.11/24 NETCONF NETCONF YDK App Controller
  • 40. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 40 Resources Model-driven programmability @ Cloud-Scale Networking • Model-Driven Programmability (http://goo.gl/x3GZDB) Programmability @ XR Docs • Tutorials (https://xrdocs.github.io/programmability/tutorials) • Blogs (https://xrdocs.github.io/programmability/blogs) Configuration guide • Cisco IOS XR programmability configuration guide for ASR 9000 series router (http://goo.gl/8dYUeK) • Cisco IOS XR programmability configuration guide for NCS 5500 series router (http://goo.gl/cnYPw7)
  • 41. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 41 Resources YDK Portal • YDK at DevNet (http://ydk.io) YDK Sample Apps • YDK-Py sample apps (https://github.com/CiscoDevNet/ydk-py-samples) - Over 700 apps! • YDK-Cpp sample apps (https://github.com/CiscoDevNet/ydk-cpp-samples ) - Coming soon Sandboxes • dCloud YANG Development Kit sandbox (https://goo.gl/RPpBvL) • Ubuntu YDK Vagrant box (https://git.io/vaw1U) Support • Cisco support community (https://communities.cisco.com/community/developer/ydk)
  • 42. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 42 Resources (cont.) YDK Documentation • YDK-Py docs (http://ydk.cisco.com/py/docs) • YDK-Cpp docs (http://ydk.cisco.com/cpp/docs) GitHub • YDK Python API – YDK-Py (https://git.io/vaWsg) • YDK-Py sample apps (https://git.io/vaw1U) • YDK C++ API – YDK-Cpp (https://git.io/v1Cst) - alpha • YDK-Cpp sample apps (https://git.io/v14Qh) - coming soon
  • 43. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 43 Resources (cont.) Conferences • CiscoLive 2017 Las Vegas - BRKSPG-2303 Model-driven programmability for Cisco IOS XR (www.ciscolive365.com) • NANOG 68: Ok, We Got YANG Data Models. Now What? (http://youtu.be/2oqkiZ83vAA ) • LinuxCon NA 2016: Simplifying Network Programmability Using Model-Driven APIs (https://goo.gl/W6tH2X)
  • 45. © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 45 • Model-Driven Programmability • Speed and scale through automation • Rich and flexible in terms of models, transports and encodings • NETCONF • Rich, mature protocol • Relies on XML encoding • Google RPC • Cisco interface definition (device operations) • Supports JSON and unstructured data (CLI) • High performance • Model-Driven APIs • Simplify app development • Abstract transport and encoding Let’s Recap