13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Open5GS 5GCとUERANSIM UE/RANによるシミュレーション携帯網

Last updated at Posted at 2020-12-06

UERANSIM(5G UEとRAN(gNodeB)シミュレータ)は、2020年11月17日版からPDUセッションタイプにIPv4をサポートし、Data Plane機能に対応しました。そこで、U-PlaneのDN(Data Network)を試すため、5GC携帯網のシミュレーション環境を構築しました。登場する携帯網の構成要素は全てOSS(オープンソース)であり、紹介するシミュレーションの構成例はシンプルです。ここでは、その全体像と設定ファイルについて簡単に説明します。
なお、5GCのコア網に登場する各NF(Network Function)の役割やインターフェースについて概ね知っていることを期待して書いており、これらの説明は省略します。


目次


Open5GS 5GCのシミュレーション携帯網の概要

今回、DNN毎に異なるDNの端点で任意のパケットを流すことを目的に、5GC携帯網をシミュレーション用に構築しました。DNを通してインターネットと通信可能です。
このシミュレーション環境は以下の条件を満たす最小構成になります。

  • C-Planeは複数のU-Planeと連携する。
  • U-Planeは複数のDNを管理する。
  • 複数のUEは同じDNに接続する。

構築したシミュレーション環境は以下の通りです。
network-overview.png

5GCとUE/RANに使用しているOSSは以下の通りです。

各VMは以下の通りです。

VM # SW & Role IP address OS Memory (Min) HDD (Min)
VM1 Open5GS 5GC C-Plane 192.168.0.111/24 Ubuntu 20.04 1GB 20GB
VM2 Open5GS 5GC U-Plane1 192.168.0.112/24 Ubuntu 20.04 1GB 20GB
VM3 Open5GS 5GC U-Plane2 192.168.0.113/24 Ubuntu 20.04 1GB 20GB
VM4 UERANSIM RAN (gNodeB) 192.168.0.131/24 Ubuntu 20.04 1GB 10GB
VM5 UERANSIM UE 192.168.0.132/24 Ubuntu 20.04 1GB 10GB

加入者情報は以下の通りです。(その他の項目はデフォルト値)
注意。UERANSIMのUEの設定に合わせて、OPあるいはOPcを選択してください。

UE # IMSI DNN OP/OPc
UE0 001010000000000 internet OPc
UE1 001010000000001 internet2 OPc
UE2 001010000000002 internet2 OPc
UE3 001010000000003 ims OPc
UE4 001010000000004 ims OPc

これらの情報の登録には、Open5GSが提供するWebUIを使用しました。なお、3GPP認証とキー生成機能(MILENAGE)の試験データとして、3GPP TS 35.208 "4.3 Test Sets"が公開されています。

各DNは以下の通りです。

DN TUNnel interface of DN DNN TUNnel interface of UE U-Plane #
10.45.0.0/16 ogstun internet uesimtun0 U-Plane1
10.46.0.0/16 ogstun2 internet2 uesimtun1, uesimtun2 U-Plane1
10.47.0.0/16 ogstun3 ims uesimtun3, uesimtun4 U-Plane2

追加情報。Open5GS 5GC U-PlaneはRaspberry Pi 4 Model Bで動作しました。OSにはUbuntu 20.04 (64bit) for Raspberry Pi 4を使用しています。これにより、コンパクトなU-Planeをエッジに配置し、DNの端点として簡易に使用することができます。なお、この場合のDNの通信性能については確認していません。

Open5GS 5GCとUERANSIM UE/RANの設定ファイルの変更点

Open5GSとUERANSIMのビルド方法は以下を参照して下さい。

Open5GS 5GC C-Planeの設定ファイルの変更点

Open5GSでは、PFCPの接続先としてUPFを選択するロジックに使用可能なパラメータは以下の通りです。PFCP(Packet Forwarding Control Protocol)とは、5GCでCU分離のために導入されたプロトコルです。

  • DNN
  • TAC (Tracking Area Code)
  • nr_CellID

なお、TACとnr_CellIDはRANの設定項目です。話を簡単にするために、今回はDNNのみ使用しています。Open5GSでUPFを選択するロジックについては、こちらを参照して下さい。

  • open5gs/install/etc/open5gs/amf.yaml
--- amf.yaml.orig       2022-06-04 19:47:05.006151198 +0900
+++ amf.yaml    2022-06-05 21:34:01.935500250 +0900
@@ -229,23 +229,23 @@
       - addr: 127.0.0.5
         port: 7777
     ngap:
-      - addr: 127.0.0.5
+      - addr: 192.168.0.111
     guami:
       - plmn_id:
-          mcc: 901
-          mnc: 70
+          mcc: 001
+          mnc: 01
         amf_id:
           region: 2
           set: 1
     tai:
       - plmn_id:
