1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ZeroMQでsrsRAN_Project 5G RANを構築

Posted at

srsRAN_Projectソフトウェアスイートには、ZeroMQネットワークライブラリを使用してアプリケーション間で無線サンプルを転送する仮想無線が含まれています。そこで、5GCの機能を確認するために、実際のデバイスの代わりに仮想gNodeBを構築する簡単な手順について説明します。本記事では、Virtualbox VMでsrsRAN_Projectを構築する方法について説明します。

ZeroMQでsrsRAN_Project 5G RANを構築するには以下を参照してください。

動作確認した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 SetupgNB 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バージョンを試して下さい。

  1. Virtualbox VM上のgnbNGSetupを実行できない場合は、こちら が解決に役立つ可能性があります。
  2. これによると、ZeroMQ経由でsrsueとsrsgnbの間でダウンリンクパケットの流れが止まるという問題があります。修正プログラムはこちらにあります。
  3. これによると、実行するには2つ以上のCPUコアが必要です。
  4. これによると、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連携の設定例

最後に

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] 初版。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?