Let's get started

What is NETCONF?

A network managing protocol to configure network elements.

It transports xml (json) via SSH.

<rpc-reply message-id="1" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <data>
    <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
      <interface>
       <name>eth0</name>
       <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type>
       <enabled>true</enabled>
       <ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
         <address>
            <ip>2001:db8:c18:1::3</ip>
            <prefix-length>128</prefix-length>
          </address>
        </ipv6>
      </interface>
    </interfaces>
  </data>
</rpc-reply>

What is YANG?

A data modeling language for the definition of data sent over the NETCONF network configuration protocol. 
It is a schema to validate xml.

 container interfaces {
  description
    "Interface configuration parameters.";
  list interface {
    key "name";
    leaf name {
      type string;
    }
    leaf type {
      type identityref {
        base interface-type;
      }
      mandatory true;
    }
    leaf enabled {
      type boolean;
      default "true";
    }
  }  // list interface
}  // container interfaces



NETCONF

NETCONF was designed based on Operators Requirements, which are documented in RFC3535. It addresses security topics and operational and maintenance topics.

What is the difference?


Protocol:

SNMP

NETCONF

SOAP

REST

RESTCONF

gRPCWhat comes next ...

Transport Stack

UDP
(connectionless)

SSH
TCP

SSL
HTTP
TCP

SSL
HTTP
TCP

SSL
HTTP
TCP

HTTP/2
TCP

Encoding

BER

XML (new JSON)

XML

XML, JSON

XML, JSON

binary

Resources
(filter mechanism)

OIDs

Path
(xPath on server)


URLs

URLs

URLs

Data models

MIBs

YANG modules

WSDL, XSD


YANG modules

Protocol Buffers

Data Modeling Language

SMI

YANG

WSDL, XSD

Undefined, (WSDL), WADL, text…

YANG

Protocol Buffers

Management Operations

SNMP operations

NETCONF operations

In the XML Schema, not standardized

HTTP operations

HTTP operations

HTTP/2 operations

SDO (like)

IETF

IETF

W3C

W3C

IETF

Google

Network Management Datastore Architecture (RFC 8342)


configuration datastore:

The datastore holding the complete set of configuration data that is required to get a device from its initial default state into a desired operational state.

running configuration datastore:

A configuration datastore (<running>) holding the complete configuration currently active on the device. The running configuration datastore always exists.

candidate configuration datastore:

A candidate datastore (<candidate>) that can be manipulated without impacting the device's current configuration and that can be committed to the running configuration datastore. Not all devices support a candidate configuration datastore.

startup configuration datastore:

The startup datastore (<startup>) holding the configuration loaded by the device when it boots. Only present on devices that separate the startup configuration datastore from the running configuration datastore.

operational datastore:

The operational state datastore (<operational>) is a read-only datastore that consists of all "config true" and "config false" nodes defined in the datastore's schema.



NETCONF Operations


OperationDescription
get

Retrieve running configuration and device state information.

get-configRetrieve all or part of a specified configuration datastore.
edit-config

Loads all or part of a specified configuration to the specified target (<running>, <candidate>) configuration datastore.

  operation-types: merge, replace, create, delete, remove

copy-config

Create or replace an entire configuration datastore with the contents of another complete configuration datastore.

delete-configDelete a configuration datastore.  The <running> configuration datastore cannot be deleted.
(partly-) lockIt allows the client to lock the entire configuration datastore system of a device.
(partly-) unlockReleases a configuration lock, previously obtained with the <lock> operation.
commit

Sets the running configuration to the current contents of the candidate configuration.

validate

This protocol operation validates the contents of the specified configuration.

close-session

Request graceful termination of a NETCONF session.

kill-session

Force the termination of a NETCONF session.

(hello-message)(exchange of yang capabilities (yang modules) between server and client)

How does it work?

(one of x possibilities)



YANG

  • YANG is a data modeling language for NETCONF (and RESTCONF) configuration and state data.
  • It defines the syntax of the exchanged xml (and json) data between a NETCONF client (e.g. OpenDaylight) and a NETCONF server (a device) 


Build-in data types

Name

Description

binary

Any binary data

bits

A set of bits or flags

boolean

"true" or "false"

decimal64

64-bit signed decimal number

empty

A leaf that does not have any value

enumeration

Enumerated strings

identityref

A reference to an abstract identity

instance-identifier

References a data tree node

[u]int[8|16|32|64]

[8|16|32|64]

-bit [un]signed integer

leafref

A reference to a leaf instance

string

Human-readable string

union

Choice of member types

Common data types

ietf-yang-types

Equivalent SMIv2 type

counter32

Counter32 (SNMPv2-SMI)

zero-based-counter32

ZeroBasedCounter32 (RMON2-MIB)

counter64

Counter64 (SNMPv2-SMI)

zero-based-counter64

ZeroBasedCounter64 (HCNUM-TC)

gauge32

Gauge32 (SNMPv2-SMI)

gauge64

CounterBasedGauge64 (HCNUM-TC)

object-identifier

OBJECT IDENTIFIER

object-identifier-128


yang-identifier


date-and-time


timeticks

TimeTicks (SNMPv2-SMI)

timestamp

TimeStamp (SNMPv2-TC)

phys-address

PhysAddress (SNMPv2-TC)

mac-address

MacAddress (SNMPv2-TC)

xpath1.0


hex-string


uuid


dotted-quad



ietf-inet-types

Equivalent SMIv2 type

ip-version

InetVersion (INET-ADDRESS-MIB)

dscp

Dscp (DIFFSERV-DSCP-TC)

ipv6-flow-label

IPv6FlowLabel (IPV6-FLOW-LABEL-MIB)

port-number

InetPortNumber (INET-ADDRESS-MIB)

as-number

InetAutonomousSystemNumber

ip-address


ipv4-address


ipv6-address


ip-address-no-zone


ipv4-address-no-zone


ipv6-address-no-zone


ip-prefix


ipv4-prefix


ipv6-prefix


domain-name


host


uri

Uri (URI-TC-MIB)


RFC 3535  Overview of the 2002 IAB Network Management Workshop (see chapter 3 – Requirements by Network Operators)  

RFC 6241  Network Configuration Protocol (NETCONF) 

RFC 6020  YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)

RFC 6991  Common YANG Data Types

RFC 7950  The YANG 1.1 Data Modeling Language

Overview  NETCONF and YANG Overview

Tutorial    YANG Tutorial

Tutorial  YANG Boot Camp

pyang  An extensible YANG validator and converter in python

pyang  pyang documentation


  • No labels

3 Comments

  1. Do you have an example of converting OIM to UML to Yang?

  2. It is my understanding that this will be a manual process following ISOMII guidelines between now and when UML2YANG tool becomes "modernized" and available again ...