-          mcc: 901
-          mnc: 70
+          mcc: 001
+          mnc: 01
         tac: 1
     plmn_support:
       - plmn_id:
-          mcc: 901
-          mnc: 70
+          mcc: 001
+          mnc: 01
         s_nssai:
           - sst: 1
     security:
  • open5gs/install/etc/open5gs/smf.yaml
--- smf.yaml.orig       2022-06-04 19:47:04.977151107 +0900
+++ smf.yaml    2022-06-05 21:36:29.499567538 +0900
@@ -381,17 +381,18 @@
       - addr: 127.0.0.4
         port: 7777
     pfcp:
-      - addr: 127.0.0.4
-      - addr: ::1
+      - addr: 192.168.0.111
     gtpc:
       - addr: 127.0.0.4
-      - addr: ::1
     gtpu:
-      - addr: 127.0.0.4
-      - addr: ::1
+      - addr: 192.168.0.111
     subnet:
       - addr: 10.45.0.1/16
-      - addr: 2001:db8:cafe::1/48
+        dnn: internet
+      - addr: 10.46.0.1/16
+        dnn: internet2
+      - addr: 10.47.0.1/16
+        dnn: ims
     dns:
       - 8.8.8.8
       - 8.8.4.4
@@ -501,7 +502,10 @@
 #
 upf:
     pfcp:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.112
+        dnn: [internet, internet2]
+      - addr: 192.168.0.113
+        dnn: ims
 
 #
 # parameter:

Open5GS 5GC U-Plane1の設定ファイルの変更点

  • open5gs/install/etc/open5gs/upf.yaml
--- upf.yaml.orig       2022-04-05 20:55:38.304953273 +0900
+++ upf.yaml    2022-06-05 21:39:07.009058283 +0900
@@ -166,12 +166,16 @@
 #
 upf:
     pfcp:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.112
     gtpu:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.112
     subnet:
       - addr: 10.45.0.1/16
-      - addr: 2001:db8:cafe::1/48
+        dnn: internet
+        dev: ogstun
+      - addr: 10.46.0.1/16
+        dnn: internet2
+        dev: ogstun2
 
 #
 # smf:

Open5GS 5GC U-Plane2の設定ファイルの変更点

  • open5gs/install/etc/open5gs/upf.yaml
--- upf.yaml.orig       2022-04-05 20:56:57.984902990 +0900
+++ upf.yaml    2022-06-05 22:23:35.800331893 +0900
@@ -166,12 +166,13 @@
 #
 upf:
     pfcp:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.113
     gtpu:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.113
     subnet:
-      - addr: 10.45.0.1/16
-      - addr: 2001:db8:cafe::1/48
+      - addr: 10.47.0.1/16
+        dnn: ims
+        dev: ogstun3
 
 #
 # smf:

UERANSIM UE/RANの設定ファイルの変更点

RANの設定ファイルの変更点

  • UERANSIM/config/open5gs-gnb.yaml
--- open5gs-gnb.yaml.orig       2021-04-20 11:07:30.000000000 +0000
+++ open5gs-gnb.yaml    2021-08-29 11:53:34.170068022 +0000
@@ -1,17 +1,17 @@
-mcc: '901'          # 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]
 tac: 1              # Tracking Area Code
 
-linkIp: 127.0.0.1   # gNB's local IP address for Radio Link Simulation (Usually same with local IP)
-ngapIp: 127.0.0.1   # gNB's local IP address for N2 Interface (Usually same with local IP)
-gtpIp: 127.0.0.1    # gNB's local IP address for N3 Interface (Usually same with local IP)
+linkIp: 192.168.0.131   # gNB's local IP address for Radio Link Simulation (Usually same with local IP)
+ngapIp: 192.168.0.131   # gNB's local IP address for N2 Interface (Usually same with local IP)
+gtpIp: 192.168.0.131    # gNB's local IP address for N3 Interface (Usually same with local IP)
 
 # List of AMF address information
 amfConfigs:
-  - address: 127.0.0.5
+  - address: 192.168.0.111
     port: 38412
 
 # List of supported S-NSSAIs by this gNB

UE0(IMSI-001010000000000)の設定ファイルの変更点

最初に、open5gs-ue.yamlからopen5gs-ue0.yamlにコピーを作成します。

# cd UERANSIM/config
# cp open5gs-ue.yaml open5gs-ue0.yaml

次に、open5gs-ue0.yamlを編集します。

  • UERANSIM/config/open5gs-ue0.yaml
--- open5gs-ue.yaml.orig        2021-09-18 21:11:52.000000000 +0900
+++ open5gs-ue0.yaml    2022-06-05 22:07:37.742307968 +0900
@@ -1,9 +1,9 @@
 # IMSI number of the UE. IMSI = [MCC|MNC|MSISDN] (In total 15 digits)
