Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE...
Transcript of Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE...
![Page 1: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/1.jpg)
![Page 2: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/2.jpg)
Programming the Network: Let's Get Started
Nick Matthews, CCIE #23560
Technical Solutions Architect
BRKDEV-2003
@nickpowpow
![Page 3: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/3.jpg)
Rapidly Changing World of Network Programming
OpenStackAPI
RESTJSON
XML
OpenFlow
Controller
Agile
IaaS
Puppet
Chef
OrchestrationAutomation
DevOps
Ansible
OnePK
NX-API
WaterfallOpenDaylight
NFV
Netconf YANG
IDE
SDKPython
Go
LXC
Container
Docker
CI/CD
Salt
NeutronML2
BASHEclipse
Git
Unicorn
![Page 4: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/4.jpg)
• Understanding the Situation
• Planning for Programmability
• Applying the Technology
Agenda
![Page 5: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/5.jpg)
The Right Tool is Important
![Page 6: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/6.jpg)
The Tools We Have Don't Cut It
Manual CLI
More Efficient
Manual CLI
Powerful, Bulky
Management Tools
(Steam-powered Saw)
What We Want
![Page 7: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/7.jpg)
Merging our Tools with Powerful Engines
Software Existing Tools
• Can be dangerous and unproven
• Excess of new tools
• Risk of choosing the tool before the
project
Power tools are still awesome
+What We're Seeing
![Page 8: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/8.jpg)
How does it impact me?
![Page 9: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/9.jpg)
What is Technical Debt?
Do the Right ThingReload the Router?
vs
![Page 10: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/10.jpg)
I For One, Welcome Our New Software Overlords
Software Brings New Advantages
• Established Toolsets
• Huge Skillset Pool
• Testing Methodologies
• Compliance and Auditing Procedures
• Requirements Gathering
• Efficient and Automated
• Scale with Accuracy
Largest Disruption in History of Networking
Infrastructure
Software
![Page 11: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/11.jpg)
Programmability and API's are Coming
New Glue in the Infrastructure
API Proliferation
Orchestration
Router Device
API
API
API
Programmatic Control
Development
Switch
Python
SDK
import cli
import requests
for interface in
interfaces:
cli.send("show
command"
open w as
file("device.txt")
Scripts
Management
Platform
API
? Integration
Brownfield Integration of Programmability
Overlay Networking
Overlay Networking
API
Orchestration Development
![Page 12: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/12.jpg)
Fully Programmatic Networks
Productized Solutions Cloud and Orchestration
Public Cloud
Private Cloud
ACI Fabric
SDK API Automation
Greenfield Programmability Solutions
Niche Use Cases
TOOLS
SDN Matrix
Controller
Optical
Taps
OpenFlow
Java and
Restful
Designed for Automation and Programmability
![Page 13: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/13.jpg)
Reasons to Start Programmability Now
• It's Inevitable – The Cloud will eat you alive
• It will be in your network, and it will break
• More aligned to business objectives
• To Start Adopting an Automation Mindset
• Understand Software Architectures + Concepts
Reactive
Proactive
![Page 14: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/14.jpg)
Misconceptions
X "Network engineers need to become programmers"
X "Nobody is doing SDN or Network Programming"
X "I don't want to automate myself out of a job"
X "Network Programming doesn't provide stability"
X "If it's not OpenFlow, it's not Open"
Network engineers need to understand programmers
Cloud is SDN Native, plus many pockets of customers
There's more than enough work for us. Relevancy is different.
With experience and practice it provides better stability
SDN != Open != Programmability != OpenFlow. Different Concepts
![Page 15: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/15.jpg)
Realities
"This isn't for everyone, at least today"
"All organizations aren't ready for this kind of change"
"All the code is not fully matured"
"That feature, product, or ability already exists, it's called …"
Some will lag – this is largely in the early adopter phase
Full automation can require organizational change
Many of the solutions are still early and not production ready
Because a handsaw exists, it doesn't mean we can't use better tools
![Page 16: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/16.jpg)
Paulo Coelho
![Page 17: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/17.jpg)
Foundational Technologies
![Page 18: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/18.jpg)
Foundational TechnologiesAt least Conversational In..
• DevOps
• Linux
• REST API's
• Python
• Git + GitHub
• OpenStackNotes:
Each of these can be a career separately, stay practical and high level initially.
![Page 19: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/19.jpg)
DevOps Has Done Programmability
We need to learn DevOps concepts, and start extending their processes into networking
1 Server Admin : 100-200 Servers
to
1 Server Admin : 5,000 – 10,000 Servers
Manual + Bash scripts + Reactive configuration
to
Orchestrated configuration and integration with development
Network Operations
Note: Networking != Servers and there are unique challenges being addressed in this space
![Page 20: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/20.jpg)
Credit: Hyperbole and a Half, memegenerator.net
![Page 21: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/21.jpg)
Linux is the Home of Open Source
• Majority of Tools and Endpoints are Linux Systems
• Aim for end-user proficiency
• Software Development and DevOps are Linux Cultures
• Examples
• Containers, Linux Utilities, BASH, Nexus 9000, Cloud Operating Systems
![Page 22: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/22.jpg)
Python and Programming
Ecosystem Language
Novice Programmers Python
Network Programming Python
Web Development
Configuration Management
Ruby
Containers Go
Enterprise Applications Java
C++
Scripting
Web Applications
Perl
PHP
• Large user community, flexible language, easy to start
• Aim for end-user proficiency
• Hack variables together, troubleshoot simple problems
• Proficiency in other languages is an equal substitution
• Understand the terminology and challenges
![Page 23: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/23.jpg)
Git – Where the Software Lives
• Git is a Version Control System
• Distributed rather than centralized
• GitHub is free place to put public code
• Issue tracking, documentation, and collaboration
• Critical for understanding software
• Change control and collaboration for development
• Use it to grab or share code
![Page 24: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/24.jpg)
REST is Machine Readable HTTP
HTTP GET
HTML
Describes how data
should be displayed to
please human viewer
HTTP GET
JSON/XML
Describes data in a
format machines can
understand
{"ids":[303776224, 19449911,
607032789, 86544242,
2506725913, 17631389],
"next_cursor":0,
"next_cursor_str":"0",
"previous_cursor":0,
"previous_cursor_str":"0"}
Web Browsing REST API Twitter: IDs of last five followers
![Page 25: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/25.jpg)
REST API ExampleCustomized Portal on Top of Orchestration
Orchestration
Nexus
9000
API
Custom Portal
API
HTTP
UCS Compute
API
Storage
API
Simplified Portal using
Orchestrator's API's
Orchestration Tool Identifies
Resources and Sends API Calls
Devices process API Calls
IPAM
API
LDAP
API
![Page 26: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/26.jpg)
Keystone (Identity Services)
Glance (Image / Repository Services)
Nova(Compute Services)
Neutron(Networking Services)
Swift(Object
Services)
Cinder(Block
Storage
Services)
Ho
rizo
n(D
ash
bo
ard
)
AP
Is / C
LI
IaaS / cloud orchestration software – creates, manages, and deletes virtual
resources according to API- or CLI-based instructions
OpenStack BasicsFlexible Framework for Building Clouds
![Page 27: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/27.jpg)
Planning for Programmability
![Page 28: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/28.jpg)
Planning Items
• Create a Goal
• Identify a Use Case
• Understand the Relevant Technology
• Find Resources and Assistance
![Page 29: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/29.jpg)
Potential GoalsYour Goal Doesn't Need to be a Program
import cli
import requests
for interface in
interfaces:
cli.send("show
command"
open w as
file("device.txt")
Development
Network Program
Software
Knowledge
Network
Challenge+ =
Architecture
Network
Operational +
Technical
Knowledge
Systemic
Problems
Conversation and
Operational Change
+ =
Engineer Existing Code
+ Modifications
Operational
Inefficiency+ =
import cli
import requests
for interface in
interfaces:
cli.send("show
command"
open w as
file("device.txt")
import cli
import requests
for interface in
interfaces:
cli.send("show
command"
open w as
file("device.txt")
Customized Tool
![Page 30: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/30.jpg)
Better Together - Collaborate
• Mix the battle hardened team members with those more experienced with development tools
• Team Rotations
• Emphasis on Conversational Capabilities
+
Network Engineering
Development
![Page 31: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/31.jpg)
Too much? Not sure? Can't Program?
• Challenge: Automate something rather than doing a repetitive task
• The process and learning opportunity outweighs the end functionality
• Start adapting a mindset of solving problems with programmability
Write Something Anyway!
Automate Something
![Page 32: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/32.jpg)
Use Cases
Complexity
Ris
k
Super CommandsAutomated Troubleshooting
and Data Visibility
Automated
Provisioning
Scripted
Pre-Provisioning
Subset of Existing
Management Tools
DevOps
Workflows
Custom
Integration
Self Healing and Adaptive
NetworksReal Time
Provision
Passive
Event Triggered
Scripts
![Page 33: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/33.jpg)
Use Cases
Complexity
Ris
k
Super CommandsAutomated Troubleshooting
and Data Visibility
Subset of Existing
Management Tools
DevOps
Workflows
Custom
Integration
Self Healing and Adaptive
NetworksReal Time
Provision
Passive
Event Triggered
Scripts
Check your
Copy and Paste Folder
For Examples
Automated
Provisioning
Scripted
Pre-Provisioning
![Page 34: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/34.jpg)
Programmability – New Problem Solving ProcessThinking and Solving Differently
Identify The Problem
Capabilities Mapping
Pain
Inefficiency
Dread
Design, Implement, and Operate
Day-2 Requirements
Implementation Skills Assessment
Scalability and Performance
Open-Source Strategy
What Tools Exist?
Feasibility of the Design? Scalability?
What Alternatives are
there?
API's
Work-
flow
Open
Source
![Page 35: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/35.jpg)
There's still the problem of all those terms!
OpenStackAPI
RESTJSON
XML
OpenFlow
Controller
Agile
IaaS
Puppet
Chef
OrchestrationAutomation
DevOps
Ansible
OnePK
NX-API
WaterfallOpenDaylight
NFV
Netconf YANG
IDE
SDKPython
Go
LXC
Container
Docker
CI/CD
Salt
NeutronML2
BASHEclipse
Git
Unicorn
?
![Page 36: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/36.jpg)
SDN and Programmability: Parts and Pieces
Hardware
Chassis
CPU
ASIC
Southbound API's +
Agents
Virtual
Hardware
VMCSR, vASA, vIOS
vWAAS, vIPS
Controller Layer
REST JSON / XML SOAP JSON / XMLNorthbound API's
Application
Operating System BASH Python Agents / Apps
Scripts GUI Orchestration Integrations Web Portal Monitoring Tools
REST OpFlex Puppet Agent NETCONF/YANG OpenFlow SNMPSSH
Orchestration
Tools
Policy
Controller
Configuration
Management
Service / Overlay
Orchestration
OpenFlow
Controllers
APIC, APIC-EM
Puppet, Chef, Ansible, Salt
ESC, Tail-F, VTS, Embrane
OpenStack, UCS Director
OpenDaylight, COSC, XNC
![Page 37: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/37.jpg)
Getting Advanced: Not a Single Stack
Hardware
Chassis
CPU
ASIC
Southbound API's +
Agents
Virtual
Hardware
VMCSR, vASA, vIOS
vWAAS, vIPS
Controller Layer
REST JSON / XML SOAP JSON / XMLNorthbound API's
Application
Operating System BASH Python Agents / Apps
Scripts GUI Orchestration
REST OpFlex Puppet Agent NETCONF/YANG OpenFlow SNMPSSH
Orchestration
Tools
Policy
Controller
Configuration
Management
Service / Overlay
Orchestration
OpenFlow
Controllers
APIC, APIC-EM
Puppet, Chef, Ansible, Salt
ESC, Tail-F NSO, VTS, Embrane
OpenStack, UCS Director
OpenDaylight, COSC, XNC
API's allow a flexible hierarchy
of Controllers and
Orchestrators
Ex:
Tail-F NSO controlling OpenDaylight or
OpenStack on OpenStack (Triple O) or
Openstack configuring APIC
![Page 38: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/38.jpg)
Caution – Simplification Ahead
*Nearly All Technologies Can Be Used in All Environments
![Page 39: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/39.jpg)
Programmability – Enterprise• Foundations
• ACI, Nexus 9000
• APIC-EM, IWAN
• UCS-D, VIRL
Southbound API's
Virtual
Hardware
VMCSR, vASA, vIOS
vWAAS, vIPS
Controller Layer
REST JSON / XMLNorthbound API's
Application
Operating System Python Agents / Apps
REST SSH
Orchestration
Tools
Policy
Controller
Configuration
Management
APIC, APIC-EM, iWAN
Puppet, Chef, Ansible, Salt
OpenStack, UCS Director
NX-API
Technologies
Architectures
• Orchestration Tools, Cloud Architecture
• Developer Workflows
Features + API's
• ASA, CSR, UCS, + Prime API's
• EEM, Bash Shell
Hardware
Chassis
CPU
ASIC
Scripts GUI Orchestration Integrations
![Page 40: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/40.jpg)
Hardware
Chassis
CPU
ASIC
Programmability – Service Provider• Foundations
• Tail-F, ESC, VTS
• Nexus 9000, ACI, CSR
• OpenDaylight, COSC
Southbound API's
Virtual
Hardware
VMCSR, vASA, vIOS
vWAAS, vIPS
Controller Layer
Northbound API's
Application
Operating System Python Agents / Apps
Scripts GUI Orchestration Integrations
REST SSH
Orchestration
Tools
OpenStack, UCS Director
NX-API
Technologies
Architectures
• OpenStack
• NFV, Service Chaining
• Configuration Mgmt
Features + API's
• NETCONF/YANG
• VXLAN, NX-API
Service / Overlay
OrchestrationOpenFlow
ESC, Tail-F, VTS, Embrane
OpenDaylight, COSC, XNC
NETCONF/YANG
REST JSON / XML
![Page 41: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/41.jpg)
Hardware
Chassis
CPU
ASIC
Programmability – Cloud Focused• Foundations
• Nexus 9000, ACI
• UCS-Director
Southbound API's
Virtual
Hardware
VMCSR, vASA, vIOS
vWAAS, vIPS
Controller Layer
Northbound API's
Application
Operating System Python Agents / Apps
REST SSH
Orchestration
Tools
OpenStack, GBP, UCS Director
NX-API
Technologies
Architectures
• OpenStack + Neutron, Group Based Policy
• Configuration Mgmt
• Containers / Docker
Features + API's
• VXLAN, ASA, UCS, CSR API's
• Guest Shell, NX-API
Configuration
Management
Puppet, Chef, Ansible, Salt
Policy
Controller
APIC
Puppet Agent
Scripts GUI Orchestration Integrations
REST JSON / XML
![Page 42: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/42.jpg)
Development + DevOps• Nexus 9000, ACI, UCSD
• VIRL, Programming Languages
Technologies
Architectures
• Software Development Life Cycle (SDLC), Git, Toolsets
• Continuous Integration + Deployment, QA/Testing
• Containers, LXC, Docker
• Application/Cloud Architecture
Features + API's
• Puppet, Chef, Ansible
• Guest Shell, NX-API
Reportingand Visibility
Coding and Refactoring
Source Code Managemnet
Build Automation
Virtual Environments
Artefact Management
Continuous
Integration and
Deployment
in the
Development
Cycle
Management
![Page 43: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/43.jpg)
NX-API Demo
![Page 44: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/44.jpg)
Resources
![Page 45: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/45.jpg)
DevNet Portal DevNet APIs & SDKs
DevNet Sandbox Platform
Cisco DevNetdeveloper.cisco.com
45© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Community
Developer
Support
Events
![Page 46: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/46.jpg)
DevNet Sandbox
• Free, On-demand
• Wide range of product support
• REST API 101
• APIC-EM, NX-API, Collaboration, Wireless, and more
https://devnetsandbox.cisco.com
![Page 47: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/47.jpg)
A multi-purpose, extensible network virtualization and simulation platform:
• Create highly-accurate models of real-world / future networks
• Leverage ‘real’ network operating systems – build-synced, not emulated
• Scale from 10’s to 100’s of virtual network and server devices
• Integrate virtual networks and appliances into physical lab networks
VIRL: Virtual Internet Routing Labvirl.cisco.com
![Page 48: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/48.jpg)
Resources for Foundational Knowledge
• http://www.codecademy.com
• Python the Hard Way
• User's Groups
• Podcasts
• Wiki Sites
• Blogs
• Project Sites
Open Source is About Information Sharing
![Page 49: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/49.jpg)
Network Programmability User's Group (NPUG)
• User's Group focused on Network Programmability Topics
• Diverse Group of Users
• Combination of User Stories and Educational Material
• Recorded Meetings and Active Wiki
http://cs.co/NPUG
![Page 50: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/50.jpg)
Applying Programmability
![Page 51: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/51.jpg)
Tools – Integrated Development Environment (IDE)
• Text Editing, Build/Compile, Code Validation, Testing, Integrations (git, chat, etc), Plugin Extensibility
• Language Dependent or Independent
• Text Editors
• Notepad++, Sublime
• Emacs / Vim
• IDEs
• PyCharm, Eclipse
![Page 52: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/52.jpg)
Tools – REST API Testing with Postman
• Build and Edit Requests
• Save REST Calls
• Easy to manipulate data and test API's
• Postman – Chrome Extension
• PAW – OSX Application
![Page 53: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/53.jpg)
Enterprise Networking
• ASA, Sourcefire
• IOS, IOS-XE, IOS-XR
• APIC-EM
• Cloud Services Router
Service Provider
• Tail-F
• OpenDaylight
• Cisco Open SDN Controller
Datacenter
• Nexus Switches
• ACI
• UCS Manager, UCS Director
• OpenStack Integration
Management + Tools
• Prime Infrastructure
• Prime Network Services Catalog
• IPAMs, DHCP, IT Tools
What Exists To Program?
*slides taken from respective products in this section
![Page 54: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/54.jpg)
Enterprise Networking
SecurityIOS, IOS-XE, IOS-XR
![Page 55: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/55.jpg)
Cisco Security Solutions – API Overview
Cisco Security
Manager
CSM(v)
Email and Web
Security Management
SMA(v)
NGIPS Management
FIRESIGHT(v)
Firewall
ASA(v)
NGIPS
FIREPOWER(v)
Web Security
WSA(v)
Email Security
ESA(v)
Hypervisor firewall
manager
PNMC
Hypervisor Firewall
VSG
NORTHBOUND API
SOUTHBOUND API
JSON/
HTTPS
XML/
HTTPS
XML/
HTTPSHTTPSHTTPS
Identity Management
ISE (v)
PxGrid
XML/
HTTPS
XML/
HTTPS
![Page 56: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/56.jpg)
Select a feature from the left-
hand panel to view its APIs.
Select an API
operation for the
selected feature
Export API
operation to script
Cisco ASA REST API Built-in Documentation
![Page 57: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/57.jpg)
Retrieve an Object by Name
REST API Examples
Interface name
Create an ACL Entry
POST /api/access/out/inside/rules
{
"permit": true,
"sourceAddress": {
"kind": "IPv4Address",
"value": "192.168.1.1"
},
"destinationAddress": {
"kind": "IPv4Network",
"value": "172.16.171.0/24"
},
"sourceService": {
"kind": "NetworkProtocol",
"value": "ip"
},
"destinationService": {
"kind": "NetworkProtocol",
"value": "ip"
},
"active": true,
"remarks": [],
"position": 1
}
GET /api/objects/networkobjects/DNS
{
"kind": "object#NetworkObj",
"selfLink":
"/api/objects/networkobjects/DNS",
"name": “DNS",
"host": {
"kind": "IPv4Address",
"value": “4.2.2.2"
},
"objectId": “DNS"
}
Rule direction
(in or out)
True for permit or false
for deny
Source IP address
Destination IP address
Insert at position 1
Network object name
Network object
IP address
Execute Arbitrary Command
POST /cli
{
"commands": [
"show version | i Serial",
]
}
{
"response": [
"Serial Number: JMX09491111\n"
]
}
![Page 58: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/58.jpg)
• CSM API : http://www.cisco.com/c/dam/en/us/td/docs/security/security_management/cisco_security_manager/security_manager/4-7/API/spec_v2-0.pdf
• ASA API List : http://www.cisco.com/c/en/us/td/docs/security/asa/roadmap/asaroadmap.html#pgfId-80693
• v1.1.1: http://www.cisco.com/c/dam/en/us/td/docs/security/asa/api/asapedia_rest_api_111.pdf
• PNMC : http://www.cisco.com/c/dam/en/us/td/docs/net_mgmt/virtual_network_mgmt_center/3-0/programming/PNSC_3_0_XML-API-Guide.pdf
• ISE : http://www.cisco.com/c/en/us/td/docs/security/ise/1-3/api_ref_guide/api_ref_book/ise_api_ref_ch1.html
Cisco security solutions – API overview
![Page 59: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/59.jpg)
Enterprise
Applications
APIC Enterprise ModuleController for Campus + WAN: Catalyst, Wireless, IOS
SAL
REST APIs
Enterprise
ServicesInventory and
State
Identity and
Location
Application
Awareness
Policy
Enforcement
QoSPolicy
ManagementZTDACL
Elastic Infrastructure
CLI
Advanced Network Visualizer
EN Controller
![Page 60: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/60.jpg)
APIC-EMREST API Structure - Setup
/discovery /network-device
/interface
/host
/location
/configuration-file
/image
/ztd-rule
/unclaimed-
devices/tftp-server-configuration
/link
/user
/radius-server-config
/ldap-server-config
/external-aaa-server-
config
/external-aaa-server-
keystore-file
![Page 61: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/61.jpg)
https://developer.cisco.com/site/apic-em/documents/api-reference/
• REST 101 With APIC-EM:
https://learninglabs.cisco.com/#/labs/coding-101-rest-basics/step/1
APIC-EM Reference
![Page 62: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/62.jpg)
• Less Modern, But Available
• Transports:
• SSH
• HTTP/S
• TLS
• XML Data Modeling
• Supports Both Push and Pull Models
Web Services Management Agent (WSMA)Widely Available – Catalyst and IOS
![Page 63: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/63.jpg)
• WSMA:
• https://developer.cisco.com/site/xmlmi/overview/tech-overview.gsp
• https://developer.cisco.com/site/xmlmi/resources/index.gsp
• http://cisco.com/go/wsma
DevNet + WSMA Reference
![Page 64: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/64.jpg)
Embedded Event Manager (EEM)Available on IOS, IOS-XE, IOS-XR, Catalyst, NX-OS
• Extremely flexible and powerful subsystem within Cisco IOS Software
• Adapt device behavior and insert custom logic without IOS upgrade
• 24 Event Detectors (ED) integrated with IOS modules for wide range of system event detection
• CLI and Tcl based policy provides consistent programmability interface
• Powerful event engine supporting multi-event correlation, advance scheduling and more
Cisco IOS
![Page 65: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/65.jpg)
What Can EEM Do for Me?
Challenge 1: Every few weeks a router is running low on memory around 2am, and I want to find out what’s happening
•Solution: EEM script could be triggered based on the memory utilization, capture the memory information and send the output with Syslog or Email
Challenge 2: If my ACL configuration gets changed, I want to get notified, but I can’t sit there monitor it all the time
•Solution: EEM script could be triggered by CLI command, take a snapshot of the logged in user, changed configuration, and send an email to you
Challenge 3: I want to save energy, but I can’t go around turn off everyone’s IP phone everyday
•Solution: Timer ED can be used to trigger the execution of an EEM script to turn off your IP phone at 7pm everyday and turn it back on 7am the next day
![Page 66: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/66.jpg)
References – Embedded AutomationsEmbedded Automation Systems (EASy)
1. Browse and Download EASy Packageswww.cisco.com/go/easy
2. Make Sure to also download EASy Installer
3. Browse Other Embedded Automationswww.cisco.com/go/ciscobeyond
4. Learn About The Technology Under The Hoodwww.cisco.com/go/instrumentationwww.cisco.com/go/eemwww.cisco.com/go/pec
5. Discuss, Ask Questions, Suggest Answers supportforums.cisco.com
6. Upload your own Examples to CiscoBeyondwww.cisco.com/go/ciscobeyond
7. Engage via [email protected]
![Page 67: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/67.jpg)
Cisco OnePK
C, JAVA Program (eg. Chef, Puppet, OpenFlow Agents)
onePK API Presentation
onePK API Infrastructure
IOS, IOS-XE
Catalyst, ISR, ASR1K
NX-OS
Nexus Platforms
IOS-XR
ASR 9K, CRS
• Create, Modify, Customize Applications once across platforms
• Run Apps within NX-OS Container for protected execution
• Apps can exist on-box or off-box (Server)
![Page 68: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/68.jpg)
NETCONF is an IETF network management protocol designed to support management of configuration, including:
• Distinction between configuration and state data
• Multiple configuration data stores (candidate, running, startup)
• Configuration change validations
• Configuration change transactions
• Selective data retrieval with filtering
• Streaming and playback of event notifications
• Extensible remote procedure call mechanism
YANG is a modeling language defined in RFC 6020
• Analogous to XML schema and SMI for SNMP (but more powerful)
• Models configuration, operational, and RPC data
• Provides semantics to better define NETCONF data
• Reusable structures
• YANG is extensible and modular
• YANG modules are for NETCONF what MIBs are for SNMP
What is NETCONF/YANG?
Note: NETCONF without YANG (Ex: NETCONF/XML) does not follow RFC standards.
![Page 69: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/69.jpg)
Network Application
API Presentation
API Infrastructure
IOS, IOS-XECatalyst, ISR, ASR900,
ASR1000
NX-OSNexus Platforms
IOS-XRASR9000, CRS, NCS
NETCONF/YANG: Cisco OS Harmonization NMS/OSS – multi-platform, multi-vendor
![Page 70: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/70.jpg)
Useful Reading
• IETF NETMOD and NETCONF WG pages:
• http://trac.tools.ietf.org/wg/netconf/trac/wiki
• http://trac.tools.ietf.org/wg/netmod/trac/wiki
• NETCONF Central
• http://www.netconfcentral.org/
• OpenDaylight
• https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Model_Reference
• YANG Central
• http://www.yang-central.org/twiki/bin/view/Main/WebHome
![Page 71: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/71.jpg)
Cloud Services RouterVirtualized IOS with support for REST API
Sub-interface
EzVPN
VRF (ip route, logging, SNMP, static route, NTP)
BGP best path, neighbor failover
Banner
IP pools
Logging server
SNMP server
Local user
TACACS server
Token-services
Global•host-name, domain-name, local-users, running-config, dns-servers, ntp
Interface
DHCP
Routing (OSPF, BGP, EIGRP)
ACL (IOS extended ACL)
NAT
ZBFW (Zone Based Firewall)
IPSEC site-site VPN
Licensing
Monitoring
XE 3.10 XE 3.11 XE 3.12
VRF (S2S VPN, DHCP)
Call home
Reload
http://www.cisco.com/c/en/us/td/docs/routers/csr1000/software/restapi/restapi/RESTAPIintro.html
![Page 72: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/72.jpg)
Datacenter – ACI, NX-OS, UCS, UCS Director
Programmability
![Page 73: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/73.jpg)
• REST API
• Full Object Model exposed
• Objects
• Attributes
• Children
• Relationships
• Relative and Distinguished Names
• JSON or XML
https://github.com/datacenter
ACI Fabric – Completely Accessible Via REST
REST API
ACI SDKACI ToolkitScriptsGUI
API Inspector
VisoreObject
Browser
Integrations
![Page 74: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/74.jpg)
API User Guide: http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/1-x/api/rest/b_APIC_RESTful_API_User_Guide.html
Object Model Documentation: https://developer.cisco.com/site/apic-dc/documents/mim-ref/
DevNet: https://developer.cisco.com/site/apic-dc/
ACI Toolkit: http://datacenter.github.io/acitoolkit/docsbuild/html/
Using the API Inspector + SDK: http://www.cisco.com/c/en/us/solutions/collateral/data-center-virtualization/application-centric-infrastructure/white-paper-c11-733105.html
Examples: http://github.com/datacenter
ACI API Resources
![Page 75: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/75.jpg)
SNMP (v1, v2, v3), Syslog, NETCONF, RMON, CLI
Programmable
• NX-API
• JSON-RPC
• XML/JSON
• Python scripting
• Customizable CLIs
• BASH access
• Broadcom shell access
• Linux containers
• OpenFlow support
• Cisco onePK™
Automation and
Orchestration
• OpenStack network
plugin
• Chef
• Puppet
• XMPP support
• OpenDaylight integration
Visibility
• Dynamic buffer monitoring
• Enhanced Ethanalyzer
• SMTP email “pipe” output
• Embedded Event Manager
(EEM)
• Flow monitoring
• vTracker
Nexus 9000: Openness of Linux
![Page 76: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/76.jpg)
Nexus ProgrammabilityNexus 3K Nexus 5K/6K Nexus 7K Nexus 9K
Provisioning &
Orchestration
Puppet/Chef Y,
GA Roadmap
Roadmap Roadmap Y,
GA Roadmap
Ansible Y - with NX-API Y – with NX-API Y- with NX-API Y – with NX-API
OnePK Y N N Y
PoAP Y Y Y Y
OpenStack Y Y Y Y
Protocols and
Data Models
XMPP Roadmap Y 7.2 Roadmap
LDAP Future Y Y Y
NetConf/XML Y Y Y Y
NX-API Y 7.2 7.2 Y
Openflow Y Y
(OF 1.0)
Roadmap 7.0(3)
YANG Roadmap Roadmap Roadmap Roadmap
REST Roadmap Roadmap Roadmap Y
Programmatic
Interfaces
Native Python Y Y Y Y
Integrated
container
Y Future Future Y
Guest Shell Roadmap Roadmap Roadmap 7.0(3)
OpFlex Roadmap Future Future Roadmap
![Page 77: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/77.jpg)
#Your python code
#!/usr/env python
import json
import requests
url =
"http://172.25.91.139/ins"
payload = [{'jsonrpc':
'2.0', 'method': 'cli',
'params': ['show
version',1], 'id': '1'}]
………
NX-API
• Available on Nexus 9000
• NX-OS 7.1(2)+
• Create python code from CLI in seconds
Simplified Switch Interaction
HTTP/S
![Page 78: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/78.jpg)
Bash Access & Linux ContainersNexus 9000
![Page 79: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/79.jpg)
Run a Python Script with EEMNexus 7000 + 9000
switch#
switch# conf t
Enter configuration commands, one per line. End with CNTL/Z.
switch(config)# event manager applet testplan
switch(config-applet)# description "Running a python script from an EEM policy test"
switch(config-applet)# event syslog pattern "InsiemeABC"
Configuration accepted successfully
switch(config-applet)# action 1.0 cli local python bootflash:/home/admin/testplan.py
switch(config-applet)# action 2.0 syslog msg testplan done
switch(config-applet)# exit
switch(config)# exit
switch# term mon
switch# python
Copyright (c) 2001-2012 Python Software Foundation; All Rights Reserved
switch# >>> from onxos import *
switch# >>> py_syslog(1, "InsiemeABC")
switch# >>> 2011 Mar 14 17:09:06 switch vshd: InsiemeABC
2011 Mar 14 17:09:06 switch %VSHD-5-VSHD_SYSLOG_CONFIG_I: Configured from vty by admin on vsh.21499
![Page 80: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/80.jpg)
OpenFlow SupportNexus 3000 + 9000
• OpenFlow 1.0 and 1.3 support
• Integration with Cisco ONE Controller and OpenDaylight
• Implemented as an App on Cisco onePK
![Page 81: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/81.jpg)
UCS API – Everything is an Object
XML API
![Page 82: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/82.jpg)
UCS API Documentation
Developer Guide http://www.cisco.com/en/US/docs/unified_computing/ucs/sw/api/ucs_api_book.html
Fault Reference http://www.cisco.com/en/US/docs/unified_computing/ucs/ts/faults/reference/ErrMess.html
Object Model http://developer.cisco.com/web/unifiedcomputing/docs
Third Party Tools http://developer.cisco.com/web/unifiedcomputing/docs
Stand-Alone Guide http://www.cisco.com/en/US/docs/unified_computing/ucs/c/sw/api/b_cimc_api_book.html
SNMP MIB Guide http://www.cisco.com/en/US/docs/unified_computing/ucs/sw/mib/reference/UCS_MIBRef.html
![Page 83: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/83.jpg)
UCS Director API
![Page 84: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/84.jpg)
UCS Director API References
• Developer Guide: http://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/ucs-director/rest-api-guide/4-1/b_Cisco_UCS_Director_REST_Developer_Guide_41.html
• SDK Installation: http://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/ucs-director/rest-api-guide/4-1/b_Cisco_UCS_Director_REST_Developer_Guide_41/b_Cisco_UCS_Director_REST_Developer_Guide_41_appendix_01001.html
• REST API Browser:http://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/ucs-director/rest-api-guide/5-0/b_Cisco_UCS_Director_REST_Developer_Guide_50/b_Cisco_UCS_Director_REST_Developer_Guide_41_chapter_01010.html
![Page 85: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/85.jpg)
Service ProviderBut not exclusively*
Programmability
![Page 86: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/86.jpg)
Tail-f NSO Main Features
Network Equipment Drivers (NEDs)
Service Manager
Device Manager
Physical Networks Virtual Networks
• VNFM
• Controller Apps
• EMS and NMS
Network Apps
Service
Model
Device
Model
Applications
REST, NETCONF, Java, Python, Erlang, CLI, Web UI
NETCONF, REST, SNMP, CLI, etc
Engineers
• Logically centralized network
services
• Data models for data
structures
• Structured representations of:
• Service instances
• Network configuration
and state
• Mapping service operations to
network configuration changes
• Transactional integrity
• Multiprotocol and multivendor
support
![Page 87: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/87.jpg)
OpenDaylight Platform
Hydrogen
• Released February 2014
Helium
• Released October 2014
• 1.87M+ lines of code
• 28 Projects
• 256 Contributors
Lithium
• June 2015 planned release
![Page 88: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/88.jpg)
Cisco Open SDN ControllerREST APIs
RESTCONF APIs
For checking configuration and
operational states
List of exposed Northbound APIs
available via DevNet and on
platform
![Page 89: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/89.jpg)
COSC - Open Developer Eco-system
developer.cisco.com/site/openSDN
Documentation
API Reference Guides
Video
Code samples
Sandbox environment
![Page 90: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/90.jpg)
Management Tools
Programmability
![Page 91: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/91.jpg)
Prime Infrastructure – REST API
https://developer.cisco.com/site/prime-infrastructure/
https://developer.cisco.com/media/prime-infrastructure/api-reference/szier-m8-106.cisco.com/webacs/api/v1/indexcc3b.html?_docs
![Page 92: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/92.jpg)
3rd Party Considerations
• IPAM – REST API's
• LDAP / Authentication
• Databases
• CRM, Business Systems, ERP, etc
• Hypervisor API's
• Service Catalogs / Portals
• Non-Infrastructure API's
• Weather, Location, Time
• IoT Data
Consider External Data and Configuration
• Services
• Load Balancers
• Firewalls
• Intrusion Protection Systems
• Anti-virus Solutions
• Email Security
• Web Application Firewalls
• Phone System / Call Center Queue
• Caching and DDoS Protection
• WAN Service API's
• Cloud Infrastructure
![Page 93: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/93.jpg)
Network Programmability Cisco Education OfferingsCourse Description Cisco Certification
Integrating Business Applications with Network
Programmability (NIPBA);
Integrating Business Applications with Network
Programmability for Cisco ACI (NPIBAACI)
Learn networking concepts, and how to deploy and troubleshoot
programmable network architectures with these self-paced courses.
Cisco Business Application
Engineer Specialist Certification
Developing with Cisco Network Programmability
(NPDEV);
Developing with Cisco Network Programmability
for Cisco ACI (NPDEVACI)
Learn how to build applications for network environments and effectively
bridge the gap between IT professionals and software developers.
Cisco Network Programmability
Developer Specialist Certification
Designing with Cisco Network Programmability
(NPDES);
Designing with Cisco Network Programmability
for Cisco ACI (NPDESACI)
Learn how to expand your skill set from traditional IT infrastructure to
application integration through programmability.
Cisco Network Programmability
Design Specialist Certification
Implementing Cisco Network Programmability
(NPENG);
Implementing Cisco Network Programmability
for Cisco ACI (NPENGACI)
Learn how to implement and troubleshoot open IT infrastructure
technologies.
Cisco Network Programmability
Engineer Specialist Certification
For more details, please visit: http://learningnetwork.cisco.com
Questions? Visit the Learning@Cisco Booth or contact [email protected]
![Page 94: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/94.jpg)
Conclusions
![Page 95: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/95.jpg)
Remember – Just Create Something
http://github.com/nickpowpow/bieberhockey
![Page 96: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/96.jpg)
Conclusions – What to Remember
This is happening. Get Started.
Find a problem, an API, a partner, and play with it.
Make the network a better place
![Page 97: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/97.jpg)
Continue Your Education
• Demos in the Cisco campus
• Walk-in Self-Paced Labs
• Table Topics
• Meet the Engineer 1:1 meetings
• Related sessions
![Page 98: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/98.jpg)
Participate in the “My Favorite Speaker” Contest
• Promote your favorite speaker through Twitter and you could win $200 of Cisco Press products (@CiscoPress)
• Send a tweet and include
• Your favorite speaker’s Twitter handle @nickpowpow• Two hashtags: #CLUS #MyFavoriteSpeaker
• You can submit an entry for more than one of your “favorite” speakers
• Don’t forget to follow @CiscoLive and @CiscoPress
• View the official rules at http://bit.ly/CLUSwin
Promote Your Favorite Speaker and You Could Be a Winner
![Page 99: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/99.jpg)
Complete Your Online Session Evaluation
Don’t forget: Cisco Live sessions will be available for viewing on-demand after the event at CiscoLive.com/Online
• Give us your feedback to be entered into a Daily Survey Drawing. A daily winner will receive a $750 Amazon gift card.
• Complete your session surveys though the Cisco Live mobile app or your computer on Cisco Live Connect.
![Page 100: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/100.jpg)
Thank you
![Page 101: Programming the Network - clnv.s3. · PDF fileOpenDaylight Waterfall NFV Netconf YANG IDE Python SDK Go LXC Container Docker CI/CD Salt Neutron ML2 BASH Eclipse Git ... Integration](https://reader034.fdocuments.net/reader034/viewer/2022052608/5aa1210d7f8b9a8e178ef191/html5/thumbnails/101.jpg)