📱
UERANSIM + Open5GS シミュレーション環境構築
本記事では、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できます。
下記のように Port 7777 を HTTP2 と識別させることで、SBI (Service Based Interface) のパケットを確認できます。
- port 7777 のパケットを右クリックし、「...としてでコード」を選択します。
- TCP Port 7777をHTTP2として識別するように設定を追加します。
- SBI パケットを確認できます。
Discussion