ONOS side-car proxy for various subsystems, e.g. E2T
The main purpose of the sidecar proxy is to absorb the complexity of interfacing with various µONOS subsystems. This allows relatively easy implementations of the SDK in various languages, without re-implementing the complex algorithms for each language.
Presently, the proxy implements only E2T service load-balancing and routing, but in future may be extended to accommodate sophisticated interactions with other parts of teh µONOS platform.
The proxy is intended to be deployed as a sidecar container as part of an application pod. Such deployment
can be arranged explicitly by including the proxy container details in the application Helm chart, but an
easier way is to include the following metadata annotation as part of the deployment.yaml
file.
annotations:
proxy.onosproject.org/inject: "true"
This annotation will be detected by the onos-app-operator
via its admission hook which will augment the
deployment descriptor to include the proxy container as part of the application pod automatically.
The proxy container exposes a locally accessible port on localhost:5151
where it hosts the following services:
- E2 Control Service - allows issuing control requests to E2 nodes
- E2 Subscription Service - allows issuing subscribe and unsubscribe requests to E2 nodes
The E2 proxy tracks the E2T and E2 node mastership state via onos-topo
information and appropriately forwards
gRPC requests to the E2T instance which is presently the master for the given target E2 node. The target E2 node
ID is extracted from the E2AP request headers
The mastership information is derived from the MastershipState
aspect of the E2 node topology entities and
from the controls
topology relations setup between the E2T and E2 node topology entities.
The proxy does not manipulate the messages passed between the application and the E2T instances in any manner.
The onos-ric-sdk-go
version 0.7.30
or greater and onos-ric-sdk-py
version 0.1.6
or greater expect
the sidecar proxy to be deployed to work correctly.