Skip to the content.

–== A WORK IN PROGRESS ==–

A scenic tour through the YANG ecosystem

Introduction

This is a hands-on tutorial for the YANG ecosystem.

YANG is a data modeling language that is used for managing devices. It is quite popular for managing networking devices such as routers, switches, firewalls, load balancers, etc. But in principle, YANG could be used to manage any device such as washing machines, satellites, robots, storage arrays, whatever.

A YANG data model describes what the configurable and operational attributes of the device are. A configuration attribute is an attribute that can be set by the operator, such as the temperature for a washing machine (hot, warm, cold). An operational attribute is an attribute that can only be read by the operator, such as the remaining time for the cycle of a washing machine. The YANG data model can also describe actions (e.g. start a washing cycle) and notifications (e.g. the washing cycle has been completed).

The YANG data model is used to generate a management interface for the device. One example of such a management interface is the command line interface (CLI) which is a an interface intended for humans to configure and monitor the device. Other examples of management interfaces are NETCONF and RESTCONF. These are intended to be used by network management systems (NMSs) or software defined networking (SDN) controllers to configure and monitor the device.

In this tutorial we won’t spend much time on the theory of what YANG, CLI, NETCONF, or RESTCONF are. Instead, we will take a very hands-on approach and dive right in. We will define a toy YANG data model for a router; it models only the IPv4 addresses on a set of interfaces.

Then, we will “take a tour through the YANG ecosystem”. We will explore various open source and commercial tools that do something with our toy YANG data model. Some tools allow us to validate the correctness of the YANG data model. Other tools allow us to generate the code that would run on the managed network devices: the CLI/NETCONF/RESTCONF server code that actually reflects changes in the configuration onto the actual hardware. And other tools yet again allow us to generate the code that runs in the network management system, i.e. the NETCONF/RESTCONF client code.

We take a very hands-on approach for each tool that we explore: we explain how to install the tool and how to use it to do something practically useful.

For a list of links to standards and tutorials related to YANG, NETCONF, RESTCONF, etc. see the references page.

Getting started

This tutorial is written in such a way that you can follow along and run each example yourself. For instructions on how to go to install the necessary software see the setting up the environment for this tutorial page.

A very simple example YANG data model: interfaces.yang

Throughout this tutorial we will be using a simple example YANG data model called interfaces.yang which is described in detail in the example YANG data model page.

YANG data model visualization, validation and transformation tools

These tools validate YANG data models for correctness and transform YANG data models into other formats such as a text summary, an HTML summary, a UML diagram, etc.

Open source:

Online:

Commercial:

TODO: Move some of the graphical YANG model browsers from down below to here.

NETCONF / RESTCONF servers

NETCONF / RESTCONF servers are intended to implement the on-device management plane for hardware devices. They typically provide the following functionality:

Open source:

Commercial:

NETCONF / RESTCONF clients

NETCONF / RESTCONF clients are executable tools that allow a client-side user to manage devices that offer a server-side NETCONF / RESTCONF interface. They typically provide the following functionality:

Commercial:

NETCONF / RESTCONF client libraries

These tools are libraries or modules in a particular programming language (e.g. C, C++) that provide NETCONF and/or RESTCONF client functionality to software developers:

Open source:

Commercial:

YANG authoring tools

YANG authoring tools provide an integrated development environment (IDE) that help you author and manage YANG data models.

Commercial:

Other

I still have to look at the following tools and classify them: