The current state of routers and host operating systems in regards to process configuration and Interprocess Configuration (IPC) is one of diversity and anachronism. Standardizing both the configuration styles that applications use as well as IPC mechanisms would go a long way to resolve current issues with configuration and operational data management.
The Sysrepo project, an open source project by Deutsche Telekom with contributions by Sartura, aims to resolve the current diverse situation by enabling a standardized protocol/data model set (NETCONF/YANG) for any UNIX/Linux application. Sysrepo team members also participated in the IETF Hackathon in Berlin, where the project received the Most Importance to IETF award.
What is NETCONF/YANG?
The Network Configuration Protocol (NETCONF) is a network management protocol developed and standardized by the IETF. The NETCONF base protocol was Officially published as RFC 4741 in 2006, with a later revision published as RFC 6241 in 2011.
NETCONF is used to perform management functions, mainly targeted at provisioning but also capable of monitoring certain configuration and operational state information. It is based on a client-server architecture where one or more client applications reside within a ISPs operations center and many servers are deployed in the network embedded within network devices.
Some of the key NETCONF configuration management support features include:
- Configuration and state data distinction
- Multiple configuration data stores
- Configuration change validations
- Configuration change transactions
- Selective data retrieval with filtering
- Event notifications streaming and playback
- Extensible RPC mechanism
Figure 1. NETCONF layers
YANG is a data modeling language for the NETCONF network configuration protocol. It was developed by the NETMOD working group in the IETF and was published as RFC 6020 in October 2010. YANG features include:
- Human readability
- Hierarchical configuration data models
- Reusable groupings and types
- Augmentation mechanisms
- Versioning rules
- Supports defining operations
- Modularity of data (through modules and sub-modules)
The standardization of NETCONF management protocol and YANG data modeling is one of IETF’s ways of improving the Internet architecture. Standardization is key in this, as it improves overall protocol compatibility and ensures that all communicating software understand each other.
What is Sysrepo?
The Sysrepo project provides YANG-based datastore functionality to Unix/Linux applications. In doing so, Sysrepo enables applications to store their configuration in the form of provided YANG models instead of e.g flat configuration files. All interfaces using YANG conform to a standard definition common to all platforms that are manageable by the NETCONF standard. Furthermore, Sysrepo will enforce the data constraints defined by YANG model, as well as ensure data consistency of all data stored in the datastore.
The Sysrepo project combines a YANG-based configuration and operational datastore (Sysrepo datastore) with a 2nd generation open source NETCONF server (Netopeer 2 NETCONF server).
Sysrepo is a datastore for configuration and state data of Unix/Linux applications, which provides the following features:
- Centralized repository of YANG-modeled configuration files and state data,
- Simple (XPath -based) API for accessing the configuration from applications,
- Startup, running and candidate datastores support,
- Full transaction and concurrency support, conforming all ACID properties,
- Automatic data consistency and constraints enforcement according to the YANG models,
- No single point of failure – applications do not need any other process to be running to access their configuration.
Sysrepo is integrated with Netopeer 2 NETCONF server and can be easily integrated into any other management agents such as RESTCONF.
Figure 2. High-level Sysrepo overview
Netopeer 2 NETCONF Server
Netopeer 2 is the 2nd generation of the well-known open-source NETCONF server, that uses Sysrepo as the datastore implementation. Together they provide a complete NETCONF management framework for Linux.
Developed by the Tools for Monitoring and Configuration department of CESNET, the Netopeer 2 is based on the new generation of NETCONF and YANG libraries — libyang and libnetconf2.
Ultimately, Sysrepo’s mission is one of providing a YANG-based standard interface to daemons and applications on all network-managed operating systems and OS distributions. With more and more vendors nowadays facing requirements for YANG-compliant data models and out-of-the-box NETCONF support, existing projects such as the Sysrepo project will increasingly grow in importance.
Read more on the Sysrepo project on this link.