Five Ws
- Who is about it? IETF (Internet Engineering Task Force)
- What happened? IETF defined a data modeling language for NETCONF protocol for managing equipment configuration.
- When did it take place? SInce 2002 ( RFC 3535 – Overview of the 2002 IASB Network Managemenet Workshop)
- Where did it take place? IETF
- Why did it happen? In response Shortcomings of SNMP/SMI network configuration management (lack of backup-restore support, element configuration, transactions – single or multibox) …
Outline
NETCONF, network management protocol desined to support mnagement 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 and filtering
- Streaming and playback of event notifications
- Extensible remote procedure call mechanism
YANG is a data modeling language designed to write data models for NETCONF protocol, with following features:
- Human readable
- Hierarchical data model configuration
- Resuable types and groupings (structured types)
- Extensibility through augmentation mechanims
- Support definitions of opertaions (RPCs)
- Formal constratints for configuration validation
- Data modularity through modules and submodules
- Well defined versioning rules
NETCONF Layering
NETCONF Operations
- <get-config>: retrieve all or part of a configuration from a data store;
- <get>: retrieve running configuration and device state information;
- <edit-config>: loads all or part of a specified configuration to the specified target configuration;
- <copy-config>: create or replace an entire configuration datastore with the contentes of anothert complete configuration datastore;
- <delete-config>: delete a configuration datastore (Not applicable to running)
- <lock>: locks a device;
- <unlock>: unlocks a device;
- <close_session>: graceful session termination;
- <kill-session>: forced session termination.
YANG Features
- maps directly to NETCONF (XML) content;
- Compact C/Java syntax focused on readability;
- Data type system compatible with next-gen SNMP type system, XML and XSD;
- Translatable do DSDL, RelaxNG(!), Schematron and DSRL… (RFC 6110);
- Informal translation to W3C XML Schema (Pyang, Jyang?);
- Organization
- Leaf, leaf-list, container, lists, grouping, choice
- Data model structure
- Module, submodule, augment, if-feature, when
- Constraints
- must, unique, min-elements, max-elements, mandatory
- Data types
- many built-in, sub-typing, restrictions
- Reusable groupings
- Grouping, uses
YANG example
module acme-sytem { namespace "http://acme.example.com/system"; prefix "acme"; organization "ACME Inc."; contact "joe@acme.example.com"; description "The module for entities implementing the ACME system."; revision 2007-11-05 { description "Initial revision."; } container system { leaf host-name { type string; description "Hostname for this system"; } list interface { key "name"; description "List of interfaces in the system"; leaf name { type string; } leaf type { type string; } leaf mtu { type int32; } } } }
NETCONF Open Source
- Ncclient (python Client)
- NetconfX (java client)
- Netconf4Android (android client)
- netconf4j (java client)
- netopeer (c libnetconf client/server)
- YencaP (client/server)
- Yuma (client/server)
YANG Open Source
A Layered Comparison
SNMP | NETCONF | SOAP | |
Data Models | MIBs | Modules | |
Data Modeling Language | SMI | YANG | |
Management Operations | SNMP | NETCONF | |
RPC Protocol | BER | XML | XML |
Transport Stack | UDP |
SSH BEEP SOAP TLS |
SSL HTTP TCP |
References