📱

UERANSIM + Open5GS シミュレーション環境構築

2023/03/01に公開

本記事では、5G SA のRAN、Coreのパケットの流れを勉強するため、UERANSIMとOpen5GSのシミュレータ環境を構築を説明します。

UERANSIMはRAN側で、Open5GSはCore側となります。


目次

概要

Node IP
gNB 127.0.0.1
AMF Text
SMF Text
UPF Text
UE IMSI K OPc
UE1 001010000000001 00112233445566778899AABBCCDDEEFF E8ED289DEBA952E4283B54E88E6183CA

Ubuntu環境構築 (WSL2)

WSL2上のUbuntu22.04を使用します。Windows10 22H2を対象として

wsl --shutdown
> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-22.04    Running         2
/etc/wsl.conf
[boot]
systemd=true
wsl --shutdown

UERANSIMビルド

下記コマンドでビルドします。

$ sudo apt update
$ sudo apt install -y gcc g++ libsctp-dev lksctp-tools iproute2
# sudo snap install cmake --classic
$ cd ~
$ git clone https://github.com/aligungr/UERANSIM
$ cd UERANSIM
$ make
   :
UERANSIM successfully built.

Open5GSビルド

Open5GSで使用するMongoDBをインストールします。

$ sudo apt update
$ sudo apt install wget gnupg
$ wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
$ sudo apt update
$ sudo apt install -y mongodb-org mongodb-clients
$ sudo systemctl start mongod
$ sudo systemctl enable mongod
/etc/sysctl.conf
net.ipv4.ip_forward=1
$ sudo sysctl -p
$ sudo ip tuntap add name ogstun mode tun
$ sudo ip addr add 10.45.0.1/16 dev ogstun
$ sudo ip addr add 2001:db8:cafe::1/48 dev ogstun
$ sudo ip link set ogstun up

次にOpen5GSをビルドします。

$ sudo apt install python3-pip python3-setuptools python3-wheel ninja-build build-essential flex bison git libsctp-dev libgnutls28-dev libgcrypt-dev libssl-dev libidn11-dev libmongoc-dev libbson-dev libyaml-dev libnghttp2-dev libmicrohttpd-dev libcurl4-gnutls-dev libnghttp2-dev libtins-dev libtalloc-dev meson
$ cd ~
$ git clone https://github.com/open5gs/open5gs.git -b v2.6.0
$ cd open5gs
$ meson build --prefix=`pwd`/install
$ ninja -C build
$ ./build/tests/registration/registration
  :
All tests passed.
$ cd build
$ ninja install

UERANSIM設定

gNBとUEのコンフィグを設定していきます。

gNB設定

PLMN TAC
00101 1
~/UERANSIM/config/open5gs-gnb.yaml
--- open5gs-gnb.yaml.org        2023-03-01 16:52:00.373359436 +0900
+++ open5gs-gnb.yaml    2023-03-01 16:52:53.573351839 +0900
@@ -1,5 +1,5 @@
-mcc: '999'          # Mobile Country Code value
-mnc: '70'           # Mobile Network Code value (2 or 3 digits)
+mcc: '001'          # Mobile Country Code value
+mnc: '01'           # Mobile Network Code value (2 or 3 digits)

 nci: '0x000000010'  # NR Cell Identity (36-bit)
 idLength: 32        # NR gNB ID length in bits [22...32]
--- open5gs-ue.yaml.org 2023-03-01 16:53:46.283347536 +0900
+++ open5gs-ue.yaml     2023-03-01 16:55:58.413335272 +0900
@@ -1,9 +1,9 @@
 # IMSI number of the UE. IMSI = [MCC|MNC|MSISDN] (In total 15 digits)
-supi: 'imsi-999700000000001'
+supi: 'imsi-001010000000001'
 # Mobile Country Code value of HPLMN
-mcc: '999'
+mcc: '001'
 # Mobile Network Code value of HPLMN (2 or 3 digits)
