LoginSignup
1
0

Open5GS EPCとZeroMQ対応srsRAN 4G UE/RANでeNodeBの最寄りのUPF(PGW-U)を選択する設定

Last updated at Posted at 2023-09-04

2023.05.05に、Open5GS MMEにTACとe_CellIDでSMF(PGW-C)を選択する機能をPull Requestしてマージして頂きました。
そこで、本記事は、Open5GSとsrsRAN 4Gを使用して、端末(UE)が接続した基地局(eNodeB)の最寄りのUPF(PGW-U)を選択する場合の設定について簡単に説明します。これにより、5Gと同様に4Gでも、UEからのトラフィックを最寄りのeNodeBのPDNにルーティングしてMECを実現できるようになります。
なお、EPCのコア網に登場する各NF(Network Function)の役割やインターフェースについて概ね知っていることを期待して書いており、これらの説明は省略します。


Open5GS CU分離EPCのシミュレーション携帯網の概要

今回、端末(UE)を異なる基地局(eNodeB)に接続した際に、eNodeBの最寄りのUPF(PGW-U)に接続して任意のパケットを流すことを目的に、シミュレーション環境を構築しました。EPCはC-PlaneとU-Planeに分離された携帯網で、PDNを通してインターネットと通信可能です。
このシミュレーション環境は以下の条件を満たす最小構成になります。

  • eNodeB と SGW-U/UPF(PGW-U) のペアは同じロケーションに存在します。
  • eNodeBに接続したUEは、同じロケーションにあるSGW-U/UPF(PGW-U)が管理するPDNに接続します。

この例では、eNodeBがOpen5GS MMEに接続する際、eNodeBのパラメータであるTAC(Tracking Area Code)を使用してSGW-C/SMF(PGW-C)を選択します。これにより、eNodeBと同じロケーションにあるSGW-U/PGW-Uが選択可能になります。

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

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

各VMは以下の通りです。

VM SW & Role IP address OS Memory
(Min)
HDD
(Min)
VM1 Open5GS EPC C-Plane 192.168.0.111/24
192.168.0.112/24
192.168.0.113/24
192.168.0.114/24
192.168.0.115/24
Ubuntu 22.04 1GB 20GB
VM2 Open5GS EPC U-Plane1 192.168.0.116/24
192.168.0.117/24
Ubuntu 22.04 1GB 20GB
VM3 Open5GS EPC U-Plane2 192.168.0.118/24
192.168.0.119/24
Ubuntu 22.04 1GB 20GB
VM4 srsRAN 4G ZMQ RAN
(eNodeB1)
192.168.0.121/24 Ubuntu 22.04 2GB 10GB
VM5 srsRAN 4G ZMQ RAN
(eNodeB2)
192.168.0.122/24 Ubuntu 22.04 2GB 10GB
VM6 srsRAN 4G ZMQ UE 192.168.0.123/24
192.168.0.124/24
Ubuntu 22.04 2GB 10GB

MME、SGW-C、SMF(PGW-C)、PCRFのIPアドレスは以下のとおりです。

NF IP address Local address Supported TACs
MME 192.168.0.111 127.0.0.2 1, 2
SGW-C1 192.168.0.112 127.0.0.3 1
SMF1(PGW-C) 192.168.0.113 127.0.0.4 1
PCRF1 -- 127.0.0.9 --
SGW-C2 192.168.0.114 127.0.0.23 2
SMF2(PGW-C) 192.168.0.115 127.0.0.24 2
PCRF2 -- 127.0.0.29 --

eNodeBの主な情報は以下の通りです。

eNodeB Location IP address MCC MNC TAC eNodeB ID Cell
ID
E-UTRAN
Cell ID
eNodeB1 Loc1 192.168.0.121 001 01 1 0x19b 0x01 0x19b01
eNodeB2 Loc2 192.168.0.122 001 01 2 0x19c 0x01 0x19c01

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

UE IMSI PDN OP/OPc eNodeB IP address
in ue.conf
of srsRAN UE
UE 001010000000100 internet OPc eNodeB1 in Loc1
------------------
eNodeB2 in Loc2
192.168.0.123
in ue-loc1.conf
----------------
192.168.0.124
in ue-loc2.conf

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

各PDNは以下の通りです。

PDN Location TUNnel interface
of PDN
APN TUNnel interface
of UE
U-Plane
10.45.0.0/16 Loc1 ogstun internet tun_srsue U-Plane1
10.46.0.0/16 Loc2 ogstun internet tun_srsue U-Plane2

Open5GS EPCとZMQ対応srsRAN 4G UE/RANの設定ファイルの変更点

Open5GSとZMQ対応srsRAN 4G UE/RANのビルド方法は以下を参照して下さい。

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

  • open5gs/install/etc/open5gs/mme.yaml
--- mme.yaml.orig       2023-09-03 15:52:59.000000000 +0900
+++ mme.yaml    2023-09-03 16:34:49.080255556 +0900
@@ -321,7 +321,7 @@
 mme:
     freeDiameter: /root/open5gs/install/etc/freeDiameter/mme.conf
     s1ap:
-      - addr: 127.0.0.2
+      - addr: 192.168.0.111
     gtpc:
       - addr: 127.0.0.2
     metrics:
@@ -329,15 +329,15 @@
         port: 9090
     gummei:
       plmn_id:
-        mcc: 999
-        mnc: 70
+        mcc: 001
+        mnc: 01
       mme_gid: 2
       mme_code: 1
     tai:
       plmn_id:
-        mcc: 999
-        mnc: 70
-      tac: 1
+        mcc: 001
+        mnc: 01
+      tac: [1, 2]
     security:
         integrity_order : [ EIA2, EIA1, EIA0 ]
         ciphering_order : [ EEA0, EEA1, EEA2 ]
@@ -407,6 +407,9 @@
 sgwc:
     gtpc:
       - addr: 127.0.0.3
+        tac: 1
+      - addr: 127.0.0.23
+        tac: 2
 
 #
 # smf:
@@ -470,9 +473,10 @@
 #       e_cell_id: [12345, a9413, 98765]
 smf:
     gtpc:
-      - addr:
-        - 127.0.0.4
-        - ::1
+      - addr: 127.0.0.4
+        tac: 1
+      - addr: 127.0.0.24
+        tac: 2
 
 #
 # <GTPv1C Client>
  • open5gs/install/etc/open5gs/sgwc1.yaml