-supi: 'imsi-901700000000001'
+supi: 'imsi-001010000000000'
 # Mobile Country Code value of HPLMN
-mcc: '901'
+mcc: '001'
 # Mobile Network Code value of HPLMN (2 or 3 digits)
-mnc: '70'
+mnc: '01'
 
 # Permanent subscription key
 key: '465B5CE8B199B49FAA5F0A2EE238A6BC'
@@ -20,7 +20,7 @@
 
 # List of gNB IP addresses for Radio Link Simulation
 gnbSearchList:
-  - 127.0.0.1
+  - 192.168.0.131
 
 # UAC Access Identities Configuration
 uacAic:

UE1(IMSI-001010000000001)の設定ファイルの変更点

最初に、open5gs-ue.yamlからopen5gs-ue1.yamlにコピーを作成します。

# cd UERANSIM/config
# cp open5gs-ue.yaml open5gs-ue1.yaml

次に、open5gs-ue1.yamlを編集します。

  • UERANSIM/config/open5gs-ue1.yaml
--- open5gs-ue.yaml.orig        2021-09-18 21:11:52.000000000 +0900
+++ open5gs-ue1.yaml    2022-06-05 22:08:51.685605817 +0900
@@ -1,9 +1,9 @@
 # IMSI number of the UE. IMSI = [MCC|MNC|MSISDN] (In total 15 digits)
-supi: 'imsi-901700000000001'
+supi: 'imsi-001010000000001'
 # Mobile Country Code value of HPLMN
-mcc: '901'
+mcc: '001'
 # Mobile Network Code value of HPLMN (2 or 3 digits)
-mnc: '70'
+mnc: '01'
 
 # Permanent subscription key
 key: '465B5CE8B199B49FAA5F0A2EE238A6BC'
@@ -20,7 +20,7 @@
 
 # List of gNB IP addresses for Radio Link Simulation
 gnbSearchList:
-  - 127.0.0.1
+  - 192.168.0.131
 
 # UAC Access Identities Configuration
 uacAic:
@@ -39,7 +39,7 @@
 # Initial PDU sessions to be established
 sessions:
   - type: 'IPv4'
-    apn: 'internet'
+    apn: 'internet2'
     slice:
       sst: 1
 

UE2(IMSI-001010000000002)の設定ファイルの変更点

最初に、open5gs-ue.yamlからopen5gs-ue2.yamlにコピーを作成します。

# cd UERANSIM/config
# cp open5gs-ue.yaml open5gs-ue2.yaml

次に、open5gs-ue2.yamlを編集します。

  • UERANSIM/config/open5gs-ue2.yaml
--- open5gs-ue.yaml.orig        2021-09-18 21:11:52.000000000 +0900
+++ open5gs-ue2.yaml    2022-06-05 22:09:58.470120243 +0900
@@ -1,9 +1,9 @@
 # IMSI number of the UE. IMSI = [MCC|MNC|MSISDN] (In total 15 digits)
-supi: 'imsi-901700000000001'
+supi: 'imsi-001010000000002'
 # Mobile Country Code value of HPLMN
-mcc: '901'
+mcc: '001'
 # Mobile Network Code value of HPLMN (2 or 3 digits)
-mnc: '70'
+mnc: '01'
 
 # Permanent subscription key
 key: '465B5CE8B199B49FAA5F0A2EE238A6BC'
@@ -20,7 +20,7 @@
 
 # List of gNB IP addresses for Radio Link Simulation
 gnbSearchList:
-  - 127.0.0.1
+  - 192.168.0.131
 
 # UAC Access Identities Configuration
 uacAic:
@@ -39,7 +39,7 @@
 # Initial PDU sessions to be established
 sessions:
   - type: 'IPv4'
-    apn: 'internet'
+    apn: 'internet2'
     slice:
       sst: 1
 

UE3(IMSI-001010000000003)の設定ファイルの変更点

最初に、open5gs-ue.yamlからopen5gs-ue3.yamlにコピーを作成します。

# cd UERANSIM/config
# cp open5gs-ue.yaml open5gs-ue3.yaml

次に、open5gs-ue3.yamlを編集します。

  • UERANSIM/config/open5gs-ue3.yaml
--- open5gs-ue.yaml.orig        2021-09-18 21:11:52.000000000 +0900
+++ open5gs-ue3.yaml    2022-06-05 22:10:51.613822635 +0900
@@ -1,9 +1,9 @@
 # IMSI number of the UE. IMSI = [MCC|MNC|MSISDN] (In total 15 digits)
-supi: 'imsi-901700000000001'
+supi: 'imsi-001010000000003'
 # Mobile Country Code value of HPLMN
-mcc: '901'
+mcc: '001'
 # Mobile Network Code value of HPLMN (2 or 3 digits)
