The management plane consists of the configuration and operational infrastructure.
Extensions built on these layers include the CLI, RestAPI, NETCONF daemon, and all of the feature integration components and other management scripts.
Configd is a daemon that manages access to the system's desired configuration, operational data and RPCs.
The structure of the information stored by configd is modeled in the YANG data modeling language. Configd also provides AAA interfaces for both command and data path based AAA.
Configuration access is transactional. Transactions are based on the notion of a session.
Open a session
Make changes to the private candidate datastore
Commit those changes
If required, make more changes and commits
End the session
Candidate datastores in all sessions are automatically re-based onto a new running datastore whenever another session commits a set of changes.
Operational data access is aggregated and filtered in configd as defined in the request's structure in configd's API.
RPCs are proxied through configd to provide a single entry point for making requests of individual components.
Opd is a daemon that creates modeled operational commands.
These commands are simpler versions of YANG based RPCs and tree access. These commands typically call into configd to access information and present it to a user in a nicer way than the raw data returned via configd.
Opd backs the operational mode shell and runs commands in an appropriate context based on how they are modeled.
Opd supports two modeling languages:
Legacy template based modeling
YANG DSL based modeling
The VCI Bus is a message bus that is used for communications between VCI components.
This VCI bus is implemented using DBus message bus for data transport and imposes additional semantics in its API so that it cannot effectively use native 3rd party clients to talk on this bus.
The VCI Bus provides access to component's as defined in RFC7951 (https://tools.ietf.org/html/rfc7951) formatted JSON data
Operational State (https://tools.ietf.org/html/rfc6020#section-4.2.3)
VCI Components and clients may subscribe to emitted notifications using this bus, access to other information should be done using configd in order to receive properly formed aggregate data.
VCI Components are a bridge between the YANG modeled data and the native service implementing some required functionality.
These components translate information that a service requires from the data modeled so that it is presentable to the native service. VCI Components and YANG definitions are how new system features are integrated into the management plane APIs.
Provisiond is a VCI component that allows legacy code to continue to function and interact with other VCI Components.
There is support for legacy YANG extensions, commit-action, call-rpc, and get-state scripts.
Several of the older features in VNOS still use this legacy interaction model, these features are in the process of being ported to use VCI components natively, therefore provisiond exists to provide the required bridge. The legacy code called from these scripts interacts with other parts the system using various extension APIs and native Linux APIs.