Configuration and Usage#
The link adaptation plugins are compiled automatically as part of the gNB Docker image build (make build-gnb). No additional build steps are required.
Selecting a Link Adaptation Variant#
A plugin variant is loaded by setting GNB_EXTRA_OPTIONS in the .env file for your configuration (e.g., config/rfsim/.env or config/b200/.env):
# OAI's original link adaptation algorithm (default, no plugin needed)
# (leave GNB_EXTRA_OPTIONS unset or comment it out)
# Simple OLLA — scheduling statistics-based adaptation
GNB_EXTRA_OPTIONS="--loader.link_adaptation.shlibversion _olla"
# Advanced OLLA with HARQ feedback history (recommended)
GNB_EXTRA_OPTIONS="--loader.link_adaptation.shlibversion _mcs_hist_olla"
# Basic logging — OAI-LA with CSV data collection
GNB_EXTRA_OPTIONS="--loader.link_adaptation.shlibversion _log"
# Advanced logging — OAI-LA with HARQ history and CSV data collection
GNB_EXTRA_OPTIONS="--loader.link_adaptation.shlibversion _mcs_hist_log"
The OLLA variants rely on pre-computed data bundled in plugins/link_adaptation/data/AWGN_results/: simple OLLA reads raw BLER-vs-SNR tables (one mcs*_awgn_5G.csv per MCS), while advanced OLLA reads sigmoid-fit parameters from bler_sigma_fit.csv. Both are mounted automatically via the plugins volume — no manual configuration is needed.
Start the system and verify the plugin loaded:
./scripts/start_system.sh rfsim # or b200 for over-the-air
docker compose logs oai-gnb | grep "link_adaptation"
You should see [LOADER] library liblink_adaptation_olla.so successfully loaded.
Data Collection#
The logging and OLLA variants write CSV statistics files to /opt/oai-gnb/plugins/link_adaptation/ inside the container, which maps to plugins/link_adaptation/ on the host via the plugins bind mount. The exact columns depend on the variant: _log and _mcs_hist_log write BLER-window / scheduling counters, while the OLLA variants additionally record reported and effective SNR plus per-UE ACK/NACK counts. The _mcs_hist_* variants include an RNTI column.
Evaluation#
To evaluate and compare link adaptation algorithms under realistic channel conditions, the Real-time Channel Emulator tutorial can be used. It allows controlled, reproducible experiments with site-specific channel models and provides live MCS and BLER visualization via the RIC stats server.