-mnc: '70'
+mnc: '01'
 
 # Permanent subscription key
 key: '465B5CE8B199B49FAA5F0A2EE238A6BC'
@@ -20,7 +20,7 @@
 
 # List of gNB IP addresses for Radio Link Simulation
 gnbSearchList:
-  - 127.0.0.1
+  - 192.168.0.131
 
 # UAC Access Identities Configuration
 uacAic:
@@ -39,7 +39,7 @@
 # Initial PDU sessions to be established
 sessions:
   - type: 'IPv4'
-    apn: 'internet'
+    apn: 'ims'
     slice:
       sst: 1
 

UE4(IMSI-001010000000004)の設定ファイルの変更点

最初に、open5gs-ue.yamlからopen5gs-ue4.yamlにコピーを作成します。

# cd UERANSIM/config
# cp open5gs-ue.yaml open5gs-ue4.yaml

次に、open5gs-ue4.yamlを編集します。

  • UERANSIM/config/open5gs-ue4.yaml
--- open5gs-ue.yaml.orig        2021-09-18 21:11:52.000000000 +0900
+++ open5gs-ue4.yaml    2022-06-05 22:11:41.422607625 +0900
@@ -1,9 +1,9 @@
 # IMSI number of the UE. IMSI = [MCC|MNC|MSISDN] (In total 15 digits)
-supi: 'imsi-901700000000001'
+supi: 'imsi-001010000000004'
 # Mobile Country Code value of HPLMN
-mcc: '901'
+mcc: '001'
 # Mobile Network Code value of HPLMN (2 or 3 digits)
-mnc: '70'
+mnc: '01'
 
 # Permanent subscription key
 key: '465B5CE8B199B49FAA5F0A2EE238A6BC'
@@ -20,7 +20,7 @@
 
 # List of gNB IP addresses for Radio Link Simulation
 gnbSearchList:
-  - 127.0.0.1
+  - 192.168.0.131
 
 # UAC Access Identities Configuration
 uacAic:
@@ -39,7 +39,7 @@
 # Initial PDU sessions to be established
 sessions:
   - type: 'IPv4'
-    apn: 'internet'
+    apn: 'ims'
     slice:
       sst: 1
 

Open5GS 5GCとUERANSIM UE/RANのネットワーク設定

Open5GS 5GC U-Plane1のネットワーク設定

最初に、/etc/sysctl.confファイルの以下の行のコメントを外し、OSに反映します。

net.ipv4.ip_forward=1
# sysctl -p

次に、TUNインターフェースとNAPTを設定します。

ip tuntap add name ogstun mode tun
ip addr add 10.45.0.1/16 dev ogstun
ip link set ogstun up

iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE

ip tuntap add name ogstun2 mode tun
ip addr add 10.46.0.1/16 dev ogstun2
ip link set ogstun2 up

iptables -t nat -A POSTROUTING -s 10.46.0.0/16 ! -o ogstun2 -j MASQUERADE

Open5GS 5GC U-Plane2のネットワーク設定

最初に、/etc/sysctl.confファイルの以下の行のコメントを外し、OSに反映します。

net.ipv4.ip_forward=1
# sysctl -p

次に、TUNインターフェースとNAPTを設定します。

ip tuntap add name ogstun3 mode tun
ip addr add 10.47.0.1/16 dev ogstun3
ip link set ogstun3 up

iptables -t nat -A POSTROUTING -s 10.47.0.0/16 ! -o ogstun3 -j MASQUERADE

Open5GSとUERANSIMのビルド

Open5GSとUERANSIMのビルド方法は以下を参照して下さい。

注意。Open5GS 5GC C-PlaneマシンにMongoDBをインストールして下さい。なお、MongoDBのデータベースを簡単に確認するには、MongoDB Compassが便利です。

# apt update
# apt install mongodb
# systemctl start mongodb
# systemctl enable mongodb

なお、Open5GS 5GC U-PlaneマシンにはMongoDBをインストールする必要はありません。

Open5GS 5GCとUERANSIM UE/RANを実行

最初に5GCを起動し、次にUERANSIM(UEとRANのシミュレータ)を起動します。

Open5GS 5GC C-Planeを実行

  • Open5GS 5GC C-Plane
./install/bin/open5gs-nrfd &
sleep 2
./install/bin/open5gs-amfd &
sleep 2
./install/bin/open5gs-smfd &
./install/bin/open5gs-ausfd &
./install/bin/open5gs-udmd &
./install/bin/open5gs-udrd &
./install/bin/open5gs-pcfd &
./install/bin/open5gs-nssfd &
./install/bin/open5gs-bsfd &

Open5GS 5GC U-Plane1とU-Plane2を実行

次に、Open5GS 5GC U-Planeを起動します。

  • Open5GS 5GC U-Plane1
./install/bin/open5gs-upfd &
  • Open5GS 5GC U-Plane2