-mnc: '70'
+mnc: '01'

 # Permanent subscription key
 key: '465B5CE8B199B49FAA5F0A2EE238A6BC'

UE設定

Open5GS設定

UEのIMSIを登録します。

$ cd ~/open5gs/misc/db
$ ./open5gs-dbctl add_ue_with_apn 001010000000001 465B5CE8B199B49FAA5F0A2EE238A6BC  E8ED289DEBA952E4283B54E88E6183CA internet
~/open5gs/install/etc/open5gs/amf.yaml
--- amf.yaml.org        2023-03-01 15:55:52.099051860 +0900
+++ amf.yaml    2023-03-01 16:40:45.428713533 +0900
@@ -348,20 +348,20 @@
         port: 9090
     guami:
       - plmn_id:
-          mcc: 999
-          mnc: 70
+          mcc: 001
+          mnc: 01
         amf_id:
           region: 2
           set: 1
     tai:
       - plmn_id:
-          mcc: 999
-          mnc: 70
+          mcc: 001
+          mnc: 01
         tac: 1
     plmn_support:
       - plmn_id:
-          mcc: 999
-          mnc: 70
+          mcc: 001
+          mnc: 01
         s_nssai:
           - sst: 1
     security:

UPFにDNNのinternetと、tunインターフェースを指定します。

--- upf.yaml.org        2023-03-01 15:10:49.599790808 +0900
+++ upf.yaml    2023-03-01 16:43:21.578698107 +0900
@@ -178,7 +178,8 @@
       - addr: 127.0.0.7
     subnet:
       - addr: 10.45.0.1/16
-      - addr: 2001:db8:cafe::1/48
+        dnn: internet
+        dev: ogstun
     metrics:
       - addr: 127.0.0.7
         port: 9090

SMFにDNNのinternetを設定します。

--- smf.yaml.org        2023-03-01 15:10:31.899799783 +0900
+++ smf.yaml    2023-03-01 16:45:39.978683377 +0900
@@ -521,7 +521,7 @@
         port: 9090
     subnet:
       - addr: 10.45.0.1/16
-      - addr: 2001:db8:cafe::1/48
+        dnn: internet
     dns:
       - 8.8.8.8
       - 8.8.4.4
@@ -696,6 +696,7 @@
 upf:
     pfcp:
       - addr: 127.0.0.7
+        dnn: internet

 #
 # parameter:

シミュレータ実行

$ cd ~/open5gs
$ ./install/bin/open5gs-nrfd &
$ ./install/bin/open5gs-scpd &
$ sleep 5
$ ./install/bin/open5gs-smfd &
$ ./install/bin/open5gs-amfd &
$ ./install/bin/open5gs-ausfd &
$ ./install/bin/open5gs-udmd &
$ ./install/bin/open5gs-udrd &
$ ./install/bin/open5gs-pcfd &
$ ./install/bin/open5gs-nssfd &
$ ./install/bin/open5gs-bsfd &
$ ./install/bin/open5gs-upfd &

新しくUbuntuプロンプトを開いて、

$ cd ~/UERANSIM/build
$ ./nr-gnb -c ../config/open5gs-gnb.yaml
$ cd ~/UERANSIM/build
$ ./nr-ue -c ../config/open5gs-ue.yaml
$ pgrep open5gs | xargs kill -9

Wireshark取得

$ sudo apt install tcpdump
$ sudo tcpdump -i any -w Open5GS_UE_Reg.pcap

下記でUEがRegstrationした際のログをDLできます。

Open5GS_UE_Reg.pcap

下記のように Port 7777 を HTTP2 と識別させることで、SBI (Service Based Interface) のパケットを確認できます。

  1. port 7777 のパケットを右クリックし、「...としてでコード」を選択します。
  2. TCP Port 7777をHTTP2として識別するように設定を追加します。
  3. SBI パケットを確認できます。

Discussion