Skip to content

LABORA-INF-UFG/paper-JYPBJACK-2026

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wasm-based dApps for RAN programmability

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.


Overview

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.


Tested environment

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.


Repository structure

runtime/        Rust-based Wasm runtime
Makefile        Wasm build system

Getting started

Installing the required packages

sudo apt update

sudo apt install \
    curl \
    build-essential \
    autoconf \
    automake \
    libtool \
    bison \
    flex \
    wget \
    git \
    unzip

Installing Eigen

This 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.zip

Installing ASN.1 compiler (asn1c)

This 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 install

The compiler will be installed at:

/opt/asn1c

Installing WASI SDK

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.gz

The SDK will be installed at:

/opt/wasi-sdk-25.0-x86_64-linux

Installing Rust

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 | sh

After the installation completes, load the Rust environment variables into your current shell:

. "$HOME/.cargo/env"

Building the runtime

The runtime responsible for executing Wasm modules is implemented in Rust.

Compile it with:

cd paper-JYPBJACK-2026/
cd runtime
cargo build --release

The compiled binaries will be available in:

runtime/target/release

Compiling the Wasm Spectrum Sharing dApp

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-linux

Where:

  • ASN1C_PATH specifies the installation directory of the asn1c compiler.
  • WASI_SDK_PATH specifies the installation directory of the WASI SDK used to compile WebAssembly modules.

This command will:

  1. Clean any previous build artifacts.
  2. Compile the Spectrum Sharing dApp source code.
  3. 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.


Running the Wasm Spectrum Sharing dApp

After compiling, the Wasm Spectrum Sharing dApp can be executed with:

cd runtime
./target/release/runtime ../src/spectrum.wasm

For more information on how to build the OAI enviroment, please refer to: https://openrangym.com/tutorials/dapps-oai

Citation

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}, 
}

License

This project is licensed under the MIT License.

Contact us

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

About

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"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors