Skip to main content

A library for creating and connecting dApps to Open RAN units.

Project description

dApp Library

A complete tutorial on how to deploy a dApp can be found on the OpenRAN Gym website. Please refer to that guide to instrument your system.

Installation

Python package installation

pip3 install dapps[all]

Manual installation

Clone the repository and install it manually

hatch build
pip3 install dist/*.tar.gz

Launch the Spectrum Sharing dApp

OAI should start before running the dApp

python3 examples/spectrum_dapp.py

This dApp implements a spectrum sharing use case discussed in our paper.

The dApp can be controlled through the following command-line arguments:

  • --ota (store_true, default: False): Specify if this is OTA or on Colosseum
  • --link (str, default: 'zmq', choices: [layer.value for layer in E3LinkLayer]): Specify the link layer to be used
  • --transport (str, default: 'ipc', choices: [layer.value for layer in E3TransportLayer]): Specify the transport layer to be used
  • --save-iqs (store_true, default: False): Specify if this is data collection run or not. In the first case I/Q samples will be saved
  • --control (store_true, default: False): Set whether to perform control of PRB
  • --energy-gui (store_true, default: False): Set whether to enable the energy GUI
  • --iq-plotter-gui (store_true, default: False): Set whether to enable the IQ Plotter GUI
  • --demo-gui (store_true, default: False): Set whether to enable the Demo GUI
  • --timed (store_true, default: False): Run with a 5-minute time limit
  • --model (str, default: ''): Path to the CNN model file to be used
  • --time-window (int, default: 5): Number of input vectors to pass to the CNN model
  • --input-vector (int, default: 1536): Number of I/Q samples per input vector
  • --moving-avg-window (int, default: 30): Window size (in samples) for the moving average used to detect energy peaks in the spectrum
  • --extraction-window (int, default: 600): Number of samples to retain after detecting an energy peak

If you use the dApp concept and/or the framework to develop your own dApps, please cite the following paper:

@article{LACAVA2025111342,
title = {{dApps: Enabling Real-Time AI-based Open RAN Control}},
journal = {Computer Networks},
pages = {111342},
year = {2025},
issn = {1389-1286},
doi = {https://doi.org/10.1016/j.comnet.2025.111342},
url = {https://www.sciencedirect.com/science/article/pii/S1389128625003093},
author = {Andrea Lacava and Leonardo Bonati and Niloofar Mohamadi and Rajeev Gangula and Florian Kaltenberger and Pedram Johari and Salvatore D’Oro and Francesca Cuomo and Michele Polese and Tommaso Melodia},
keywords = {Open RAN, dApps, Real-time control loops, Radio Resource Management (RRM), Spectrum sharing, Positioning, Integrated Sensing and Communication (ISAC)},
abstract = {Open Radio Access Networks (RANs) leverage disaggregated and programmable RAN functions and open interfaces to enable closed-loop, data-driven radio resource management. This is performed through custom intelligent applications on the RAN Intelligent Controllers (RICs), optimizing RAN policy scheduling, network slicing, user session management, and medium access control, among others. In this context, we have proposed dApps as a key extension of the O-RAN architecture into the real-time and user-plane domains. Deployed directly on RAN nodes, dApps access data otherwise unavailable to RICs due to privacy or timing constraints, enabling the execution of control actions within shorter time intervals. In this paper, we propose for the first time a reference architecture for dApps, defining their life cycle from deployment by the Service Management and Orchestration (SMO) to real-time control loop interactions with the RAN nodes where they are hosted. We introduce a new dApp interface, E3, along with an Application Protocol (AP) that supports structured message exchanges and extensible communication for various service models. By bridging E3 with the existing O-RAN E2 interface, we enable dApps, xApps, and rApps to coexist and coordinate. These applications can then collaborate on complex use cases and employ hierarchical control to resolve shared resource conflicts. Finally, we present and open-source a dApp framework based on OpenAirInterface (OAI). We benchmark its performance in two real-time control use cases, i.e., spectrum sharing and positioning in a 5th generation (5G) Next Generation Node Base (gNB) scenario. Our experimental results show that standardized real-time control loops via dApps are feasible, achieving average control latency below 450microseconds and allowing optimal use of shared spectral resources.}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dapps-0.0.3.tar.gz (30.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dapps-0.0.3-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file dapps-0.0.3.tar.gz.

File metadata

  • Download URL: dapps-0.0.3.tar.gz
  • Upload date:
  • Size: 30.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dapps-0.0.3.tar.gz
Algorithm Hash digest
SHA256 f6591d47393d0ff20450438e69e43eaf73e1fc365925401b10ee2428e2b6cf49
MD5 d7c88b2e9e0942cef67938edc7505059
BLAKE2b-256 fb1cde1cda47d74610c1cc704d596d5d9e567bbec7b6f33f3119c3de7de9d51c

See more details on using hashes here.

Provenance

The following attestation bundles were made for dapps-0.0.3.tar.gz:

Publisher: tag-and-release.yml on wineslab/dApp-library

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dapps-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: dapps-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 27.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dapps-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4f0fb7d3a7c55c4a78b7e31f60d4b3b88a532fb152eec31475ccd7c2c8e24e8d
MD5 1edef161bd6303d07a1bc53498c33511
BLAKE2b-256 ff54b0b36258fdc5f3b5cdd23d222c684d6ab4977779aa2c51e0dc3a29aa4e27

See more details on using hashes here.

Provenance

The following attestation bundles were made for dapps-0.0.3-py3-none-any.whl:

Publisher: tag-and-release.yml on wineslab/dApp-library

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page