--- sgwc.yaml.orig      2023-04-30 00:53:20.000000000 +0900
+++ sgwc1.yaml  2023-05-03 10:50:12.000000000 +0900
@@ -20,7 +20,7 @@
 #    domain: core,sbi,ausf,event,tlv,mem,sock
 #
 logger:
-    file: /root/open5gs/install/var/log/open5gs/sgwc.log
+    file: /root/open5gs/install/var/log/open5gs/sgwc1.log
 
 #
 #  <GTP-C Server>
@@ -81,7 +81,7 @@
     gtpc:
       - addr: 127.0.0.3
     pfcp:
-      - addr: 127.0.0.3
+      - addr: 192.168.0.112
 
 #
 #  <PFCP Client>>
@@ -130,7 +130,8 @@
 #
 sgwu:
     pfcp:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.116
+        apn: internet
 
 #
 #  o Disable use of IPv4 addresses (only IPv6)
  • open5gs/install/etc/open5gs/sgwc2.yaml
--- sgwc.yaml.orig      2023-04-30 00:53:20.000000000 +0900
+++ sgwc2.yaml  2023-05-03 10:49:34.000000000 +0900
@@ -20,7 +20,7 @@
 #    domain: core,sbi,ausf,event,tlv,mem,sock
 #
 logger:
-    file: /root/open5gs/install/var/log/open5gs/sgwc.log
+    file: /root/open5gs/install/var/log/open5gs/sgwc2.log
 
 #
 #  <GTP-C Server>
@@ -79,9 +79,9 @@
 #
 sgwc:
     gtpc:
-      - addr: 127.0.0.3
+      - addr: 127.0.0.23
     pfcp:
-      - addr: 127.0.0.3
+      - addr: 192.168.0.114
 
 #
 #  <PFCP Client>>
@@ -130,7 +130,8 @@
 #
 sgwu:
     pfcp:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.118
+        apn: internet
 
 #
 #  o Disable use of IPv4 addresses (only IPv6)
  • open5gs/install/etc/open5gs/smf1.yaml
--- smf.yaml.orig       2023-04-30 00:53:20.000000000 +0900
+++ smf1.yaml   2023-05-03 10:51:06.000000000 +0900
@@ -20,7 +20,7 @@
 #    domain: core,sbi,ausf,event,tlv,mem,sock
 #
 logger:
-    file: /root/open5gs/install/var/log/open5gs/smf.log
+    file: /root/open5gs/install/var/log/open5gs/smf1.log
 
 #
 #  o TLS enable/disable
@@ -598,33 +598,24 @@
 #      maximum_integrity_protected_data_rate_downlink: bitrate64kbs|maximum-UE-rate
 #
 smf:
-    sbi:
-      - addr: 127.0.0.4
-        port: 7777
     pfcp:
-      - addr: 127.0.0.4
-      - addr: ::1
+      - addr: 192.168.0.113
     gtpc:
       - addr: 127.0.0.4
-      - addr: ::1
     gtpu:
-      - addr: 127.0.0.4
-      - addr: ::1
+      - addr: 192.168.0.113
     metrics:
       - addr: 127.0.0.4
         port: 9090
     subnet:
       - addr: 10.45.0.1/16
-      - addr: 2001:db8:cafe::1/48
     dns:
       - 8.8.8.8
       - 8.8.4.4
-      - 2001:4860:4860::8888
-      - 2001:4860:4860::8844
     mtu: 1400
     ctf:
       enabled: auto
-    freeDiameter: /root/open5gs/install/etc/freeDiameter/smf.conf
+    freeDiameter: /root/open5gs/install/etc/freeDiameter/smf1.conf
 
 #
 #  <SBI Client>>
@@ -690,10 +681,6 @@
 #          l_linger: 10
 #
 #
-scp:
-    sbi:
-      - addr: 127.0.1.10
-        port: 7777
 
 #
 #  <SBI Client>>
@@ -808,7 +795,8 @@
 #
 upf:
     pfcp:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.117
+        dnn: internet
 
 #
 #  o Disable use of IPv4 addresses (only IPv6)
  • open5gs/install/etc/open5gs/smf2.yaml
--- smf.yaml.orig       2023-04-30 00:53:20.000000000 +0900
+++ smf2.yaml   2023-05-03 10:51:32.000000000 +0900
@@ -20,7 +20,7 @@
 #    domain: core,sbi,ausf,event,tlv,mem,sock
 #
 logger:
-    file: /root/open5gs/install/var/log/open5gs/smf.log
+    file: /root/open5gs/install/var/log/open5gs/smf2.log
 
 #
 #  o TLS enable/disable
@@ -598,33 +598,24 @@
 #      maximum_integrity_protected_data_rate_downlink: bitrate64kbs|maximum-UE-rate
 #
 smf:
-    sbi:
-      - addr: 127.0.0.4
-        port: 7777
     pfcp:
-      - addr: 127.0.0.4
-      - addr: ::1
+      - addr: 192.168.0.115
     gtpc:
-      - addr: 127.0.0.4
-      - addr: ::1
+      - addr: 127.0.0.24
     gtpu:
-      - addr: 127.0.0.4
-      - addr: ::1
+      - addr: 192.168.0.115
     metrics:
-      - addr: 127.0.0.4
+      - addr: 127.0.0.24
         port: 9090
     subnet:
-      - addr: 10.45.0.1/16
-      - addr: 2001:db8:cafe::1/48
+      - addr: 10.46.0.1/16
     dns:
       - 8.8.8.8
       - 8.8.4.4
-      - 2001:4860:4860::8888
-      - 2001:4860:4860::8844
     mtu: 1400
     ctf:
       enabled: auto
-    freeDiameter: /root/open5gs/install/etc/freeDiameter/smf.conf
+    freeDiameter: /root/open5gs/install/etc/freeDiameter/smf2.conf
 
 #
 #  <SBI Client>>
@@ -690,10 +681,6 @@
 #          l_linger: 10
 #
 #
-scp:
-    sbi:
-      - addr: 127.0.1.10
-        port: 7777
 
 #
 #  <SBI Client>>
@@ -808,7 +795,8 @@
 #
 upf:
     pfcp:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.119
+        dnn: internet
 
 #
 #  o Disable use of IPv4 addresses (only IPv6)
  • open5gs/install/etc/open5gs/pcrf1.yaml
--- pcrf.yaml.orig      2023-04-30 00:53:20.000000000 +0900
+++ pcrf1.yaml  2023-05-03 11:22:28.000000000 +0900
@@ -22,10 +22,10 @@
 #    domain: core,sbi,ausf,event,tlv,mem,sock
 #
 logger:
