How giorgiomess/oran-xapp-project works
This repository is a proof-of-concept O-RAN PHY/MAC metrics xApp paired with a gNB emulator. The main workflow discovers gNBs through the RIC, subscribes for metrics, receives and parses indications, and appends cell-load and per-UE measurements to CSV; a separate visualization tool reads those files for plots and summaries. The emulator maintains a fixed UE fleet and generates measurements before replying over the custom protobuf/UDP service model. The README documents the RIC and transport topology; unsampled implementation details are not inferred.
Main entry points: ran_metrics_xapp.py Metrics xApp · gnb_message_handlers.c gNB Message Handler · visualize_ran_metrics.py CSV Visualization · ran_messages.proto Custom RAN Schema
Components 13
gNB Emulator
- gNB Message Handler
gnb_message_handlers.c - Handler API
gnb_message_handlers.h - UE and PRB State
gnb_message_handlers.c - Sampled Measurements
gnb_message_handlers.c
Metrics Collection
- Custom RAN Schema
ran_messages.proto - Metrics xApp
ran_metrics_xapp.py
CSV Outputs
- Cell Load CSV
ran_metrics_xapp.py - UE Metrics CSV
ran_metrics_xapp.py
Visualization
- CSV Visualization
visualize_ran_metrics.py - Plots and Summary
visualize_ran_metrics.py
Other components
- Near-RT RIC
- UDP Transport
- Analyst
Connections 15
- Handler API → gNB Message Handler: declares entry point
gnb_message_handlers.h - gNB Message Handler → UE and PRB State: uses state
gnb_message_handlers.c - gNB Message Handler → Sampled Measurements: builds reports
gnb_message_handlers.c - Sampled Measurements → Custom RAN Schema: encodes messages
gnb_message_handlers.c - Metrics xApp → Custom RAN Schema: serializes requests
ran_metrics_xapp.py - gNB Message Handler → UDP Transport: receives and replies
README.md - UDP Transport → Metrics xApp: carries requests and reports
README.md - Metrics xApp → Near-RT RIC: discovers and subscribes
ran_metrics_xapp.py - Near-RT RIC → Metrics xApp: delivers indications
ran_metrics_xapp.py - Metrics xApp → Cell Load CSV: appends cell load
ran_metrics_xapp.py - Metrics xApp → UE Metrics CSV: appends UE metrics
ran_metrics_xapp.py - Analyst → CSV Visualization: runs analysis
visualize_ran_metrics.py - Cell Load CSV → CSV Visualization: loads cell data
visualize_ran_metrics.py - UE Metrics CSV → CSV Visualization: loads UE data
visualize_ran_metrics.py - CSV Visualization → Plots and Summary: generates figures
visualize_ran_metrics.py