./install/bin/open5gs-upfd &

UERANSIMを実行

ここでは、UE0(IMSI-001010000000000)とRANを実行する場合を説明します。まず、gNodeBと5GCの間でNG-Setupし、5GCにUEを登録し、PDUセッションを確立します。

UERANSIMの使い方は以下を参照して下さい。

gNBを起動

次のようにgNBを起動します。

# ./nr-gnb -c ../config/open5gs-gnb.yaml
UERANSIM v3.2.6
[2022-06-05 23:09:54.960] [sctp] [info] Trying to establish SCTP connection... (192.168.0.111:38412)
[2022-06-05 23:09:54.963] [sctp] [info] SCTP connection established (192.168.0.111:38412)
[2022-06-05 23:09:54.963] [sctp] [debug] SCTP association setup ascId[8]
[2022-06-05 23:09:54.964] [ngap] [debug] Sending NG Setup Request
[2022-06-05 23:09:54.964] [ngap] [debug] NG Setup Response received
[2022-06-05 23:09:54.964] [ngap] [info] NG Setup procedure is successful

Open5GS C-Planeのログは以下の通りです。

06/05 23:09:54.969: [amf] INFO: gNB-N2 accepted[192.168.0.131]:55490 in ng-path module (../src/amf/ngap-sctp.c:113)
06/05 23:09:54.969: [amf] INFO: gNB-N2 accepted[192.168.0.131] in master_sm module (../src/amf/amf-sm.c:619)
06/05 23:09:54.970: [amf] INFO: [Added] Number of gNBs is now 1 (../src/amf/context.c:876)
06/05 23:09:54.970: [amf] INFO: gNB-N2[192.168.0.131] max_num_of_ostreams : 10 (../src/amf/amf-sm.c:658)

UE(UE0)を起動

次のようにUE(UE0)を起動します。これにより、5GCにUE(UE0)が登録され、PDUセッションが確立します。

# ./nr-ue -c ../config/open5gs-ue0.yaml 
UERANSIM v3.2.6
[2022-06-05 23:10:39.362] [nas] [info] UE switches to state [MM-DEREGISTERED/PLMN-SEARCH]
[2022-06-05 23:10:39.362] [rrc] [debug] New signal detected for cell[1], total [1] cells in coverage
[2022-06-05 23:10:39.363] [nas] [info] Selected plmn[001/01]
[2022-06-05 23:10:39.363] [rrc] [info] Selected cell plmn[001/01] tac[1] category[SUITABLE]
[2022-06-05 23:10:39.363] [nas] [info] UE switches to state [MM-DEREGISTERED/PS]
[2022-06-05 23:10:39.364] [nas] [info] UE switches to state [MM-DEREGISTERED/NORMAL-SERVICE]
[2022-06-05 23:10:39.364] [nas] [debug] Initial registration required due to [MM-DEREG-NORMAL-SERVICE]
[2022-06-05 23:10:39.365] [nas] [debug] UAC access attempt is allowed for identity[0], category[MO_sig]
[2022-06-05 23:10:39.365] [nas] [debug] Sending Initial Registration
[2022-06-05 23:10:39.365] [nas] [info] UE switches to state [MM-REGISTER-INITIATED]
[2022-06-05 23:10:39.366] [rrc] [debug] Sending RRC Setup Request
[2022-06-05 23:10:39.367] [rrc] [info] RRC connection established
[2022-06-05 23:10:39.367] [rrc] [info] UE switches to state [RRC-CONNECTED]
[2022-06-05 23:10:39.368] [nas] [info] UE switches to state [CM-CONNECTED]
[2022-06-05 23:10:39.375] [nas] [debug] Authentication Request received
[2022-06-05 23:10:39.378] [nas] [debug] Security Mode Command received
[2022-06-05 23:10:39.378] [nas] [debug] Selected integrity[2] ciphering[0]
[2022-06-05 23:10:39.388] [nas] [debug] Registration accept received
[2022-06-05 23:10:39.388] [nas] [info] UE switches to state [MM-REGISTERED/NORMAL-SERVICE]
[2022-06-05 23:10:39.389] [nas] [debug] Sending Registration Complete
[2022-06-05 23:10:39.389] [nas] [info] Initial Registration is successful
[2022-06-05 23:10:39.390] [nas] [debug] Sending PDU Session Establishment Request
[2022-06-05 23:10:39.390] [nas] [debug] UAC access attempt is allowed for identity[0], category[MO_sig]
[2022-06-05 23:10:39.597] [nas] [debug] Configuration Update Command received
[2022-06-05 23:10:39.618] [nas] [debug] PDU Session Establishment Accept received
[2022-06-05 23:10:39.623] [nas] [info] PDU Session establishment is successful PSI[1]
[2022-06-05 23:10:39.642] [app] [info] Connection setup for PDU session[1] is successful, TUN interface[uesimtun0, 10.45.0.2] is up.