-    file: /root/open5gs/install/var/log/open5gs/pcrf.log
+    file: /root/open5gs/install/var/log/open5gs/pcrf1.log
 
 pcrf:
-    freeDiameter: /root/open5gs/install/etc/freeDiameter/pcrf.conf
+    freeDiameter: /root/open5gs/install/etc/freeDiameter/pcrf1.conf
 
 #
 #  o Disable use of IPv4 addresses (only IPv6)
  • open5gs/install/etc/open5gs/pcrf2.yaml
--- pcrf.yaml.orig      2023-04-30 00:53:20.000000000 +0900
+++ pcrf2.yaml  2023-05-03 11:23:00.000000000 +0900
@@ -22,10 +22,10 @@
 #    domain: core,sbi,ausf,event,tlv,mem,sock
 #
 logger:
-    file: /root/open5gs/install/var/log/open5gs/pcrf.log
+    file: /root/open5gs/install/var/log/open5gs/pcrf2.log
 
 pcrf:
-    freeDiameter: /root/open5gs/install/etc/freeDiameter/pcrf.conf
+    freeDiameter: /root/open5gs/install/etc/freeDiameter/pcrf2.conf
 
 #
 #  o Disable use of IPv4 addresses (only IPv6)
  • open5gs/install/etc/freeDiameter/smf1.conf
    smf1.confは元のsmf.confと同じです。

  • open5gs/install/etc/freeDiameter/smf2.conf

--- smf.conf.orig       2023-04-30 00:53:22.000000000 +0900
+++ smf2.conf   2023-05-03 11:20:46.000000000 +0900
@@ -79,7 +79,7 @@
 #ListenOn = "202.249.37.5";
 #ListenOn = "2001:200:903:2::202:1";
 #ListenOn = "fe80::21c:5ff:fe98:7d62%eth0";
-ListenOn = "127.0.0.4";
+ListenOn = "127.0.0.24";
 
 
 ##############################################################
@@ -261,7 +261,7 @@
 # Examples:
 #ConnectPeer = "aaa.wide.ad.jp";
 #ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ;
-ConnectPeer = "pcrf.localdomain" { ConnectTo = "127.0.0.9"; No_TLS; };
+ConnectPeer = "pcrf.localdomain" { ConnectTo = "127.0.0.29"; No_TLS; };
 
 
 ##############################################################
  • open5gs/install/etc/freeDiameter/pcrf1.conf
    pcrf1.confは元のpcrf.confと同じです。

  • open5gs/install/etc/freeDiameter/pcrf2.conf

--- pcrf.conf.orig      2023-04-30 00:53:22.000000000 +0900
+++ pcrf2.conf  2023-05-07 18:32:04.246141671 +0900
@@ -79,7 +79,7 @@
 #ListenOn = "202.249.37.5";
 #ListenOn = "2001:200:903:2::202:1";
 #ListenOn = "fe80::21c:5ff:fe98:7d62%eth0";
-ListenOn = "127.0.0.9";
+ListenOn = "127.0.0.29";
 
 
 ##############################################################
@@ -261,6 +261,6 @@
 # Examples:
 #ConnectPeer = "aaa.wide.ad.jp";
 #ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ;
-ConnectPeer = "smf.localdomain" { ConnectTo = "127.0.0.4"; No_TLS; };
+ConnectPeer = "smf.localdomain" { ConnectTo = "127.0.0.24"; No_TLS; };

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

  • open5gs/install/etc/open5gs/sgwu.yaml
--- sgwu.yaml.orig      2023-04-30 00:53:20.000000000 +0900
+++ sgwu.yaml   2023-05-03 10:54:32.000000000 +0900
@@ -114,9 +114,9 @@
 #
 sgwu:
     pfcp:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.116
     gtpu:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.116
 
 #
 #  <PFCP Client>>
  • open5gs/install/etc/open5gs/upf.yaml
--- upf.yaml.orig       2023-04-30 00:53:20.000000000 +0900
+++ upf.yaml    2023-05-03 10:55:12.000000000 +0900
@@ -196,12 +196,13 @@
 #
 upf:
     pfcp:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.117
     gtpu:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.117
     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

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

  • open5gs/install/etc/open5gs/sgwu.yaml
--- sgwu.yaml.orig      2023-04-30 00:53:20.000000000 +0900
+++ sgwu.yaml   2023-05-03 10:56:36.000000000 +0900
@@ -114,9 +114,9 @@
 #
 sgwu:
     pfcp:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.118
     gtpu:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.118
 
 #
 #  <PFCP Client>>
  • open5gs/install/etc/open5gs/upf.yaml
--- upf.yaml.orig       2023-04-30 00:53:20.000000000 +0900
+++ upf.yaml    2023-05-03 10:57:36.000000000 +0900
@@ -196,12 +196,13 @@
 #
 upf:
     pfcp:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.119
     gtpu:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.119
     subnet:
-      - addr: 10.45.0.1/16
-      - addr: 2001:db8:cafe::1/48
+      - addr: 10.46.0.1/16
+        dnn: internet
+        dev: ogstun
     metrics:
       - addr: 127.0.0.7
         port: 9090

ZMQ対応srsRAN 4G UE/RANの設定ファイルの変更点

RAN(eNodeB1)の設定ファイルの変更点

  • srsRAN_4G/build/srsenb/enb.conf
--- enb.conf.example    2023-05-02 10:51:20.000000000 +0900
+++ enb.conf    2023-05-03 11:39:50.000000000 +0900
@@ -22,9 +22,9 @@
 enb_id = 0x19B
 mcc = 001
 mnc = 01
-mme_addr = 127.0.1.100
-gtp_bind_addr = 127.0.1.1
-s1c_bind_addr = 127.0.1.1
+mme_addr = 192.168.0.111
+gtp_bind_addr = 192.168.0.121
+s1c_bind_addr = 192.168.0.121
 s1c_bind_port = 0
 n_prb = 50
 #tm = 4
@@ -80,8 +80,8 @@
 #time_adv_nsamples = auto
 
 # Example for ZMQ-based operation with TCP transport for I/Q samples
-#device_name = zmq
-#device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6
+device_name = zmq
+device_args = fail_on_disconnect=true,tx_port=tcp://192.168.0.121:2000,rx_port=tcp://192.168.0.123:2001,id=enb,base_srate=23.04e6
 
 #####################################################################
 # Packet capture configuration
  • srsRAN_4G/build/srsenb/rr.conf
