Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The management plane consists of the configuration and operational infrastructure. Extensions that are built on these layers include the CLI, RestAPI, NETCONF daemon, all of our feature integration components and any other management scripts.

Configd

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.

...

RPCs are proxied via configd to provide a single entry point for making requests of individual components.

Opd

Opd is a daemon that creates modeled operational commands. These commands are human friendly 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.

...

  1. Legacy template based modeling

  2. YANG DSL based modeling

VCI Bus

The VCI Bus is a message bus that is used for communications between VCI components. This bus is implemented using a 3rd party message bus for data transport (DBus currently) and imposes additional semantics in its API such that one cannot effectively use native 3rd party clients to talk on this bus. The VCI Bus provides access to component's ConfigurationOperational StateRPCs, and Notifications in RFC7951 formatted JSON data. VCI Components and clients may subscribe to emitted notifications via this bus, access to other information should be done via 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 act to translate information that a service requires from the data modeled such that it is presentable to the native service. VCI Components and YANG definitions are how one integrates new system features into the management plane APIs.

Provisiond

Like many long lived systems DANOS has a fair amount of legacy code. Provisiond is a VCI component that allows this legacy code to continue to function and interact with other VCI Components. It implements support for our legacy YANG extensions "commit-action" scripts, "call-rpc" scripts, "get-state" scripts. This is called out because, several of the older features in DANOS will still be using this legacy interaction model. We are in the process of porting these features to use VCI components natively, in the mean time provisiond exists to provide the required bridge. The legacy code called from these scripts interact with other parts the system using the various extension APIs and native Linux APIs.

Control Plane

Route broker

The route broker is a daemon that  ensures that eventual consistency is achieved between the control plane, kernel, and dataplane FIB. This daemon is able to track which routing information has be given to each of the interested parties. The daemon uses a pull model from the clients and coalesces updates to the routing information it is tracking for each client. The route broker is attached to FRR via the Zebra FIB Push Interface. The dataplane will connect to this broker to synchronize routing state when it starts up.

Vplaned

Vplaned is a daemon that manages interaction with the dataplane. The dataplane has a need for fast restart and hotplug support. Vplaned provides an intermediate processing stage for netlink and configuration commands and supports these behaviors for the dataplane. Both netlink and configuration commands active commands are stored in vplaned. On restart of the dataplane these active commands can be replayed to the dataplane. Additionally, hotplug interfaces can be supported in the same fashion.

...

The format of configuration commands sent to vplaned is JSON with either a base64 protobuf blob or text over a ZMQ socket. This was done for compatibility when creating the protobuf based configuration protocol.

Dataplane

The dataplane is a combination of the DPDK based software forwarding pipeline and the FAL interface to hardware forwarding pipelines. It provides the necessary mechanisms for bridging the DPDK pipeline with switching silicon based on user configuration.

...