introduction to data models & cisco's nextgen device level apis: an overview

23

Upload: cisco-devnet

Post on 12-Apr-2017

576 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview
Page 2: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Introduction to Data Models and Cisco's NextGen

Device-Level APIs

Einar Nilsen-NygaardPrincipal Engineer, Cisco

Page 3: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

• Why network programmability matters

• Why data models?

• Industry & Cisco approach

• Tooling

• Conclusion

Agenda

Page 4: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Why Network Programmability Matters

0

100%

67%

Source: Forrester

CAPEX OPEX

33%

0 10 100 1000

Compute Networking

Seconds

Source: Open Compute Project

Network Expenses Deployment Speed

Page 5: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

SDN ControllerIntegration

Open SDN

Controller

Inventory / Topology

Configuration Mgmt

Access ControlScript Automation

DevOps

Custom

Application

Service Provisioning

Fault Mgmt

Configuration Mgmt

ApplicationIntegration

OSS/BSSIntegration

Page 6: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Requirements of NextGen Config Management

Easy to Use

Separation of Configuration and Operational Data

Lots of Tooling

Accessible Format

Error Checking

Backup/Restore Capability

Human and Machine FriendlyRFC3535

May 2003

Page 7: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Separation of models from protocols and encodings

Devices become self-describing: Including definition of constraints

We can apply tool chains: Becomes simpler to generate API language bindings

Becomes simpler to setup data transformation pipelines

Easier to add new protocols and encodings

Why Data Models?

Page 8: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

YANG – https://tools.ietf.org/html/rfc6020

Interface protocols today:

NETCONF – https://tools.ietf.org/html/rfc6241 Evolution of original NETCONF, encompassing YANG data models

RESTCONF – https://tools.ietf.org/html/draft-ietf-netconf-restconf-09

…and any new protocols or encodings...

Which Data Modeling Language?

Page 9: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Cisco’s Approach

9

Page 10: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Data Model Taxonomy

10

• Standard definition (IETF, ITU, OpenConfig, etc)

• Compliant with standard, e.g. “Policy”

• ietf-diffserv-policy.yang,

• ietf-diffserv-classifer.yang,

• ietf-diffserv-target.yang

Open

Industry

Standards

• Vendor-specific definition

• Common across >1 vendor platform• E.g. on Cisco platforms

there may be an OTV model common across IOS-XE and NX-OS

Vendor

Common

• Vendor-specific definition

• Unique to specific vendor platform or OS• e.g. IOS-XE-specific BGP

extensions

Vendor

Specific

Page 11: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

IETF:

https://github.com/YangModels/yang/tree/master/standard/ietf/RFC

Range of basic models standardized Interfaces, notifications, IP address management, etc.

More model in draft status under development: Inventory, ACLs, routing protocols, L2VPN, MPLS, Segment Routing, etc.

IEEE & MEF also spinning up initiatives in areas such as service modeling, 802.3, 802.1, etc.

Open Industry Standards

Page 12: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

OpenConfig:

https://github.com/openconfig/public/tree/master/release/models

Range of basic models:

Interfaces, ethernet, link agg, routing protocols, etc.

More models focused on OpenConfig member use cases:

Optical, telemetry, inventory, etc.

Open Industry Standards

Page 13: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Vendors such as Brocade, Cisco, YumaWorks:

https://github.com/YangModels/yang/tree/master/vendor

Vendor-Specific

Page 14: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Benefits:

Developers can use open models where available, giving commonality across platforms

Native models available for functionality not yet in open models

Platforms can advance native models as required while still maintaining open model compatibility

Native & Open Models

Open Models

Platform Native Models

Platform Config & Oper Data Stores

Map

Client Application

Page 15: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Tooling

15

Page 16: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

pyang (open source)

pip install pyang

https://github.com/mbj4668/pyang

goyang (open source)

https://github.com/openconfig/goyang

YANG Design Studio (open source, AT&T)

https://github.com/openconfig/yang-design-studio

YANG Schema Tools

Page 17: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

pyangbind (open source)

pip install pyangbind

https://github.com/robshakir/pyangbind

JNC (open source)

https://github.com/tail-f-systems/JNC

ODL Yangtools (open source)

https://github.com/opendaylight/yangtools

Code Generation Tools

Page 18: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

ncclient (open source)

pip install ncclient

https://github.com/ncclient/ncclient

libnetconf (open source)

https://github.com/CESNET/libnetconf

JNC (open source)

https://github.com/tail-f-systems/JNC

NETCONF Libraries

Page 19: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

XSLT, various language bindings:

Ruby – “nokogiri”

Python – “lxml”, “ElementTree”

Java – “Xalan”, “SAXON”, etc.

JOLT, JSON-to-JSON transformation

http://bazaarvoice.github.io/jolt/

Dozer, a Java Bean to Java Bean mapper

Combine with something like JAXB and JNC

http://dozer.sourceforge.net

JSON/XML Transformation Tools

Page 20: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

netopeer (open source) https://github.com/CESNET/netopeer

ConfD Basic (freemium) https://developer.cisco.com/site/confD/

MG-Soft (commercial) http://www.mg-soft.com/mgProductsNetConf.html

YANG Forge (open source) https://www.npmjs.com/package/yangforge

Yang Explorer (open source) https://github.com/CiscoDevNet/yang-explorer

More Offerings

Page 21: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Momentum building behind data models for device and network layers

Vendors and operators unifying behind open YANG models

Broad availability of YANG data models at device layer a reality

Community investing in tooling built around YANG models

Easy for users to transition to models

Conclusion

Page 22: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview

Thank you

Page 23: Introduction to Data Models & Cisco's NextGen Device Level APIs: an overview