--- rr.conf.example     2023-05-02 10:51:20.000000000 +0900
+++ rr.conf     2023-05-02 11:52:54.000000000 +0900
@@ -55,7 +55,7 @@
   {
     // rf_port = 0;
     cell_id = 0x01;
-    tac = 0x0007;
+    tac = 0x0001;
     pci = 1;
     // root_seq_idx = 204;
     dl_earfcn = 3350;

RAN(eNodeB2)の設定ファイルの変更点

  • srsRAN_4G/build/srsenb/enb.conf
--- enb.conf.example    2023-05-02 10:51:20.000000000 +0900
+++ enb.conf    2023-05-05 16:47:30.000000000 +0900
@@ -19,12 +19,12 @@
 #
 #####################################################################
 [enb]
-enb_id = 0x19B
+enb_id = 0x19C
 mcc = 001
 mnc = 01
-mme_addr = 127.0.1.100
-gtp_bind_addr = 127.0.1.1
-s1c_bind_addr = 127.0.1.1
+mme_addr = 192.168.0.111
+gtp_bind_addr = 192.168.0.122
+s1c_bind_addr = 192.168.0.122
 s1c_bind_port = 0
 n_prb = 50
 #tm = 4
@@ -80,8 +80,8 @@
 #time_adv_nsamples = auto
 
 # Example for ZMQ-based operation with TCP transport for I/Q samples
-#device_name = zmq
-#device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6
+device_name = zmq
+device_args = fail_on_disconnect=true,tx_port=tcp://192.168.0.122:2000,rx_port=tcp://192.168.0.124:2001,id=enb,base_srate=23.04e6
 
 #####################################################################
 # Packet capture configuration
  • srsRAN_4G/build/srsenb/rr.conf
--- rr.conf.example     2023-05-02 10:51:20.000000000 +0900
+++ rr.conf     2023-05-03 11:33:58.000000000 +0900
@@ -55,7 +55,7 @@
   {
     // rf_port = 0;
     cell_id = 0x01;
-    tac = 0x0007;
+    tac = 0x0002;
     pci = 1;
     // root_seq_idx = 204;
     dl_earfcn = 3350;

Loc1のUE(IMSI-001010000000100)の設定ファイルの変更点

  • srsRAN_4G/build/srsue/ue-loc1.conf
--- ue.conf.example     2023-05-05 16:18:12.000000000 +0900
+++ ue-loc1.conf        2023-05-03 11:35:38.000000000 +0900
@@ -42,8 +42,8 @@
 #continuous_tx     = auto
 
 # Example for ZMQ-based operation with TCP transport for I/Q samples
-#device_name = zmq
-#device_args = tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=23.04e6
+device_name = zmq
+device_args = tx_port=tcp://192.168.0.123:2001,rx_port=tcp://192.168.0.121:2000,id=ue,base_srate=23.04e6
 
 #####################################################################
 # EUTRA RAT configuration
@@ -139,9 +139,9 @@
 [usim]
 mode = soft
 algo = milenage
-opc  = 63BFA50EE6523365FF14C1F45F88737D
-k    = 00112233445566778899aabbccddeeff
-imsi = 001010123456780
+opc  = E8ED289DEBA952E4283B54E88E6183CA
+k    = 465B5CE8B199B49FAA5F0A2EE238A6BC
+imsi = 001010000000100
 imei = 353490069873319
 #reader =
 #pin  = 1234
@@ -180,8 +180,8 @@
 #                      Supported: 0 - NULL, 1 - Snow3G, 2 - AES, 3 - ZUC
 #####################################################################
 [nas]
-#apn = internetinternet
-#apn_protocol = ipv4
+apn = internet
+apn_protocol = ipv4
 #user = srsuser
 #pass = srspass
 #force_imsi_attach = false

Loc2のUE(IMSI-001010000000100)の設定ファイルの変更点

  • srsRAN_4G/build/srsue/ue-loc2.conf
--- ue.conf.example     2023-05-05 16:18:12.000000000 +0900
+++ ue-loc2.conf        2023-05-05 16:33:18.000000000 +0900
@@ -42,8 +42,8 @@
 #continuous_tx     = auto
 
 # Example for ZMQ-based operation with TCP transport for I/Q samples
-#device_name = zmq
-#device_args = tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=23.04e6
+device_name = zmq
+device_args = tx_port=tcp://192.168.0.124:2001,rx_port=tcp://192.168.0.122:2000,id=ue,base_srate=23.04e6
 
 #####################################################################
 # EUTRA RAT configuration
@@ -139,9 +139,9 @@
 [usim]
 mode = soft
 algo = milenage
-opc  = 63BFA50EE6523365FF14C1F45F88737D
-k    = 00112233445566778899aabbccddeeff
-imsi = 001010123456780
+opc  = E8ED289DEBA952E4283B54E88E6183CA
+k    = 465B5CE8B199B49FAA5F0A2EE238A6BC
+imsi = 001010000000100
 imei = 353490069873319
 #reader =
 #pin  = 1234
@@ -180,8 +180,8 @@
 #                      Supported: 0 - NULL, 1 - Snow3G, 2 - AES, 3 - ZUC
 #####################################################################
 [nas]
-#apn = internetinternet
-#apn_protocol = ipv4
+apn = internet
+apn_protocol = ipv4
 #user = srsuser
 #pass = srspass
 #force_imsi_attach = false

Open5GS EPCとZMQ対応srsRAN 4G UE/RANのネットワーク設定

Open5GS EPC C-Planeのネットワーク設定

SGW-C1/SMF1(PGW-C)とSGW-C2/SMF2(PGW-C)に以下の通りIPアドレスを追加します。

ip addr add 192.168.0.112/24 dev enp0s8
ip addr add 192.168.0.113/24 dev enp0s8
ip addr add 192.168.0.114/24 dev enp0s8
ip addr add 192.168.0.115/24 dev enp0s8

注意。本記事のVirtualBoxの環境では、enp0s8192.168.0.0/24のネットワークインターフェースです。環境に応じて変更して下さい。

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

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

net.ipv4.ip_forward=1
# sysctl -p

次に、UPF(PGW-U)のIPアドレスを追加し、TUNnelインターフェースとNAPTを設定します。

ip addr add 192.168.0.117/24 dev enp0s8

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

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

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

net.ipv4.ip_forward=1
# sysctl -p

次に、UPF(PGW-U)のIPアドレスを追加し、TUNnelインターフェースとNAPTを設定します。

ip addr add 192.168.0.119/24 dev enp0s8

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

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

ZMQ対応srsRAN 4G UEのネットワーク設定

Loc2用のUEのIPアドレスを追加します。

ip addr add 192.168.0.124/24 dev enp0s8

Open5GSとZMQ対応srsRAN 4G UE/RANのビルド

Open5GSとZMQ対応srsRAN 4G UE/RANのビルド方法は以下を参照して下さい。

Open5GS EPC C-PlaneマシンにMongoDBをインストールして下さい。Open5GS EPC U-PlaneマシンにはMongoDBをインストールする必要はありません。なお、MongoDBのデータベースを簡単に確認するには、MongoDB Compassが便利です。ZMQ対応srsRAN 4Gのビルドについては、こちらも参考にして下さい。

Open5GS EPCとZMQ対応srsRAN 4G UE/RANを実行

以下のシナリオで確認します。このようなシナリオで確認する理由は次の通りです。

Open5GSの理由

  • 現在のOpen5GSでは、SGWの変更はTAU/ハンドオーバー時にのみ行われるため。

ZMQ対応srsRAN 4G UE/RANの理由

  • 完全に停止するには、最初にUEを終了し、次にeNodeBを終了する必要があります。
  • eNodeBとUEは1回だけ実行可能です。UEが切り離された後、再接続にはeNodeBを再起動する必要があります。
  • 現在、一つのeNodeBと一つのUEの接続のみがサポートされています。

今回のシナリオ

1) EPC start

     C-Plane start
               |
               V
    U-Plane1 start
               |
               V
    U-Plane2 start

2) eNodeB1/UE(Loc1) start, ping and eNodeB1/UE(Loc1) stop

     eNodeB1 start
               |
               V
    UE(Loc1) start
               |
               V
             ping google.com -I tun_srsue -n
               |
               V
    UE(Loc1) stop
               |
               V
     eNodeB1 stop

