home

Vyatta NOS Architecture Overview

Vyatta Network OS Documentation

Learn how to install, configure and operate the Vyatta NOS, which helps drive our virtual networking & physical platforms portfolio.

Show Page Sections

Management Plane API

The management API is made up of different libraries.

Vyatta Config Perl API

This is the original Vyatta management API. A fairly large portion of the system still uses this API to get access to configuration data.

The API is built as a compatibility layer on top of the newer Configd API with the original behavior retained. Changes to this layer must be checked as some of the actions have subtle implications that scripts may be relying on. These scripts are considered legacy and are currently being replaced by VCI components. 

The API has remained backwards compatible since 2011, only extensions in functionality have been made in ways that were compatible with the old APIs.

Configd API

Configd is a more recent API for interfacing with the configuration infrastructure. This API can manipulate configuration, access configuration, and manage configuration sessions. It is available in several languages, including Go, C, C++, Perl 5, Python 3, Ruby and bash. Each language has the same semantics as its peers with minor additions to provide language native helpers.

The CLI, NETCONF, and RestAPI are all built on top of the configd API. 

 

VCI

The Vyatta Component Infrastructure (VCI) is the latest mechanism for integrating features with the management plane. It consists of a very small API and may only be extended in a backwards compatible way.

The components each expose a data-model consisting of the YANG modules they manage. Configuration data in this model is transformed by the component into a form that will be understood by the service implementing the functionality. Likewise, operational data is retrieved from a service and transformed into a data-model by the component. Components also implement RPCs and react to notifications from other components.  

VCI is the API that the majority of extensions will interact with, it allows an extension to have integration with the management infrastructure layer and consequently all of the northbound interfaces. 

Opd API

The opd API provides access to the operational command tree.

It allows building of operational command interfaces on top of the opd infrastructure. The VNOS operational CLI and REST API both use this API to run operational commands.

AAA Plugin API

The AAA API allows creation of a plugin to integrate with the AAA system of choice, it can either implement command based accounting, path based accounting or both.

YANG

VNOS uses the YANG data modeling language for all user visible information.

This includes configuration data, operational information, RPCs and notifications. Strictly following  Section 10 (https://tools.ietf.org/html/rfc6020#section-10) rules to ensure releases are backwards compatible with each other. This applies even when something may have been modeled sub-optimally in the past.