Open5GS C-Planeのログは以下の通りです。

06/05 23:10:39.372: [amf] INFO: InitialUEMessage (../src/amf/ngap-handler.c:361)
06/05 23:10:39.372: [amf] INFO: [Added] Number of gNB-UEs is now 1 (../src/amf/context.c:2072)
06/05 23:10:39.372: [amf] INFO:     RAN_UE_NGAP_ID[1] AMF_UE_NGAP_ID[1] TAC[1] CellID[0x10] (../src/amf/ngap-handler.c:497)
06/05 23:10:39.372: [amf] INFO: [suci-0-001-01-0000-0-0-0000000000] Unknown UE by SUCI (../src/amf/context.c:1398)
06/05 23:10:39.372: [amf] INFO: [Added] Number of AMF-UEs is now 1 (../src/amf/context.c:1197)
06/05 23:10:39.372: [gmm] INFO: Registration request (../src/amf/gmm-sm.c:134)
06/05 23:10:39.372: [gmm] INFO: [suci-0-001-01-0000-0-0-0000000000]    SUCI (../src/amf/gmm-handler.c:157)
06/05 23:10:39.372: [app] WARNING: Try to discover [AUSF] (../lib/sbi/path.c:110)
06/05 23:10:39.373: [amf] INFO: [256d2ac8-e4d9-41ec-8efb-dd70ded2f7cd] (NF-discover) NF registered (../src/amf/nnrf-handler.c:344)
06/05 23:10:39.373: [amf] INFO: [256d2ac8-e4d9-41ec-8efb-dd70ded2f7cd] (NF-discover) NF Profile updated (../src/amf/nnrf-handler.c:406)
06/05 23:10:39.374: [app] WARNING: Try to discover [UDM] (../lib/sbi/path.c:110)
06/05 23:10:39.375: [ausf] INFO: [256c7f38-e4d9-41ec-b70a-cb392d41c775] (NF-discover) NF registered (../src/ausf/nnrf-handler.c:285)
06/05 23:10:39.375: [ausf] INFO: [256c7f38-e4d9-41ec-b70a-cb392d41c775] (NF-discover) NF Profile updated (../src/ausf/nnrf-handler.c:333)
06/05 23:10:39.383: [app] WARNING: Try to discover [UDM] (../lib/sbi/path.c:110)
06/05 23:10:39.384: [amf] INFO: [256c7f38-e4d9-41ec-b70a-cb392d41c775] (NF-discover) NF registered (../src/amf/nnrf-handler.c:344)
06/05 23:10:39.384: [amf] INFO: [256c7f38-e4d9-41ec-b70a-cb392d41c775] (NF-discover) NF Profile updated (../src/amf/nnrf-handler.c:406)
06/05 23:10:39.387: [app] WARNING: Try to discover [PCF] (../lib/sbi/path.c:110)
06/05 23:10:39.388: [amf] INFO: [2571975c-e4d9-41ec-baf4-cd4608083bee] (NF-discover) NF registered (../src/amf/nnrf-handler.c:344)
06/05 23:10:39.389: [amf] INFO: [2571975c-e4d9-41ec-baf4-cd4608083bee] (NF-discover) NF Profile updated (../src/amf/nnrf-handler.c:406)
06/05 23:10:39.596: [gmm] INFO: [imsi-001010000000000] Registration complete (../src/amf/gmm-sm.c:1063)
06/05 23:10:39.598: [amf] INFO: [imsi-001010000000000] Configuration update command (../src/amf/nas-path.c:389)
06/05 23:10:39.599: [gmm] INFO:     UTC [2022-06-05T14:10:39] Timezone[0]/DST[0] (../src/amf/gmm-build.c:502)
06/05 23:10:39.600: [gmm] INFO:     LOCAL [2022-06-05T23:10:39] Timezone[32400]/DST[0] (../src/amf/gmm-build.c:507)
06/05 23:10:39.601: [amf] INFO: [Added] Number of AMF-Sessions is now 1 (../src/amf/context.c:2084)
06/05 23:10:39.601: [gmm] INFO: UE SUPI[imsi-001010000000000] DNN[internet] S_NSSAI[SST:1 SD:0xffffff] (../src/amf/gmm-handler.c:1068)
06/05 23:10:39.603: [smf] INFO: [Added] Number of SMF-UEs is now 1 (../src/smf/context.c:846)
06/05 23:10:39.603: [smf] INFO: [Added] Number of SMF-Sessions is now 1 (../src/smf/context.c:2868)
06/05 23:10:39.604: [app] WARNING: Try to discover [UDM] (../lib/sbi/path.c:110)
06/05 23:10:39.605: [smf] INFO: [256c7f38-e4d9-41ec-b70a-cb392d41c775] (NF-discover) NF registered (../src/smf/nnrf-handler.c:286)
06/05 23:10:39.606: [smf] INFO: [256c7f38-e4d9-41ec-b70a-cb392d41c775] (NF-discover) NF Profile updated (../src/smf/nnrf-handler.c:334)
06/05 23:10:39.609: [app] WARNING: Try to discover [PCF] (../lib/sbi/path.c:110)
06/05 23:10:39.611: [smf] INFO: [2571975c-e4d9-41ec-baf4-cd4608083bee] (NF-discover) NF registered (../src/smf/nnrf-handler.c:286)
06/05 23:10:39.611: [smf] INFO: [2571975c-e4d9-41ec-baf4-cd4608083bee] (NF-discover) NF Profile updated (../src/smf/nnrf-handler.c:334)
06/05 23:10:39.613: [app] WARNING: Try to discover [BSF] (../lib/sbi/path.c:110)
06/05 23:10:39.614: [pcf] INFO: [256c4626-e4d9-41ec-bce7-fff28bf83bd2] (NF-discover) NF registered (../src/pcf/nnrf-handler.c:288)
06/05 23:10:39.614: [pcf] INFO: [256c4626-e4d9-41ec-bce7-fff28bf83bd2] (NF-discover) NF Profile updated (../src/pcf/nnrf-handler.c:350)
06/05 23:10:39.616: [smf] INFO: UE SUPI[imsi-001010000000000] DNN[internet] IPv4[10.45.0.2] IPv6[] (../src/smf/npcf-handler.c:492)
06/05 23:10:39.617: [gtp] INFO: gtp_connect() [192.168.0.112]:2152 (../lib/gtp/path.c:60)
06/05 23:10:39.617: [app] WARNING: Try to discover [AMF] (../lib/sbi/path.c:110)
06/05 23:10:39.618: [smf] INFO: [2570bb20-e4d9-41ec-9f29-971744169c26] (NF-discover) NF registered (../src/smf/nnrf-handler.c:286)
06/05 23:10:39.618: [smf] INFO: [2570bb20-e4d9-41ec-9f29-971744169c26] (NF-discover) NF Profile updated (../src/smf/nnrf-handler.c:334)

