srsRAN_Projectソフトウェアスイートには、ZeroMQネットワークライブラリを使用してアプリケーション間で無線サンプルを転送する仮想無線が含まれています。そこで、5GCの機能を確認するために、実際のデバイスの代わりに仮想gNodeBを構築する簡単な手順について説明します。本記事では、Virtualbox VMでsrsRAN_Projectを構築する方法について説明します。
ZeroMQでsrsRAN_Project 5G RANを構築するには以下を参照してください。
- Installation Guide - https://docs.srsran.com/projects/project/en/latest/user_manuals/source/installation.html
- ZeroMQ-based Setup - https://docs.srsran.com/projects/project/en/latest/tutorials/source/srsUE/source/index.html#zeromq-based-setup
- Configuration Reference - https://docs.srsran.com/projects/project/en/latest/user_manuals/source/config_ref.html
動作確認したVMの仕様は以下の通りです。
OS | CPU (Min) | Memory (Min) | HDD (Min) |
---|---|---|---|
Ubuntu 24.04 | 2 | 4GB | 10GB |
ビルドには4GB以上のメモリが必要です。また、実行には2つ以上のCPUコアが必要です。
また、ZeroMQを使用して5G NR-UEで接続する場合、このRFシミュレートされたUEの構築および構成方法については、こちらを参照して下さい。
ZeroMQを含む必要なライブラリをインストール
apt install cmake make gcc g++ pkg-config libfftw3-dev libmbedtls-dev libsctp-dev libyaml-cpp-dev libgtest-dev libzmq3-dev
Git clone srsRAN_Project
git clone https://github.com/srsran/srsRAN_Project.git
Virtualbox VMにsrsRAN_Project 5G RANを構築
こちらによると、Virtualbox VMでビルドする場合、リアルタイムでの実行を気にしないのであれば、cmakeオプションに -DAUTO_DETECT_ISA=OFF
を追加することができます。
cd srsRAN_Project
mkdir build
cd build
cmake ../ -DENABLE_EXPORT=ON -DENABLE_ZEROMQ=ON -DAUTO_DETECT_ISA=OFF
make -j`nproc`
gNodeBの設定ファイルを作成
ZeroMQ-based SetupのgNB config
を雛型のファイルとして取得します。
cd srsRAN_Project/build/apps/gnb
wget <link of "gNB config">
参考までに、2024.04.23のgnb_zmq.yaml
は以下の通りです。環境に応じて編集して下さい。
# This configuration file example shows how to configure the srsRAN Project gNB to allow srsUE to connect to it.
# This specific example uses ZMQ in place of a USRP for the RF-frontend, and creates an FDD cell with 10 MHz bandwidth.
# To run the srsRAN Project gNB with this config, use the following command:
# sudo ./gnb -c gnb_zmq.yaml
amf:
addr: 10.53.1.2 # The address or hostname of the AMF.
bind_addr: 10.53.1.1 # A local IP that the gNB binds to for traffic from the AMF.
ru_sdr:
device_driver: zmq # The RF driver name.
device_args: tx_port=tcp://127.0.0.1:2000,rx_port=tcp://127.0.0.1:2001,base_srate=23.04e6 # Optionally pass arguments to the selected RF driver.
srate: 23.04 # RF sample rate might need to be adjusted according to selected bandwidth.
tx_gain: 75 # Transmit gain of the RF might need to adjusted to the given situation.
rx_gain: 75 # Receive gain of the RF might need to adjusted to the given situation.
cell_cfg:
dl_arfcn: 368500 # ARFCN of the downlink carrier (center frequency).
band: 3 # The NR band.
channel_bandwidth_MHz: 20 # Bandwith in MHz. Number of PRBs will be automatically derived.
common_scs: 15 # Subcarrier spacing in kHz used for data.
plmn: "00101" # PLMN broadcasted by the gNB.
tac: 7 # Tracking area code (needs to match the core configuration).
pdcch:
common:
ss0_index: 0 # Set search space zero index to match srsUE capabilities
coreset0_index: 12 # Set search CORESET Zero index to match srsUE capabilities
dedicated:
ss2_type: common # Search Space type, has to be set to common
dci_format_0_1_and_1_1: false # Set correct DCI format (fallback)
prach:
prach_config_index: 1 # Sets PRACH config to match what is expected by srsUE
cu_cp:
inactivity_timer: 7200 # Sets the UE/PDU Session/DRB inactivity timer to 7200 seconds. Supported: [1 - 7200].
log:
filename: /tmp/gnb.log # Path of the log file.
all_level: info # Logging level applied to all layers.
hex_max_size: 0
pcap:
mac_enable: false # Set to true to enable MAC-layer PCAPs.
mac_filename: /tmp/gnb_mac.pcap # Path where the MAC PCAP is stored.
ngap_enable: false # Set to true to enable NGAP PCAPs.
ngap_filename: /tmp/gnb_ngap.pcap # Path where the NGAP PCAP is stored.
問題点
最新のmain
ブランチが機能しない場合は、最新のrelease
バージョンを試して下さい。
- Virtualbox VM上の
gnb
がNGSetup
を実行できない場合は、こちら が解決に役立つ可能性があります。 - これによると、ZeroMQ経由でsrsueとsrsgnbの間でダウンリンクパケットの流れが止まるという問題があります。修正プログラムはこちらにあります。
- これによると、実行するには2つ以上のCPUコアが必要です。
-
これによると、UE(
ue_zmq.conf
)はsrsRAN_Project 23.10のgNodeB経由でOpen5GSに接続できませんでしたが、こちらで解決しました。
動作確認済みバージョン一覧
以下のバージョンの動作を簡単に確認しました。
Version | Commit | Date | Issues |
---|---|---|---|
24.04+ | 4ac5300d4927b5199af69e6bc2e55d061fc33652 |
2024.07.31 | 3 |
24.04+ | c33cacba7d940e734ac7bad08935cbc35578fad9 |
2024.06.10 | 3 |
24.04+ | 78238fd15e4cd82a6324d6dbbb612ac5584b13ea |
2024.05.13 | 3 |
24.04 | 1483bda3091420cf7270eacdf31de932865c6294 |
2024.04.22 | 3 |
23.10.1+ | 2f90c8b60e9396a7aed59645c98dbcbccda2bf7c |
2024.03.25 | 3 |
23.10.1 | 374200deefd8e1b96fab7328525fd593a808a641 |
2023.10.23 | 3 |
23.10 | e38e418bda8432397b2fa7dc399cb7afde3c3b95 |
2023.10.20 | 3, 4 |
23.5+ | 5e6f50a202c6efa671d5b231d7c911dc6c3d86ed |
2023.09.20 | 3 |
23.5+ | 1afd7240f2b5e2061ab4158e8fcdacb15961813a |
2023.08.07 | 1, 2 |
5GC連携の設定例
- Open5GS 5GC & srsRAN 5G with ZeroMQ UE / RAN Sample Configuration
- free5GC 5GC & srsRAN 5G with ZeroMQ UE / RAN Sample Configuration
最後に
srsRAN_Projectは、SRSが開発したORANネイティブなCU/DUを特徴とする完全な5G RANソリューションです。ここでは、5Gコア機能を検証する際のRANとして使用するため、ZeroMQベースのRFドライバーでgNodeBとsrsUEを接続する構成を想定し、仮想環境で組む時のsrsRAN_Projectのビルド方法について説明しました。これにより、実機のgNodeBとUEが無くても、取り敢えず、5Gコアの機能を幾らか検証することができると思います。
また、srsRAN_ProjectのgNodeBのE2インターフェースを用いて、サードパーティーのRIC(RANインテリジェント・コントローラー)フレームワークのFlexRICと連携できるそうです。
最後に、元記事はGithubに書いたものです。
主な変更履歴
- [2024.09.12] 初版。