3) MME restart

4) eNodeB2/UE(Loc2) start, ping and eNodeB2/UE(Loc2) stop

     eNodeB2 start
               |
               V
    UE(Loc2) start
               |
               V
             ping google.com -I tun_srsue -n
               |
               V
    UE(Loc2) stop
               |
               V
     eNodeB2 stop

なお、このシナリオは今回の機能を確認するためのものであり、MMEを再起動してSGWを変更する方法は、実際の使用には適切ではないと思います。

Open5GS EPC C-Planeを実行

最初に、Open5GS EPC C-Planeを起動します。

  • Open5GS EPC C-Plane
./install/bin/open5gs-mmed &
./install/bin/open5gs-sgwcd -c install/etc/open5gs/sgwc1.yaml &
./install/bin/open5gs-sgwcd -c install/etc/open5gs/sgwc2.yaml &
./install/bin/open5gs-smfd -c install/etc/open5gs/smf1.yaml &
./install/bin/open5gs-smfd -c install/etc/open5gs/smf2.yaml &
./install/bin/open5gs-hssd &
./install/bin/open5gs-pcrfd -c install/etc/open5gs/pcrf1.yaml &
./install/bin/open5gs-pcrfd -c install/etc/open5gs/pcrf2.yaml &

Open5GS EPC U-Plane1とU-Plane2を実行

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

  • Open5GS EPC U-Plane1
./install/bin/open5gs-sgwud &
./install/bin/open5gs-upfd &
  • Open5GS EPC U-Plane2
./install/bin/open5gs-sgwud &
./install/bin/open5gs-upfd &

また、各U-PlaneのVMに追加で端末を開き、tcpdumpを実行します。

  • VM2 (U-Plane1)でtcpdumpを実行
# tcpdump -i ogstun -n
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on ogstun, link-type RAW (Raw IP), snapshot length 262144 bytes
  • VM3 (U-Plane2)でtcpdumpを実行
# tcpdump -i ogstun -n
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on ogstun, link-type RAW (Raw IP), snapshot length 262144 bytes

Loc1(TAC=1)で動作確認

Loc1(TAC=1)のZMQ対応srsRAN 4G RAN(eNodeB1)を起動

ZMQ対応srsRAN 4G RAN(eNodeB1)を起動し、Open5GS EPCに接続します。

# cd srsRAN_4G/build/srsenb
# ./src/srsenb enb.conf
---  Software Radio Systems LTE eNodeB  ---

Reading configuration file enb.conf...

Built in Release mode using commit fa56836b1 on branch master.

Opening 1 channels in RF device=zmq with args=fail_on_disconnect=true,tx_port=tcp://192.168.0.121:2000,rx_port=tcp://192.168.0.123:2001,id=enb,base_srate=23.04e6
Supported RF device list: zmq file
CHx base_srate=23.04e6
CHx id=enb
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
CH0 rx_port=tcp://192.168.0.123:2001
CH0 tx_port=tcp://192.168.0.121:2000
CH0 fail_on_disconnect=true
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Setting frequency: DL=2680.0 Mhz, UL=2560.0 MHz for cc_idx=0 nof_prb=50

==== eNodeB started ===
Type <t> to view trace

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

09/03 17:35:54.983: [mme] INFO: eNB-S1 accepted[192.168.0.121]:48973 in s1_path module (../src/mme/s1ap-sctp.c:114)
09/03 17:35:54.983: [mme] INFO: eNB-S1 accepted[192.168.0.121] in master_sm module (../src/mme/mme-sm.c:108)
09/03 17:35:54.983: [mme] INFO: [Added] Number of eNBs is now 1 (../src/mme/mme-context.c:2557)
09/03 17:35:54.983: [mme] INFO: eNB-S1[192.168.0.121] max_num_of_ostreams : 30 (../src/mme/mme-sm.c:150)

Loc1のeNodeB1に接続するZMQ対応srsRAN 4G UE(ue-loc1.conf)を起動

ZMQ対応srsRAN 4G UE(ue-loc1.conf)を起動し、Loc1のeNodeB1に接続し、Open5GS EPCに接続します。

# cd srsRAN_4G/build/srsue
# ./src/srsue ue-loc1.conf
Reading configuration file ue-loc1.conf...

Built in Release mode using commit fa56836b1 on branch master.

