Skip to content

srsran/srsRAN_Project

Repository files navigation

srsRAN Project

Build Status OpenSSF Best Practices

The srsRAN Project is a complete 5G RAN solution, featuring an ORAN-native CU/DU developed by SRS.

The solution includes a complete L1/2/3 implementation with minimal external dependencies. Portable across processor architectures, the software has been optimized for x86 and ARM. srsRAN follows the 3GPP 5G system architecture implementing the functional splits between distributed unit (DU) and centralized unit (CU). The CU is further disaggregated into control plane (CU-CP) and user-plane (CU-UP).

See the srsRAN Project for information, guides and project news.

Build instructions and user guides - srsRAN Project documentation.

Community announcements and support - Discussion board.

Features and roadmap - Features.

Build Preparation

Dependencies

You can install the build tools and mandatory requirements for some example distributions with the commands below:

Ubuntu 22.04
sudo apt-get install cmake make gcc g++ pkg-config libfftw3-dev libmbedtls-dev libsctp-dev libyaml-cpp-dev libgtest-dev
Fedora
sudo yum install cmake make gcc gcc-c++ fftw-devel lksctp-tools-devel yaml-cpp-devel mbedtls-devel gtest-devel
Arch Linux
sudo pacman -S cmake make base-devel fftw mbedtls yaml-cpp lksctp-tools gtest

Split-8

For Split-8 configurations, either UHD or ZMQ is required for the fronthaul interface. Both drivers are linked below, please see their respective documentation for installation instructions.

Split-7.2

For Split-7.2 configurations no extra 3rd-party dependencies are required, only those listed above.

Optionally, DPDK can be installed for high-bandwidth low-latency scenarios. For more information on this, please see this tutorial.

Build Instructions

Download and build srsRAN:

Vanilla Installation

First, clone the srsRAN Project repository:

    git clone https://github.com/srsRAN/srsRAN_Project.git

Then build the code-base:

    cd srsRAN_Project
    mkdir build
    cd build
    cmake ../ 
    make -j $(nproc)
    make test -j $(nproc)

You can now run the gNB from srsRAN_Project/build/apps/gnb/. If you wish to install the srsRAN Project gNB, you can use the following command:

    sudo make install
ZMQ Enabled Installation

Once ZMQ has been installed you will need build of srsRAN Project with the correct flags to enable the use of ZMQ.

The following commands can be used to clone and build srsRAN Project from source. The relevant flags are added to the cmake command to enable the use of ZMQ:

git clone https://github.com/srsran/srsRAN_Project.git
cd srsRAN_Project
mkdir build
cd build
cmake ../ -DENABLE_EXPORT=ON -DENABLE_ZEROMQ=ON
make -j $(nproc)
make test -j $(nproc)

Pay extra attention to the cmake console output. Make sure you read the following line to ensure ZMQ has been correctly detected by srsRAN:

...
-- FINDING ZEROMQ.
-- Checking for module 'ZeroMQ'
--   No package 'ZeroMQ' found
-- Found libZEROMQ: /usr/local/include, /usr/local/lib/libzmq.so
...
DPDK Enabled Installation

Once DPDK has been installed and configured you will need to create a clean build of srsRAN Project to enable the use of DPDK.

If you have not done so already, download the code-base with the following command:

git clone https://github.com/srsRAN/srsRAN_Project.git

Then build the code-base, making sure to include the correct flags when running cmake:

cd srsRAN_Project
mkdir build
cd build
cmake ../ -DENABLE_DPDK=True -DASSERT_LEVEL=MINIMAL
make -j $(nproc)
make test -j $(nproc)

PHY Tests

PHY layer tests use binary test vectors and are not built by default. To enable, see the docs.

Deploying srsRAN Project

srsRAN Project can be run in two ways:

  • As a monolithic gNB (combined CU & DU)
  • With a split CU and DU

For exact details on running srsRAN Project in any configuration, see the documentation.

For information on configuring and running srsRAN for various different use cases, check our tutorials.