Skip to content

tum-lkn/QUEST

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QUEST

A. Jano, S. Ayvaşik, Y. Deshpande and W. Kellerer, "QUEST: User-Based Quality of Service Aware Uplink Resource Scheduling", accepted in IEEE Transactions on Network and Service Management.

A closely related version is available as a TechRxiv preprint for reference: https://www.techrxiv.org/doi/pdf/10.36227/techrxiv.176110126.66841255/v1

QUEST is a QoS-aware UL scheduling framework that leverages the 5G QoS model, along with network and device context, to efficiently allocate radio resources.


Repository Structure

  • dataset/ – Experiment datasets used in the paper (2 and 3 UE scenarios)
  • docs/ – Documentation for setup, configuration, and synchronization
  • scripts/ – Automation scripts to deploy components and process results
  • tools/ – Patches and helper tools required to modify external dependencies

System Requirements

QUEST builds on the following external components:

OpenAirInterface (OAI)

IRTT (Interactive RTT Tool)

PTP Synchronization

  • Used for time synchronization between nodes
  • Setup instructions: docs/synchronization.md

Installation and Setup

1. Install OAI Components

Install OpenAirInterface UE, gNB, and CN following the official documentation.

After installation:

  • Apply QUEST patches located in tools/OAI/
  • Ensure all modifications are correctly applied before compilation
  • Modify the uplink scheduler in: openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c

⚠ Only one scheduler configuration flag should be enabled at a time.

Rebuild UE/gNB after applying changes.


2. Install and Patch IRTT

Install IRTT following the official documentation:

https://github.com/heistp/irtt

Then apply QUEST modifications:

  • Apply patches in tools/irtt/

Configuration:

  • IRTT client runs on the UE
  • IRTT server runs on the CN
  • For multi-UE experiments, use different server ports per UE

3. Time Synchronization (PTP)

Configure Precision Time Protocol (PTP) synchronization between nodes:

  • See: docs/synchronization.md

Accurate synchronization is required for valid delay measurements.


4. Running Experiments

The experiment requires 3 UEs and 1 gNB.
A detailed description of the setup and hardware is written in Section VI.A and illustrated in Fig. 5 in the paper. For the best results, we recommend that each UE instance run on a separate PC, and that the Core Network run on a separate PC from the gNB.

Before starting the scripts, prepare 3 UE Configuration files with 3 different IMSIs. The path to the configuration files is present in the UE start script - scripts/run_UE.sh.
These IMSI's must also be preconfigured in the AuthenticationSubscription section of the Core Network Database. Further details and examples can be found on the OAI Deploy tutorial

These conclude the preconfiguring steps on all the deploy scripts are provided in in the scripts/ directory to start:

  • Core Network
  • gNB
  • UE instances
  • IRTT server and clients

Please make sure all file paths are correctly configured for your environment.


Data Collection

Each experiment produces:

  • .csv files containing scheduler-level performance metrics
  • .json files on each UE containing IRTT delay reports

Data Processing

The framework provides utilities to extract and process delay measurements:

  • irtt_json_to_csv.sh – Convert a single .json file into .csv
  • batch_convert.sh – Batch conversion for multiple .json files

Notes

  • All OAI patches must be applied before building components
  • Only one scheduler mode should be active at any time
  • PTP synchronization is mandatory for correct latency evaluation

Evaluation

The gNB_results.csv file include the following info: FRAME, SLOT, UE_RNTI, SINR, TBS, MCS NR_PRBS, HOL_DELAY, UL_DELAY


1. Delay Analysis