Opening 1 channels in RF device=zmq with args=tx_port=tcp://192.168.0.123:2001,rx_port=tcp://192.168.0.121:2000,id=ue,base_srate=23.04e6
Supported RF device list: zmq file
CHx base_srate=23.04e6
CHx id=ue
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
CH0 rx_port=tcp://192.168.0.121:2000
CH0 tx_port=tcp://192.168.0.123:2001
Waiting PHY to initialize ... done!
Attaching UE...
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
.
Found Cell:  Mode=FDD, PCI=1, PRB=50, Ports=1, CP=Normal, CFO=-0.2 KHz
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Found PLMN:  Id=00101, TAC=1
Random Access Transmission: seq=32, tti=181, ra-rnti=0x2
RRC Connected
Random Access Complete.     c-rnti=0x46, ta=0
Network attach successful. IP: 10.45.0.2
 nTp) 3/9/2023 8:37:48 TZ:99

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

09/03 17:37:47.657: [mme] INFO: InitialUEMessage (../src/mme/s1ap-handler.c:279)
09/03 17:37:47.657: [mme] INFO: [Added] Number of eNB-UEs is now 1 (../src/mme/mme-context.c:4426)
09/03 17:37:47.657: [mme] INFO: Unknown UE by S_TMSI[G:2,C:1,M_TMSI:0xc00001dc] (../src/mme/s1ap-handler.c:359)
09/03 17:37:47.657: [mme] INFO:     ENB_UE_S1AP_ID[1] MME_UE_S1AP_ID[1] TAC[1] CellID[0x19b01] (../src/mme/s1ap-handler.c:455)
09/03 17:37:47.658: [mme] INFO: Unknown UE by GUTI[G:2,C:1,M_TMSI:0xc00001dc] (../src/mme/mme-context.c:3280)
09/03 17:37:47.658: [mme] INFO: [Added] Number of MME-UEs is now 1 (../src/mme/mme-context.c:3089)
09/03 17:37:47.658: [emm] INFO: [] Attach request (../src/mme/emm-sm.c:412)
09/03 17:37:47.658: [emm] INFO:     GUTI[G:2,C:1,M_TMSI:0xc00001dc] IMSI[Unknown IMSI] (../src/mme/emm-handler.c:240)
09/03 17:37:47.710: [emm] INFO: Identity response (../src/mme/emm-sm.c:382)
09/03 17:37:47.710: [emm] INFO:     IMSI[001010000000100] (../src/mme/emm-handler.c:404)
09/03 17:37:47.859: [mme] INFO: [Added] Number of MME-Sessions is now 1 (../src/mme/mme-context.c:4440)
09/03 17:37:47.955: [sgwc] INFO: [Added] Number of SGWC-UEs is now 1 (../src/sgwc/context.c:237)
09/03 17:37:47.955: [sgwc] INFO: [Added] Number of SGWC-Sessions is now 1 (../src/sgwc/context.c:879)
09/03 17:37:47.955: [sgwc] INFO: UE IMSI[001010000000100] APN[internet] (../src/sgwc/s11-handler.c:237)
09/03 17:37:47.956: [gtp] INFO: gtp_connect() [127.0.0.4]:2123 (../lib/gtp/path.c:60)
09/03 17:37:47.957: [smf] INFO: [Added] Number of SMF-UEs is now 1 (../src/smf/context.c:1010)
09/03 17:37:47.957: [smf] INFO: [Added] Number of SMF-Sessions is now 1 (../src/smf/context.c:3050)
09/03 17:37:47.957: [smf] INFO: UE IMSI[001010000000100] APN[internet] IPv4[10.45.0.2] IPv6[] (../src/smf/s5c-handler.c:255)
09/03 17:37:47.961: [gtp] INFO: gtp_connect() [192.168.0.117]:2152 (../lib/gtp/path.c:60)
09/03 17:37:48.306: [emm] INFO: [001010000000100] Attach complete (../src/mme/emm-sm.c:1298)
09/03 17:37:48.307: [emm] INFO:     IMSI[001010000000100] (../src/mme/emm-handler.c:278)
09/03 17:37:48.307: [emm] INFO:     UTC [2023-09-03T08:37:48] Timezone[0]/DST[0] (../src/mme/emm-handler.c:285)
09/03 17:37:48.307: [emm] INFO:     LOCAL [2023-09-03T17:37:48] Timezone[32400]/DST[0] (../src/mme/emm-handler.c:289)

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

09/03 17:37:47.952: [sgwu] INFO: UE F-SEID[UP:0x89d CP:0x73e] (../src/sgwu/context.c:169)
09/03 17:37:47.952: [sgwu] INFO: [Added] Number of SGWU-Sessions is now 1 (../src/sgwu/context.c:174)
09/03 17:37:47.956: [upf] INFO: [Added] Number of UPF-Sessions is now 1 (../src/upf/context.c:206)
09/03 17:37:47.956: [gtp] INFO: gtp_connect() [192.168.0.116]:2152 (../lib/gtp/path.c:60)
09/03 17:37:47.956: [gtp] INFO: gtp_connect() [192.168.0.113]:2152 (../lib/gtp/path.c:60)
09/03 17:37:47.956: [upf] INFO: UE F-SEID[UP:0xded CP:0x791] APN[internet] PDN-Type[1] IPv4[10.45.0.2] IPv6[] (../src/upf/context.c:483)
09/03 17:37:47.956: [upf] INFO: UE F-SEID[UP:0xded CP:0x791] APN[internet] PDN-Type[1] IPv4[10.45.0.2] IPv6[] (../src/upf/context.c:483)
09/03 17:37:47.957: [gtp] INFO: gtp_connect() [192.168.0.117]:2152 (../lib/gtp/path.c:60)
09/03 17:37:48.304: [gtp] INFO: gtp_connect() [192.168.0.121]:2152 (../lib/gtp/path.c:60)

VM6(UE)でのip addr showは以下の通りです。TUNnelインターフェースtun_srsueは次のように作成され、IPアドレス10.45.0.2がUEに割り当てられたことが分かります。

# ip addr show
...
6: tun_srsue: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet 10.45.0.2/24 scope global tun_srsue
       valid_lft forever preferred_lft forever
...

Loc1のDN=10.45.0.0/16を経由してgoogle.comにpingする

tcpdumpを使用して、パケットがU-Plane1のif=ogstunを通過することを確認します。

# ping google.com -I tun_srsue -n
PING google.com (172.217.161.78) from 10.45.0.2 tun_srsue: 56(84) bytes of data.
64 bytes from 172.217.161.78: icmp_seq=1 ttl=61 time=438 ms
64 bytes from 172.217.161.78: icmp_seq=2 ttl=61 time=66.6 ms
64 bytes from 172.217.161.78: icmp_seq=3 ttl=61 time=69.9 ms

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

