Skip to content

aygong/srsRAN_Project_Low_Latency

Repository files navigation

Towards URLLC with Open-Source 5G Software

Aoyu Gong, Arman Maghsoudnia, Raphael Cannatà, Eduard Vlad, Néstor Lomba Lomba, Dan Mihai Dumitriu, Haitham Hassanieh

[Paper] [Slides] [Citation] [srsRAN Workshop]

Table of Contents

🧭 Overview

    

This repository provides the code associated with our paper:

Towards URLLC with Open-Source 5G Software

🔧 Environment Setup

Our modifications are built on top of the original srsRAN.

Build From Source

To build and run our modified version, please follow the same environment setup instructions as described in the official srsRAN README.

Docker Image

Alternatively, you can use our pre-built Docker image.

  1. Pull the Docker image
  2. Start the Docker container
  3. Edit the configuration file gnb_low_latency.yml to match your setup (e.g., IP addresses, ports, etc.)
    nano /srsRAN_Project_LowLatency/configs/gnb_low_latency.yml
  4. Start the gNB (CU and DU are also available in the same image using srscu and srsdu commands)
    srsgnb -c /srsRAN_Project_LowLatency/configs/gnb_low_latency.yml

⚙️ gNB Configuration Parameters

You can find the full list of srsRAN configuration parameters here.

We introduce four new configuration parameters to support low-latency modifications:

  • sr_free_access_enable
    • Enables Scheduling Request (SR)-free access to the slice.
    • Optional BOOLEAN (false). Supported: [false, true].
  • min_ul_grant_size
    • Specifies the minimum size (in bytes) of uplink grants assigned to the slice.
    • Optional INT (0). Supported: [0 - 100000].
  • max_proc_delay
    • Sets the maximum allowed DL processing delay in slots.
    • Optional FLOAT (5.0). Supported: [0.0 - 30.0].
    • This value corresponds to the $M$-slot offset.
  • radio_heads_prep_time
    • Sets the maximum allowed preparation time for radio heads in slots.
    • Optional INT (3). Supported: [1 - 30].
    • This value corresponds to the $H$-slot offset.

ℹ️ Note: We have extended the original max_proc_delay parameter to support FLOAT in addition to INT.

🧾 Example Configuration:

cell_cfg:
  slicing:
    - sst: 1
      sd: 0
      sched_cfg:
        sr_free_access_enable: false
        min_ul_grant_size: 512

expert_phy:
  max_proc_delay: 0.5
  radio_heads_prep_time: 1

💡 An example YAML configuration file is provided here.

📄 Citation

If you find the codebase helpful, please consider giving a ⭐ and citing our paper:

@inproceedings{sens2025urllc,
  author = {Gong, Aoyu and Maghsoudnia, Arman and Cannat\`{a}, Raphael and Vlad, Eduard and Lomba Lomba, N\'{e}stor and Dumitriu, Dan Mihai and Hassanieh, Haitham},
  title = {Towards {URLLC} with Open-Source {5G} Software},
  year = {2025},
  isbn = {9798400721083},
  publisher = {Association for Computing Machinery},
  address = {New York, NY, USA},
  url = {https://doi.org/10.1145/3750718.3750743},
  doi = {10.1145/3750718.3750743},
  booktitle = {Proceedings of the 1st Workshop on Open Research Infrastructures and Toolkits for 6G},
  pages = {7–14},
  numpages = {8},
  keywords = {5G, Open-source software, System-level analysis, URLLC},
  location = {Coimbra, Portugal},
  series = {OpenRIT6G '25}
}

😋 Questions or Issues?

If you run into problems or have suggestions, feel free to open an issue or reach out to us.