This repository contains the implementation associated with the research paper:
Enabling Real-Time Programmability for RAN Functions: A Wasm-Based Approach for Robust and High-Performance dApps
Authors: João Paulo Esper, Yure Freitas, Pedro Souza, Bruno Silvestre, João F. Santos, Alexandre Huff, Cristiano Both, Kleber Cardoso
Status: The paper is currently under review. However, the arXiv version is available at this link.
This project implements a WebAssembly (Wasm)-based framework for programmable RAN functions, enabling the deployment of high-performance distributed applications (dApps) directly within the network infrastructure.
The system leverages:
- WebAssembly (Wasm) for portable and secure execution
- WASI SDK for compiling Wasm modules
- ASN.1 tools for protocol structure generation
- Rust-based runtime for executing Wasm components
The goal is to provide a robust and efficient platform for real-time network programmability, particularly targeting programmable Radio Access Network (RAN) environments.
The implementation has been tested with the following environment:
| Component | Version |
|---|---|
| OS | Ubuntu 22.04 LTS |
| WASI SDK | 25.0 |
| Rust | Stable |
| ASN1C | Nokia ASN.1 compiler |
The code may work on other Linux distributions, but compatibility is only guaranteed for Ubuntu 22.04.
runtime/ Rust-based Wasm runtime
Makefile Wasm build system
sudo apt update
sudo apt install \
curl \
build-essential \
autoconf \
automake \
libtool \
bison \
flex \
wget \
git \
unzipThis project requires Eigen, please refer to https://gitlab.com/libeigen/eigen.
Here is how to download Eigen version 5.0.1. Please, keep the files inside the root directory of this project.
cd paper-JYPBJACK-2026/
wget https://gitlab.com/libeigen/eigen/-/archive/5.0.1/eigen-5.0.1.zip
unzip eigen-5.0.1.zip && mv eigen-5.0.1 eigen && rm eigen-5.0.1.zipThis project requires the Nokia ASN.1 compiler.
cd /tmp
git clone https://github.com/nokia/asn1c
cd asn1c
test -f configure || autoreconf -iv
./configure --prefix=/opt/asn1c
make
sudo make installThe compiler will be installed at:
/opt/asn1c
Download and extract the WASI SDK.
cd /opt
sudo wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-linux.tar.gz
sudo tar -xvf wasi-sdk-25.0-x86_64-linux.tar.gzThe SDK will be installed at:
/opt/wasi-sdk-25.0-x86_64-linux
This project requires the Rust toolchain. Rust can be installed using rustup, the official Rust installer and version manager.
Please refer to the official Rust documentation:
https://rust-lang.org/tools/install
At the time of writing, Rust can be installed with the following command:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shAfter the installation completes, load the Rust environment variables into your current shell:
. "$HOME/.cargo/env"The runtime responsible for executing Wasm modules is implemented in Rust.
Compile it with:
cd paper-JYPBJACK-2026/
cd runtime
cargo build --releaseThe compiled binaries will be available in:
runtime/target/release
After installing all required dependencies, compile the WebAssembly
implementation using the Makefile located in the project root
directory.
Run the following command:
cd paper-JYPBJACK-2026/
make clean wasm \
ASN1C_PATH=/opt/asn1c \
WASI_SDK_PATH=/opt/wasi-sdk-25.0-x86_64-linuxWhere:
ASN1C_PATHspecifies the installation directory of the asn1c compiler.WASI_SDK_PATHspecifies the installation directory of the WASI SDK used to compile WebAssembly modules.
This command will:
- Clean any previous build artifacts.
- Compile the Spectrum Sharing dApp source code.
- Generate the WebAssembly module used by the runtime.
The resulting WebAssembly binary will be generated at:
src/spectrum.wasm
This file is the runtime module that implements the Spectrum Sharing dApp logic.
After compiling, the Wasm Spectrum Sharing dApp can be executed with:
cd runtime
./target/release/runtime ../src/spectrum.wasmFor more information on how to build the OAI enviroment, please refer to: https://openrangym.com/tutorials/dapps-oai
Please do not forget to cite our paper! :)
@misc{esper2026enablingrealtimeprogrammabilityran,
title={Enabling Real-Time Programmability for RAN Functions: A Wasm-Based Approach for Robust and High-Performance dApps},
author={João Paulo Esper and Yure Freitas and Pedro Souza and Bruno Silvestre and Joao F. Santos and Alexandre Huff and Cristiano Both and Kleber Cardoso},
year={2026},
eprint={2603.17880},
archivePrefix={arXiv},
primaryClass={cs.NI},
url={https://arxiv.org/abs/2603.17880},
}
This project is licensed under the MIT License.
If you would like to contact us to contribute to this project, ask questions or suggest improvements, feel free to e-mail us at: joaopauloesper@discente.ufg.br