ROC: Runtime Control

ROC (Runtime Operational Control) is the Aether component that

a. maintains operational state that may change at runtime, and 

b. exports a Northbound Interface that administrators use to control Aether.


Models

ROC is driven by a versioned model defined in the YANG language. This model is an abstraction of the configuration of the underlying SD-Core and to a lesser extent the SD-RAN.

The Aether 2.1 specific model defines the top level objects like Site and sub-objects like Small Cell, Sim Card, Device, Slice etc. The Application is also a top level object that can be deployed across Sites.

ROC can support several models simultaneously to support different versions of SD-CORE (e.g. during an upgrade).

ROC REST API

Through tooling, the ROC API definition and implementation is created from this model as aether-roc-api.


Config store

ROC builds on µONOS, in particular, the onos-config microservice, which is also driven off the YANG models, providing transactional updates with a distributed storage backend.

onos-config has a gNMI interface on the Northbound and pushes configuration changes to registered devices or services on the Southbound (also through gNMI). 


SD-Core Adapter

ROC updates the SD-Core through the SD-Core Adapter (which is one of these registered services). As ROC pushes these changes down to SD-Core it translates them in to the REST API of SD-Core (web-config).

The SD-Core Adapter also has the ability to listen to updates from the SD-Core and to make these available through gNMI up to onos-config and up to the aether-roc-api. 


ROC GUI

The ROC GUI (aether-roc-gui) is a Web UI that sits in front of the  aether-roc-ui giving a user friendly view of the aether-roc-api. While some tooling exists to help update the UI for new models it is not a fully automated process.

The ROC GUI, API and onos-config are multi-tenancy capable, with Authentication through Keycloak (OIDC) and Authorization using Open Policy Agent.

Related pages