17:39:33.917147 IP 10.45.0.2 > 172.217.161.78: ICMP echo request, id 3, seq 1, length 64
17:39:33.942728 IP 172.217.161.78 > 10.45.0.2: ICMP echo reply, id 3, seq 1, length 64
17:39:34.591150 IP 10.45.0.2 > 172.217.161.78: ICMP echo request, id 3, seq 2, length 64
17:39:34.606917 IP 172.217.161.78 > 10.45.0.2: ICMP echo reply, id 3, seq 2, length 64
17:39:35.593994 IP 10.45.0.2 > 172.217.161.78: ICMP echo request, id 3, seq 3, length 64
17:39:35.610527 IP 172.217.161.78 > 10.45.0.2: ICMP echo reply, id 3, seq 3, length 64

パケットがU-Plane2を通過しないことを確認して下さい。UEは接続したLoc1のeNodeB1に従って、同じLoc1のU-Plane1のPDNに接続します。

この後、TAC=2でLoc2を確認する準備として、eNodeB1とUEを停止します。

Open5GS MME再起動

TAC=2でLoc2を確認する準備として、Open5GS MMEを再起動します。

pkill open5gs-mmed
./install/bin/open5gs-mmed &

Loc2(TAC=2)で動作確認

Loc2(TAC=2)のZMQ対応srsRAN 4G RAN(eNodeB2)を起動

ZMQ対応srsRAN 4G RAN(eNodeB2)を起動し、Open5GS EPCに接続します。

# cd srsRAN_4G/build/srsenb
# ./src/srsenb enb.conf
---  Software Radio Systems LTE eNodeB  ---

Reading configuration file enb.conf...

Built in Release mode using commit fa56836b1 on branch master.

Opening 1 channels in RF device=zmq with args=fail_on_disconnect=true,tx_port=tcp://192.168.0.122:2000,rx_port=tcp://192.168.0.124:2001,id=enb,base_srate=23.04e6
Supported RF device list: zmq file
CHx base_srate=23.04e6
CHx id=enb
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
CH0 rx_port=tcp://192.168.0.124:2001
CH0 tx_port=tcp://192.168.0.122:2000
CH0 fail_on_disconnect=true
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Setting frequency: DL=2680.0 Mhz, UL=2560.0 MHz for cc_idx=0 nof_prb=50

==== eNodeB started ===
Type <t> to view trace

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

09/03 17:50:00.581: [mme] INFO: eNB-S1 accepted[192.168.0.122]:40020 in s1_path module (../src/mme/s1ap-sctp.c:114)
09/03 17:50:00.581: [mme] INFO: eNB-S1 accepted[192.168.0.122] in master_sm module (../src/mme/mme-sm.c:108)
09/03 17:50:00.581: [mme] INFO: [Added] Number of eNBs is now 1 (../src/mme/mme-context.c:2557)
09/03 17:50:00.581: [mme] INFO: eNB-S1[192.168.0.122] max_num_of_ostreams : 30 (../src/mme/mme-sm.c:150)

Loc2のeNodeB2に接続するZMQ対応srsRAN 4G UE(ue-loc2.conf)を起動

ZMQ対応srsRAN 4G UE(ue-loc2.conf)を起動し、Loc2のeNodeB2に接続し、Open5GS EPCに接続します。

# cd srsRAN_4G/build/srsue
# ./src/srsue ue-loc2.conf
Reading configuration file ue-loc2.conf...

Built in Release mode using commit fa56836b1 on branch master.

Opening 1 channels in RF device=zmq with args=tx_port=tcp://192.168.0.124:2001,rx_port=tcp://192.168.0.122:2000,id=ue,base_srate=23.04e6
Supported RF device list: zmq file
CHx base_srate=23.04e6
CHx id=ue
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
CH0 rx_port=tcp://192.168.0.122:2000
CH0 tx_port=tcp://192.168.0.124:2001
Waiting PHY to initialize ... done!
Attaching UE...
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
.
Found Cell:  Mode=FDD, PCI=1, PRB=50, Ports=1, CP=Normal, CFO=-0.2 KHz
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Current sample rate is 11.52 MHz with a base rate of 23.04 MHz (x2 decimation)
Found PLMN:  Id=00101, TAC=2
Random Access Transmission: seq=33, tti=181, ra-rnti=0x2
RRC Connected
Random Access Complete.     c-rnti=0x46, ta=0
Network attach successful. IP: 10.46.0.2
 nTp) 3/9/2023 8:51:14 TZ:99

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

09/03 17:51:13.952: [mme] INFO: InitialUEMessage (../src/mme/s1ap-handler.c:279)
09/03 17:51:13.952: [mme] INFO: [Added] Number of eNB-UEs is now 1 (../src/mme/mme-context.c:4426)
09/03 17:51:13.952: [mme] INFO: Unknown UE by S_TMSI[G:2,C:1,M_TMSI:0xc00005b2] (../src/mme/s1ap-handler.c:359)
09/03 17:51:13.952: [mme] INFO:     ENB_UE_S1AP_ID[1] MME_UE_S1AP_ID[1] TAC[2] CellID[0x19c01] (../src/mme/s1ap-handler.c:455)
09/03 17:51:13.952: [mme] INFO: Unknown UE by GUTI[G:2,C:1,M_TMSI:0xc00005b2] (../src/mme/mme-context.c:3280)
09/03 17:51:13.952: [mme] INFO: [Added] Number of MME-UEs is now 1 (../src/mme/mme-context.c:3089)
09/03 17:51:13.952: [emm] INFO: [] Attach request (../src/mme/emm-sm.c:412)
09/03 17:51:13.952: [emm] INFO:     GUTI[G:2,C:1,M_TMSI:0xc00005b2] IMSI[Unknown IMSI] (../src/mme/emm-handler.c:240)
09/03 17:51:14.004: [emm] INFO: Identity response (../src/mme/emm-sm.c:382)
09/03 17:51:14.004: [emm] INFO:     IMSI[001010000000100] (../src/mme/emm-handler.c:404)
09/03 17:51:14.106: [mme] INFO: [Added] Number of MME-Sessions is now 1 (../src/mme/mme-context.c:4440)
09/03 17:51:14.200: [sgwc] INFO: [Added] Number of SGWC-UEs is now 1 (../src/sgwc/context.c:237)
09/03 17:51:14.200: [sgwc] INFO: [Added] Number of SGWC-Sessions is now 1 (../src/sgwc/context.c:879)
09/03 17:51:14.200: [sgwc] INFO: UE IMSI[001010000000100] APN[internet] (../src/sgwc/s11-handler.c:237)
09/03 17:51:14.201: [gtp] INFO: gtp_connect() [127.0.0.24]:2123 (../lib/gtp/path.c:60)
09/03 17:51:14.201: [smf] INFO: [Added] Number of SMF-UEs is now 1 (../src/smf/context.c:1010)
09/03 17:51:14.201: [smf] INFO: [Added] Number of SMF-Sessions is now 1 (../src/smf/context.c:3050)
09/03 17:51:14.201: [smf] INFO: UE IMSI[001010000000100] APN[internet] IPv4[10.46.0.2] IPv6[] (../src/smf/s5c-handler.c:255)
09/03 17:51:14.205: [gtp] INFO: gtp_connect() [192.168.0.119]:2152 (../lib/gtp/path.c:60)
09/03 17:51:14.546: [emm] INFO: [001010000000100] Attach complete (../src/mme/emm-sm.c:1298)
09/03 17:51:14.547: [emm] INFO:     IMSI[001010000000100] (../src/mme/emm-handler.c:278)
09/03 17:51:14.547: [emm] INFO:     UTC [2023-09-03T08:51:14] Timezone[0]/DST[0] (../src/mme/emm-handler.c:285)
09/03 17:51:14.547: [emm] INFO:     LOCAL [2023-09-03T17:51:14] Timezone[32400]/DST[0] (../src/mme/emm-handler.c:289)

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