Open5GS U-Plane1のログは以下の通りです。

06/05 23:10:39.598: [upf] INFO: [Added] Number of UPF-Sessions is now 1 (../src/upf/context.c:178)
06/05 23:10:39.598: [gtp] INFO: gtp_connect() [192.168.0.111]:2152 (../lib/gtp/path.c:60)
06/05 23:10:39.598: [upf] INFO: UE F-SEID[CP:0x1 UP:0x1] APN[internet] PDN-Type[1] IPv4[10.45.0.2] IPv6[] (../src/upf/context.c:397)
06/05 23:10:39.604: [gtp] INFO: gtp_connect() [192.168.0.131]:2152 (../lib/gtp/path.c:60)

nr-ueコマンドのコンソールログから、Open5GS 5GCからIPアドレス10.45.0.2がUE0に割り当てられたことが分かります。

[2022-06-05 23:10:39.642] [app] [info] Connection setup for PDU session[1] is successful, TUN interface[uesimtun0, 10.45.0.2] is up.

念のため、UE0のTUNインターフェースに割り当てられたIPアドレスと一致していることを確認して下さい。

# ip addr show
...
13: uesimtun0: <POINTOPOINT,PROMISC,NOTRAILERS,UP,LOWER_UP> mtu 1400 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet 10.45.0.2/32 scope global uesimtun0
       valid_lft forever preferred_lft forever
    inet6 fe80::5d3e:bfe8:f4a4:c766/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
...

google.comにpingする

UE0のTUNインターフェースを指定して、pingしてみます。

TUNインターフェースの使い方は以下を参照して下さい。

DN=10.45.0.0/16を経由する場合

VM2(U-Plane1)でtcpdumpを実行し、if=ogstunを通過するパケットを確認します。

  • VM5(UE0)でping google.com
# ping google.com -I uesimtun0 -n
PING google.com (142.251.42.142) from 10.45.0.2 uesimtun0: 56(84) bytes of data.
64 bytes from 142.251.42.142: icmp_seq=1 ttl=61 time=19.0 ms
64 bytes from 142.251.42.142: icmp_seq=2 ttl=61 time=18.5 ms
64 bytes from 142.251.42.142: icmp_seq=3 ttl=61 time=18.3 ms
  • VM2(U-Plane1)でtcpdumpを実行