python average_CDFs_UEs.py users_3/run_1/scheduler_PF/gNB_results.csv users_3/run_1/scheduler_MT/gNB_results.csv users_3/run_1/scheduler_PB/gNB_results.csv users_3/run_1/scheduler_EDF/gNB_results.csv users_3/run_1/scheduler_M-LWDF/gNB_results.csv users_3/run_1/scheduler_QUEST/gNB_results.csv users_3/run_2/scheduler_PF/gNB_results.csv users_3/run_2/scheduler_MT/gNB_results.csv users_3/run_2/scheduler_PB/gNB_results.csv users_3/run_2/scheduler_EDF/gNB_results.csv users_3/run_2/scheduler_M-LWDF/gNB_results.csv users_3/run_2/scheduler_QUEST/gNB_results.csv users_3/run_3/scheduler_PF/gNB_results.csv users_3/run_3/scheduler_MT/gNB_results.csv users_3/run_3/scheduler_PB/gNB_results.csv users_3/run_3/scheduler_EDF/gNB_results.csv users_3/run_3/scheduler_M-LWDF/gNB_results.csv users_3/run_3/scheduler_QUEST/gNB_results.csv users_3/run_4/scheduler_PF/gNB_results.csv users_3/run_4/scheduler_MT/gNB_results.csv users_3/run_4/scheduler_PB/gNB_results.csv users_3/run_4/scheduler_EDF/gNB_results.csv users_3/run_4/scheduler_M-LWDF/gNB_results.csv users_3/run_4/scheduler_QUEST/gNB_results.csv users_3/run_5/scheduler_PF/gNB_results.csv users_3/run_5/scheduler_MT/gNB_results.csv users_3/run_5/scheduler_PB/gNB_results.csv users_3/run_5/scheduler_EDF/gNB_results.csv users_3/run_5/scheduler_M-LWDF/gNB_results.csv users_3/run_5/scheduler_QUEST/gNB_results.csv

2. User Satisfaction analysis

Collect the UL packet loss for each run:

python extract_loss.py users_3/run_1/scheduler_PF/UE*_irtt_report.json users_3/run_1/scheduler_MT/UE*_irtt_report.json users_3/run_1/scheduler_PB/UE*_irtt_report.json users_3/run_1/scheduler_EDF/UE*_irtt_report.json users_3/run_1/scheduler_M-LWDF/UE*_irtt_report.json users_3/run_1/scheduler_QUEST/UE*_irtt_report.json

Compute user satisfaction:

python compute_utility.py users_3/run_1/scheduler_PF/gNB_results.csv users_3/run_1/scheduler_MT/gNB_results.csv users_3/run_1/scheduler_PB/gNB_results.csv users_3/run_1/scheduler_EDF/gNB_results.csv users_3/run_1/scheduler_M-LWDF/gNB_results.csv users_3/run_1/scheduler_QUEST/gNB_results.csv users_3/run_2/scheduler_PF/gNB_results.csv users_3/run_2/scheduler_MT/gNB_results.csv users_3/run_2/scheduler_PB/gNB_results.csv users_3/run_2/scheduler_EDF/gNB_results.csv users_3/run_2/scheduler_M-LWDF/gNB_results.csv users_3/run_2/scheduler_QUEST/gNB_results.csv users_3/run_3/scheduler_PF/gNB_results.csv users_3/run_3/scheduler_MT/gNB_results.csv users_3/run_3/scheduler_PB/gNB_results.csv users_3/run_3/scheduler_EDF/gNB_results.csv users_3/run_3/scheduler_M-LWDF/gNB_results.csv users_3/run_3/scheduler_QUEST/gNB_results.csv users_3/run_4/scheduler_PF/gNB_results.csv users_3/run_4/scheduler_MT/gNB_results.csv users_3/run_4/scheduler_PB/gNB_results.csv users_3/run_4/scheduler_EDF/gNB_results.csv users_3/run_4/scheduler_M-LWDF/gNB_results.csv users_3/run_4/scheduler_QUEST/gNB_results.csv users_3/run_5/scheduler_PF/gNB_results.csv users_3/run_5/scheduler_MT/gNB_results.csv users_3/run_5/scheduler_PB/gNB_results.csv users_3/run_5/scheduler_EDF/gNB_results.csv users_3/run_5/scheduler_M-LWDF/gNB_results.csv users_3/run_5/scheduler_QUEST/gNB_results.csv

Final plot:

python plot_utility.py

About

Implementation of a 5G scheduling framework developed in OpenAirInterface (OAI), together with supporting datasets including environmental information and RRM measurements for QUEST and representative SoA schedulers.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors