onos-proxy

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.

Deployment

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.

E2 Services

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.

SDK Versions

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.