Postponing Complexity Collapse Shelly Cadora Technical Marketing Engineer, Cisco Systems @scadora APIs and Config Automation
Jul 04, 2015
Postponing Complexity Collapse
Shelly Cadora
Technical Marketing Engineer, Cisco Systems
@scadora
APIs and Config Automation
The future is already here.
It’s just not evenly distributed
William Gibson
3
SDN Is The Future
Source: http://blogs.gartner.com/andrew-lerner/2014/06/16/the-state-of-sdn-adoption/
4
NETCONF is an IETF Config Management Protocol
V 1.0
• RFC 3535 Background and requirements
• RFC 4741 1.0 Base NETCONF Protocol
• RFC 4742NETCONF over SSH
V 1.1
• RFC 6241 – 1.1 Base NETCONF Protocol
• RFC 6242 –NETCONF over SSH
Extensions
• RFC 5277 Notifications
• RFC 5717 Partial Locking
• RFC 6243 With defaults
• RFC 6244 NETCONF + YANG Architectural Overview
Content
Operations
Messages
Transport
Protocol Stack
Goals: Easy to Use, Accessible, Separate Config and
Operational Data, Error Checking, Backup/Restore,
Human and Machine Friendly, Lots of Tooling
5
NETCONF <get-config> Response<?xml version="1.0"?>
<rpc-reply message-id="11">
<data>
<Configuration>
<Hostname MajorVersion="1" MinorVersion="0">teddy</Hostname>
<IPDomain MajorVersion="2" MinorVersion="0">
<VRFTable MajorVersion="2" MinorVersion="0">
<VRF><Naming><VRFName>default</VRFName></Naming>
<Name>cisco.com</Name>
</VRF></VRFTable></IPDomain>
...
</Configuration> </data>
</rpc-reply>
]]>]]>
6
REST: An Architectural Style and An API
HTTP GET
HTML
Describes how data
should be displayed
to please human
viewer
HTTP GET
JSON/XML
Describes data in a
format applications
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
7
Routers Can Have REST APIs
JSON Format
• JavaScript Object Notation
• A light-weight, open standard, human
readable data interchange format
• A more compact alternative to XML
• RFC 4627
8
And So Can Networks (via a Controller)
9
DevOps: Applying IT Automation Tools to Networks
10
Software Designed Networking
APIs
Automation
Separation of Concerns
Data ModelsPrinciple of
Least Knowledge
Abstraction
Architectural Style
Design Patterns
What programming tools give you is the ability to manage complexity. The limiting factor for a lot of programming projects is our brains, our limited ability to manage complexity...
What good programming languages and good programming style allows us to do is postpone complexity collapse, postpone the point where we can’t make any more changes
Allen Downey
Thanks