Awesome
srsRAN Project
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
- Build tools:
- cmake: https://cmake.org/
- Mandatory requirements:
- libfftw: https://www.fftw.org/
- libsctp: https://github.com/sctp/lksctp-tools
- yaml-cpp: https://github.com/jbeder/yaml-cpp
- mbedTLS: https://www.trustedfirmware.org/projects/mbed-tls/
- googletest: https://github.com/google/googletest/
You can install the build tools and mandatory requirements for some example distributions with the commands below:
<details open> <summary><strong>Ubuntu 22.04</strong></summary>sudo apt-get install cmake make gcc g++ pkg-config libfftw3-dev libmbedtls-dev libsctp-dev libyaml-cpp-dev libgtest-dev
</details>
<details>
<summary><strong>Fedora</strong></summary>
sudo yum install cmake make gcc gcc-c++ fftw-devel lksctp-tools-devel yaml-cpp-devel mbedtls-devel gtest-devel
</details>
<details>
<summary><strong>Arch Linux</strong></summary>
sudo pacman -S cmake make base-devel fftw mbedtls yaml-cpp lksctp-tools gtest
</details>
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:
<details open> <summary><strong>Vanilla Installation</strong></summary>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
</details>
<details>
<summary><strong>ZMQ Enabled Installation</strong></summary>
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
...
</details>
<details>
<summary><strong>DPDK Enabled Installation</strong></summary>
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)
</details>
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.