Implementation of the E3 Agent for dApps and E3AP
These changes introduce an E3 Agent for dApps in the OAI codebase. dApps are real-time microservices designed to operate within the O-RAN ecosystem, enabling sub-10 ms Artificial Intelligence (AI) routines in the Radio Access Network (RAN). The E3 Agent enables spectrum sensing, frequency-domain signal logging, and dynamic PRB (Physical Resource Block) policies through IPC/ZMQ communication with dApps or xApps.
The dApps are designed for co-location with the CU/DU, where it can interact directly with user-plane data to enable different network management scenarios such as optimizing network slicing, scheduling, and resource management.
A python library for the creation of the dApps is available here.
Additional information about dApps:
Major changes introduced through this MR
- Introduced E3 Agent with modular design:
-
openair1/E3AP/folder includes ASN.1 definitions, handlers, and connectors. - Modular connector abstraction for ZMQ and POSIX IPC, allowing flexible deployment options.
-
-
CMakeLists.txt: NewE3_AGENToption (ON/OFF) to enable/disable E3 support. -
build_oaiscript: Added--build-e3option. - Configuration entries added under
E3Configurationin example.conffiles. - Added a new T-tracer event:
GNB_PHY_UL_FREQ_SENSING_SYMBOL. - Integration of spectrum sensing logic in
phy_procedures_nr_gNB.cand delivery over IPC. - Scheduler extended to accept PRB usage hints from the E3 Agent.
- Dynamic PRB blockage where PRBs marked as unavailable (
0x3FFF) are excluded from DL/UL scheduling. - Extended tracer logs to include E3AP logs:
-
LEGACY_E3AP_INFO,ERROR,WARNING,DEBUG,TRACE.
-
- Add support for Unix Domain sockets (UDS) in the T tracer
utils.c
Notes
- IPC permissions (
/tmp/dapps) are handled to allow group-level access (chmod 0777+chown). This is a limitation due to the root (OAI) vs non-root (dApp) situation. The E3 transport layers not depending on IPC are not affected by this.
Edited by Andrea Lacava