The architecture of an xApp consists of the code implementing the xApp's logic and the RIC libraries that allow the xApp to
- Send and receive messages.
- Read from, write to, and get notifications from the SDL layer.
- Write log messages.
Additional libraries will be available in future versions including libraries for setting and resetting alarms and sending statistics.
The O-RAN standard interfaces (O1, A1, and E2) are exposed to the xApps as follows:
- xApp will receive its configuration via K8s ConfigMap - the configuration can be updated while the xApp is running and the xApp can be notified of this modification by using inotify().
- xApp can send statistics (PM) either by (a) sending it directly to VES collector in VES format, (b ) by exposing statistics via a REST interface for Prometheus to collect
- xApp will receive A1 policy guidance via an RMR message of a specific kind (policy instance creation and deletion operations)
- xApp can subscribe to E2 events by constructing the E2 subscription ASN.1 payload and sending it as a message (RMR), xApp will receive E2 messages (e.g., E2 INDICATION) as RMR messages with the ASN.1 payload. Similarly xApp can issue E2 control messages.