VCI Bus

The VCI Bus is a communications mechanism for DANOS Management Plane components. VCI components communicate with one another via the VCI Bus. These components implement the interface between the common VCI interface and the interface required for interacting with a control plane service. The Northbound Management Interfaces interact with this common VCI interface to configure, query, invoke actions, and listen for events for a given control plane service.

The VCI Bus currently uses DBus as a transport mechanism. Native DBus clients are not supported however as VCI imposes a stricter protocol on components that communicate over it. The exception here is development time debugging in which the native "busctl" program can be quite useful. VCI's use of DBus may change over time as other communications technologies are explored and should not be relied upon. Components should only communicate to each other on this bus using the VCI libraries. The VCI Bus is a separate DBus instance from the "system" and "session" DBus instances, both the "system" and "session" busses are available for native DBus use on DANOS if a control plane protocol needs DBus for IPC.

The VCI Bus uses RFC7951 encoded strings for encoding of Configuration, Operational State Data, RPCs and Notifications between endpoints. Configd acts as the interface to the bus for Northbound Management Protocols and provides data aggregation and authorization services. Components may communicate with each other natively via VCI and do not need to talk via Configd.

Related Source Code

https://github.com/danos/vci