The Near-RT RIC, conceptualized by the O-RAN Alliance's Working Group 3 (WG3) [1] and implemented by EURECOM [2, 3], enables dynamic management and optimization of Radio Access Networks (RAN).
- Compile: Use
./full_install.shto build and install the Near-RT RIC software. - Generate Configurations: Use
./generate_configurations.shto create configuration files.- Configuration files can be accessed and modified in the
configsdirectory.
- Configuration files can be accessed and modified in the
- Start the Near-RT RIC: Use
./run.shto start the Near-RT RIC application. - Stop the Near-RT RIC: Terminate the Near-RT RIC with
./stop.sh. - Status: Check if the Near-RT RIC is running with
./is_running.sh. - Logs: Access logs by navigating to the
logsdirectory. - Uninstall: Use
./uninstall.shto remove the Near-RT RIC software.
This installation of the Near-RT RIC supports six xApps.
- KPM Monitor xApp (xapp_kpm_moni, revised xApp):
- Run with
./run_xapp_kpm_moni.sh. - Sets
XAPP_DURATION=-1to run indefinitely and include new metrics (see below).- List of metrics printed to console for each UE sample:
DRB.PdcpSduVolumeDL (kb) - Downlink volume of the UE since the last sample DRB.PdcpSduVolumeUL (kb) - Uplink volume of the UE since the last sample DRB.RlcSduDelayDl (μs) - Delay downlink, (100ms-windowed) per-packet sojourn (SDU to PDU) in microseconds DRB.UEThpDl (kbps) - Downlink throughput of the UE since the last sample DRB.UEThpUl (kbps) - Uplink throughput of the UE since the last sample RRU.PrbTotDl (%) - Percent of resource blocks received since the last sample RRU.PrbTotUl (%) - Percent of resource blocks sent since the last sample
CARR.PDSCHMCSDist.BinX.BinY.BinZ (PDSCH_RBs)- Unlike the other listed metrics (which are per-UE), this one is per-cell (NRCellDU). It reports the distribution of MCS scheduled for PDSCH resource blocks, aligned with 3GPP TS 28.552 [4] clause 5.1.1.12.1 (MCS Distribution in PDSCH). Each bin is incremented by the number of scheduled PDSCH RBs for the corresponding MCS. When SU-MIMO is used, both rank indicators are considered. Different PDSCH MCS index tables are considered when configured differently (TS 38.214 [5] clause 5.1.3.1). RBs used for broadcast are excluded. Each BinX/BinY/BinZ measurement is a single integer value.- BinX: Rank index (1-8)
- BinY: PDSCH MCS table index (1-3)
- BinZ: MCS index (0-31)
- Note that this xApp uses REPORT Style 4 (O-RAN E2SM-KPM clause 7.4.5) with the condition being to match the UE's Slice/Service Type (SST) and Slice Differentiator (SD). The code has been patched to subscribe to 4-octet slice IDs (SST+SD) if SD ≠ 0xFFFFFF, instead of a 1-octet SST (clause 8.3.11).
- List of metrics printed to console for each UE sample:
- Run with
- KPM Monitor to CSV xApp:
- Run with
./additional_scripts/run_xapp_kpm_moni_write_to_csv.sh. - Retains all functionality from xapp_kpm_moni, but rather than outputting to stdout, writes to
logs/KPI_Metrics.csv.
- Run with
- KPM Monitor to InfluxDB v2 xApp:
- Run with
./additional_scripts/run_xapp_kpm_moni_write_to_influxdb.sh. - Retains all functionality from xapp_kpm_moni, but rather than outputting to stdout, writes to a InfluxDB database (/var/lib/influxdb).
- Run with
- MAC + RLC + PDCP + GTP Monitor xApp (xapp_gtp_mac_rlc_pdcp_moni):
- Run with
./additional_scripts/run_xapp_gtp_mac_rlc_pdcp_moni.sh.
- Run with
- RIC Control xApp (xapp_kpm_rc):
- Run with
./additional_scripts/run_xapp_kpm_rc.sh.
- Run with
- RIC Control Monitor xApp (xapp_rc_moni):
- Run with
./additional_scripts/run_xapp_rc_moni.sh.
- Run with
After the KPM Monitor xApp subscribes to the E2 node, metrics of the gNodeB and UE are sent through the E2 interface and received by the xApp. An xApp has been made at flexric/build/examples/xApp/c/monitor/xapp_kpm_moni_write_to_csv which writes the metrics to logs/KPI_Metrics.csv instead of printing them to the console. The Python server at additional_scripts/python_server_for_grafana.py will make this CSV file accessible at http://localhost:3030/KPI_Metrics.csv, and a Grafana [6] dashboard has been created to consume this data and visualize it.
-
Real-Time Metrics: To start the xApp that generates
logs/KPI_Metrics.csv, the Python server that hosts the file, and the Grafana server, run the following../additional_scripts/start_grafana_with_xapp_kpm_moni.sh -
Historical Metrics: Since it is not a requirement for the xApp to actively write metrics to
logs/KPI_Metrics.csv, the Python server and Grafana server can be started without the xApp by running the following../additional_scripts/start_grafana_only.shA sample KPI_Metrics.csv file has been provided, and can be applied with
cp additional_scripts/sample_KPI_Metrics.csv logs/KPI_Metrics.csv. -
Initial Configuration: The dashboard uses the Infinity plugin (yesoreyeram-infinity-datasource [7]), which will require creating a data source under Connections → Data sources → Add data source → Infinity. Configure it under URL, Headers & Params → Base URL → Type "
http://localhost:3030/" → Save & test. -
Stop Grafana: To stop the Grafana server, Python server, and xApp, use
./additional_scripts/stop_grafana_and_python_server.sh.
The Grafana dashboard is accessible at http://localhost:3000 with default credentials being "admin". Upon initial startup, import the following JSON file into the Grafana client by navigating to Dashboards → New → Import: additional_scripts/grafana_xapp_dashboard.json. Please note that the dashboard and the metrics provided with this software are still in development and therefore may display some inaccurate values. Below is a snapshot of the dashboard in its current state.
- Working Group 3: Near-Real-time RAN Intelligent Controller and E2 Interface Workgroup. O-RAN Alliance. https://public.o-ran.org/display/WG3/Introduction
- FlexRIC: an SDK for next-generation SD-RANs. R. Schmidt, M. Irazabal, N. Nikaein. https://dl.acm.org/doi/10.1145/3485983.3494870
- Flexible RAN Intelligent Controller (FlexRIC) and E2 Agent. Mosaic5G. https://gitlab.eurecom.fr/mosaic5g/flexric
- 3GPP TS 28.552: 5G; Management and orchestration; 5G performance measurements. https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3413
- 3GPP TS 38.214: 5G; NR; Physical layer procedures for data. https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3216
- The open-source platform for monitoring and observability. Grafana Labs. https://github.com/grafana/grafana
- Grafana Infinity Datasource. yesoreyeram. https://github.com/grafana/grafana-infinity-datasource
