586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - cisco€¦ · santiago Álvarez april 2016 for cisco...
TRANSCRIPT
![Page 1: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/1.jpg)
Santiago Álvarez
April 2016
For Cisco IOS XR
Model-Driven Programmability
@111pontes
![Page 2: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/2.jpg)
2 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
• Speed and scale demand software automation and data analytics
• Rapid innovation as competitive advantage • One network operator per 1000s / 10000s of
complex network devices
Motivations for Network Programmability
![Page 3: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/3.jpg)
3 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
Protocol NETCONF gRPC RESTCONF
Encoding XML JSON
Model-Driven Programmability Stack
Models
APIs
Apps
Model-Driven APIs YANG Development Kit (YDK)
YANG Models (native, open)
App1 App2 App3
SSH HTTP Transport
![Page 4: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/4.jpg)
4 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
• Model based, structured, computer friendly • Multiple model types (native, common, 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
Benefits of Model-Driven Programmability
![Page 5: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/5.jpg)
5 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
• Model structures data (config and operational) as a tree
• Models files are self-documented and ship with devices
• Cisco IOS XR supports 150+ YANG models (config and operational) in release 6.0.0
• Native models provide most coverage
• OpenConfig and IETF models are mapped to native models
Data Models
Native / Common OpenConfig / IETF
![Page 6: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/6.jpg)
6 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
• Modeling language (initially for NETCONF)
• Main node types • Leaf – node with name and value of
certain type (no children) • Leaf list – sequence of leafs • Container – groups nodes and has no
value • List – Sequence of records with key
leafs
• Deviations document data not implemented in non-native model
YANG
Leaf
Node without a value
Node with a value
Leaf list
Container (grouping)
Container (presence)
List
key
![Page 7: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/7.jpg)
7 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
XML
NETCONF
• 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
NETCONF Protocol Overview
YANG
SSH
![Page 8: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/8.jpg)
8 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
XML JSON
RESTCONF
YANG
HTTP / HTTPS
• RESTful API for NETCONF
• Functional subset of NETCONF
• Single hierarchy of resources (data + allowed methods)
• Resource hierarchy rooted at ‘restconf/’
• Configuration and operational data located under ‘restconf/data’
• Web app friendly
RESTCONF Protocol Overview
![Page 9: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/9.jpg)
9 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
Cisco gRPC
CLI JSON
YANG
HTTP/2
• 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
Overview of gRPC on Cisco IOS XR
![Page 10: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/10.jpg)
10 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
• Simplify app development
• Abstract transport, encoding, model language
• API generated from YANG model
• One-to-one correspondence between model and class hierarchy
• Multi-language (Python, C++, Ruby, Go, etc.)
Model-Driven APIs
YANG Model Class Hierarchy
(Python, C++, Ruby, Go)
![Page 11: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/11.jpg)
11 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
Generation of Model-Driven APIs Using YANG Development Kit (YDK)
YANG YANG
YANG
Data Models (YANG)
API Generator
Docs Python
C++
: :
Ruby
go
Docs
Docs
Docs
C♯ Docs
YDK-gen
YDK-Py YDK
![Page 12: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/12.jpg)
12 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
• YDK service will automatically perform local (client-side) validation
• Type check (enum, string, etc.)
• Value check (range, pattern, etc.)
• Semantic check (key uniqueness/presence, mandatory leafs, etc.)
• Model deviation check
Client-Side Validation
Application (client)
Device (server)
![Page 13: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/13.jpg)
13 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
#CiscoYDK-PyOC-BGP“Helloworld”fromydk.servicesimportCRUDServicefromydk.providersimportNetconfServiceProviderfromydk.models.bgpimportbgpif__name__=="__main__":provider=NetconfServiceProvider(address=10.0.0.1,port=830,username=“admin”,password=“admin”,protocol=“ssh”)crud=CRUDService()#createCRUDservicebgp=bgp.Bgp()#createoc-bgpobjectbgp.global_.config.as_=65000#setlocalASnumbercrud.create(provider,bgp)#createonNETCONFdeviceprovider.close()exit()#Endofscript
A YDK-Py “Hello World” Using OC-BGP
module:openconfig-bgp+--rwbgp!+--rwglobal|+--rwconfig||+--rwas||+--rwrouter-id?|+--rostate||+--roas||+--rorouter-id?||+--rototal-paths?||+--rototal-prefixes?...
![Page 14: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/14.jpg)
14 © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Confidential
Demo
![Page 15: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/15.jpg)
15 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
NETCONF
R1
OC-BGP IPv4 Unicast (NETCONF)
R2 R3
10.0.0.254
10.0.0.1
.0 .1 .0 .1
Controller
AS65001 172.16/16
AS65003 172.18/16
AS65002 172.17/16
eBGP eBGP
192.168.1/31 192.168.2/31
![Page 16: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/16.jpg)
16 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
gRPC
R1
OC-BGP IPv6 Unicast (gRPC)
R2 R3
10.0.0.254
10.0.0.1
.0 .1 .0 .1
AS65001 2001:db8:1/48
AS65003 2001:db8:3/48
AS65002 2001:db8:2/48
eBGP eBGP
2001:db8:fff1/127 2001:db8:fff2/127
Controller
![Page 17: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/17.jpg)
17 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
AS65002 172.17/16
NETCONF
R1
OC-BGP IPv4/IPv6 Unicast (Python)
R2
R3
10.0.0.254
10.0.0.1
.1 .0
Controller
AS65001 172.16/16
AS65003 172.18/16
eBGP
192.168.3/31
2001:db8:fff3/127
![Page 18: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/18.jpg)
18 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
• 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
• RESTCONF • RESTful API for NETCONF • Single hierarchy of resources • Supports JSON and 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
![Page 19: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/19.jpg)
19 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
Cisco Knowledge Network Webinars
• Device Programmability Using YANG Development Kit and Python – Jun 7
Cisco Live Las Vegas
• LTRSPG-2601 - Cisco IOS XR Programmability Lab (4hrs)
• DEVNET-2057 - Ok, We Got YANG Data Models, Now What?
Upcoming Events
19
![Page 20: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/20.jpg)
20 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
GitHub
• Cisco IOS XR YANG models (https://git.io/vg7fk)
• Getting Started With OpenConfig in Cisco IOS XR (https://git.io/vg7vF)
• Getting Started With gRPC in Cisco IOS XR (https://git.io/vg7vP)
• YDK Python API – YDK-Py (https://git.io/vaWsg)
• YDK-Py sample apps (https://git.io/vaw1U)
• YDK Generator – YDK-gen (https://git.io/vaw1M)
• YANG Explorer (https://git.io/vg7Jm)
Resources
![Page 21: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/21.jpg)
21 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
DevNet
• YDK at DevNet (https://goo.gl/Wqwp3C)
• Cisco IOS XR 6.0 at DevNet (https://goo.gl/uaxrpN)
YDK Sandboxes
• Ubuntu YDK-PY Vagrant box (https://git.io/vaw1U)
• YDK on dCloud (http://dcloud.cisco.com.com)
YDK Support
• Cisco support community (https://communities.cisco.com/community/developer/ydk)
Resources (cont.)
![Page 22: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/22.jpg)
22 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
Other
• Cisco Blogs (http://goo.gl/hBnkp2)
Resources (cont.)
22
![Page 23: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/23.jpg)
23 © 2015 Cisco and/or its affiliates. All rights reserved. Cisco Confidential
Backup
![Page 24: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/24.jpg)
24 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
YANG Model Example
containercommunity-sets{description“Containerforcommunitysets";listcommunity-set{keycommunity-set-name;description"Definitionsforcommunitysets";leafcommunity-set-name{typestring;description"nameofthecommunityset";}leaf-listcommunity-member{typestring{pattern'([0-9]+:[0-9]+)';}description"membersofthecommunityset";}}}
community-setCSET165172:1,65172:2,65172:3end-set!community-setCSET1065172:10,65172:20,65172:30end-set!
YANG CLI
![Page 25: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/25.jpg)
25 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
Model Data Example
<community-sets><community-set><community-set-name>CSET1</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>CSET10</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-setCSET165172:1,65172:2,65172:3end-set!community-setCSET1065172:10,65172:20,65172:30end-set!
XML CLI
![Page 26: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/26.jpg)
26 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
Model Data Example
community-setCSET165172:1,65172:2,65172:3end-set!community-setCSET1065172:10,65172:20,65172:30end-set!
{"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
![Page 27: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/27.jpg)
27 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
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)
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
![Page 28: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/28.jpg)
28 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
Main RESTCONF Protocol Operations Operation Description
GET Retrieve data for a resource (config/operational)
POST Create a configuration data resource
PUT Create or replace a configuration data resource
PATCH Merge configuration data with target resource
DELETE Delete a configuration data resource
![Page 29: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/29.jpg)
29 © 2015 Cisco and/or its affiliates. All rights reserved. [email protected] - Cisco Confidential
Protocol Operations in Cisco IDL Operation Description
GetConfig Retrieve configuration data
MergeConfig Merge configuration data
DeleteConfig Delete configuration data
ReplaceConfig Replace configuration data
GetOper Retrieve operational data
CliConfig Merge configuration data in CLI format
ShowCmdTextOutput Retrieves CLI show-command output data
![Page 30: 586 05 03-16-saalvare-xr-mdp-ckn-may-2016-v8 - Cisco€¦ · Santiago Álvarez April 2016 For Cisco IOS XR Model-Driven Programmability @111pontes](https://reader033.vdocuments.mx/reader033/viewer/2022060216/5f05fa6c7e708231d415ae2b/html5/thumbnails/30.jpg)