# tcpdump -i ogstun -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ogstun, link-type RAW (Raw IP), capture size 262144 bytes
23:13:43.775588 IP 10.45.0.2 > 142.251.42.142: ICMP echo request, id 8, seq 1, length 64
23:13:43.791887 IP 142.251.42.142 > 10.45.0.2: ICMP echo reply, id 8, seq 1, length 64
23:13:44.776843 IP 10.45.0.2 > 142.251.42.142: ICMP echo request, id 8, seq 2, length 64
23:13:44.792868 IP 142.251.42.142 > 10.45.0.2: ICMP echo reply, id 8, seq 2, length 64
23:13:45.778149 IP 10.45.0.2 > 142.251.42.142: ICMP echo request, id 8, seq 3, length 64
23:13:45.794364 IP 142.251.42.142 > 10.45.0.2: ICMP echo reply, id 8, seq 3, length 64

また、以下のようにnr-binderツールにおいて、TUNインターフェースに割り当てられたIPアドレスを指定して、大半のアプリケーションを使用することができます。

  • VM5(UE0)でcurl google.comを実行
# sh nr-binder 10.45.0.2 curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
  • VM2(U-Plane1)でtcpdumpを実行
23:15:20.040857 IP 10.45.0.2.55853 > 172.217.31.142.80: Flags [S], seq 2033550471, win 65280, options [mss 1360,sackOK,TS val 872036884 ecr 0,nop,wscale 7], length 0
23:15:20.058280 IP 172.217.31.142.80 > 10.45.0.2.55853: Flags [S.], seq 2304001, ack 2033550472, win 65535, options [mss 1460], length 0
23:15:20.059963 IP 10.45.0.2.55853 > 172.217.31.142.80: Flags [.], ack 1, win 65280, length 0
23:15:20.060191 IP 10.45.0.2.55853 > 172.217.31.142.80: Flags [P.], seq 1:75, ack 1, win 65280, length 74: HTTP: GET / HTTP/1.1
23:15:20.060336 IP 172.217.31.142.80 > 10.45.0.2.55853: Flags [.], ack 75, win 65535, length 0
23:15:20.118319 IP 172.217.31.142.80 > 10.45.0.2.55853: Flags [P.], seq 1:529, ack 75, win 65535, length 528: HTTP: HTTP/1.1 301 Moved Permanently
23:15:20.119999 IP 10.45.0.2.55853 > 172.217.31.142.80: Flags [.], ack 529, win 64752, length 0
23:15:20.123544 IP 10.45.0.2.55853 > 172.217.31.142.80: Flags [F.], seq 75, ack 529, win 64752, length 0
23:15:20.123886 IP 172.217.31.142.80 > 10.45.0.2.55853: Flags [.], ack 76, win 65535, length 0
23:15:20.139491 IP 172.217.31.142.80 > 10.45.0.2.55853: Flags [F.], seq 529, ack 76, win 65535, length 0
23:15:20.140819 IP 10.45.0.2.55853 > 172.217.31.142.80: Flags [.], ack 530, win 64752, length 0

なお、nr-binderpingでは機能しません。理由はこちらを参照して下さい。

UE1-UE4についても同様に、各U-Planeでtcpdumpを実行し、ogstunXを通過するパケットを確認して下さい。

以上で、DNの端点にTUNインターフェースを作成し、DNに任意のパケットを流せるようになり、SA構成のローカル5Gを想定した5GCのシミュレーション携帯網として、MECを試す環境を構築できました。

最後に

5GCについては、当初、2020年4月に台湾の国立交通大学(NCTU)主導で開発、リリースされたfree5GC v3.0.0を試し始めました。一方、暫くして、Open5GSのEPCがCU分離に対応し、5GCの初版がリリースされたため、こちらを触るようになりました。なお、Uplink Classifierで使用するN9インターフェースについては未定とのことです。また、Open5GS紹介スライドも参考になります。

あとは、5G SAの基地局が安価に入手できるようになると良いですね。

5GCで導入されたCU分離は携帯網のサービス化とMECを実現する上で、有用なアーキテクチャと思います。

最後に、元記事はGithubに書いたものです。Open5GSのチュートリアルからもリンクして頂きました。

主な変更履歴

  • [2022.07.13] Open5GS v2.4.7に対応し、UERANSIM v3.2.6に対応。最後に、Open5GS紹介スライドのリンクを追加。
  • [2021.03.09] Open5GS v2.2.0に対応し、追加されたNFのNSSFについて、少し追記。UERANSIM v3.1.3に対応。
  • [2021.01.30] UERANSIM v3.0.1に対応し、操作手順を変更。
  • [2020.12.24] UERANSIM v2.2.1に対応し、操作手順を変更。
  • [2020.12.20] UERANSIM v2.1.1に対応。
  • [2020.12.15] UERANSIM v2.0.1に対応し、操作手順を変更。
  • [2020.12.13] Open5GS v2.1.0に対応し、追加されたNFのPCFについて、少し追記。
  • [2020.12.07] 初版。
13
15
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
13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?