09/03 17:51:14.199: [sgwu] INFO: UE F-SEID[UP:0x804 CP:0x801] (../src/sgwu/context.c:169)
09/03 17:51:14.199: [sgwu] INFO: [Added] Number of SGWU-Sessions is now 1 (../src/sgwu/context.c:174)
09/03 17:51:14.203: [upf] INFO: [Added] Number of UPF-Sessions is now 1 (../src/upf/context.c:206)
09/03 17:51:14.203: [gtp] INFO: gtp_connect() [192.168.0.118]:2152 (../lib/gtp/path.c:60)
09/03 17:51:14.203: [gtp] INFO: gtp_connect() [192.168.0.115]:2152 (../lib/gtp/path.c:60)
09/03 17:51:14.203: [upf] INFO: UE F-SEID[UP:0x3b4 CP:0xff0] APN[internet] PDN-Type[1] IPv4[10.46.0.2] IPv6[] (../src/upf/context.c:483)
09/03 17:51:14.203: [upf] INFO: UE F-SEID[UP:0x3b4 CP:0xff0] APN[internet] PDN-Type[1] IPv4[10.46.0.2] IPv6[] (../src/upf/context.c:483)
09/03 17:51:14.204: [gtp] INFO: gtp_connect() [192.168.0.119]:2152 (../lib/gtp/path.c:60)
09/03 17:51:14.547: [gtp] INFO: gtp_connect() [192.168.0.122]:2152 (../lib/gtp/path.c:60)

VM6(UE)でのip addr showは以下の通りです。TUNnelインターフェースtun_srsueは次のように作成され、IPアドレス10.46.0.2がUEに割り当てられたことが分かります。

# ip addr show
...
8: tun_srsue: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet 10.46.0.2/24 scope global tun_srsue
       valid_lft forever preferred_lft forever
...

Loc1のDN=10.46.0.0/16を経由してgoogle.comにpingする

tcpdumpを使用して、パケットがU-Plane2のif=ogstunを通過することを確認します。

# ping google.com -I tun_srsue -n
PING google.com (172.217.161.78) from 10.46.0.2 tun_srsue: 56(84) bytes of data.
64 bytes from 172.217.161.78: icmp_seq=1 ttl=61 time=78.7 ms
64 bytes from 172.217.161.78: icmp_seq=2 ttl=61 time=71.7 ms
64 bytes from 172.217.161.78: icmp_seq=3 ttl=61 time=105 ms

U-Plane2のtcpdumpのログは以下の通りです。

17:53:03.985589 IP 10.46.0.2 > 172.217.161.78: ICMP echo request, id 6, seq 1, length 64
17:53:04.007017 IP 172.217.161.78 > 10.46.0.2: ICMP echo reply, id 6, seq 1, length 64
17:53:04.985819 IP 10.46.0.2 > 172.217.161.78: ICMP echo request, id 6, seq 2, length 64
17:53:05.001360 IP 172.217.161.78 > 10.46.0.2: ICMP echo reply, id 6, seq 2, length 64
17:53:06.018756 IP 10.46.0.2 > 172.217.161.78: ICMP echo request, id 6, seq 3, length 64
17:53:06.034966 IP 172.217.161.78 > 10.46.0.2: ICMP echo reply, id 6, seq 3, length 64

パケットがU-Plane1を通過しないことを確認して下さい。UEは接続したLoc2のeNodeB2に従って、同じLoc2のU-Plane2のPDNに接続します。

これで、UEが接続したeNodeBと同じロケーションにあるSGW-U/UPF(PGW-U)のPDNに接続するというシンプルな構成を確認できました。UEからのトラフィックを最寄りのeNodeBのPDNにルーティングしてMECを実現する際の設定のヒントになることを期待しています。

最後に

端末(UE)が接続した基地局(eNodeB)に応じて、最寄りのデータネットワークにトラフィックを集約して処理することは、MECの視点からポピュラーなニーズと思います。

元々、Open5GS EPCには、eNodeBのパラメータであるTACやe_CellIDを用いて、SGW-Cを選択する仕組みは存在していますが、SMF(PGW-C)を選択する仕組みがなく、結果、同じロケーションのUPF(PGW-U)を柔軟に選択することができませんでした。これでは、CU分離なアーキテクチャでEPCを構成する場合、同じロケーションのU-Planeを選択する観点から不便に思いました。

そこで、これを可能にするコードを書いて、Open5GSにPull Requestしたところ、マージされました。なお、このような構成を実現する他のOSSなEPCを個人的には知りません。

これにより、5Gと同様に4Gでも、UEが接続した最寄りのeNodeBのU-Planeにトラフィックを流すことができ、CU分離なアーキテクチャで柔軟なMECの構成を試せると思います。

最後に、元記事はGithubに書いたものです。

主な変更履歴

  • [2023.09.04] 初版。
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