LoginSignup
8
5

More than 1 year has passed since last update.

Open5GS EPCとOpenAirInterface UE/RANによるシミュレーション携帯網

Last updated at Posted at 2020-12-06

Open5GS v2.0.22以降、EUROCOMのUE/RANシミュレータのOpenAirInterface v1.0.3と接続できるようになりました。そこで、U-PlaneのPDN(Packet Data Network)を試すために、CU分離された携帯網のシミュレーション環境を構築しました。登場する携帯網の構成要素は全てOSS(オープンソース)であり、紹介するシミュレーションの構成例はシンプルです。ここでは、その全体像と設定ファイルについて簡単に説明します。
なお、LTEのコア網に登場する各NF(Network Function)の役割やインターフェースについて概ね知っていることを期待して書いており、これらの説明は省略します。


目次


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

今回、APN毎に異なるPDNの端点で任意のパケットを流すことを目的に、EPCがC-PlaneとU-Planeに分離された携帯網をシミュレーション用に構築しました。PDNを通してインターネットと通信可能です。
このシミュレーション環境は以下の条件を満たす最小構成になります。

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

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

注意。UEのoipXインターフェースに割り当てられたPDNの端点のIPアドレスは、必ずしも上図の順番になるとは限りません。

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
Ubuntu 20.04 1GB 20GB
VM2 Open5GS EPC U-Plane1 192.168.0.113/24
192.168.0.114/24
Ubuntu 20.04 1GB 20GB
VM3 Open5GS EPC U-Plane2 192.168.0.115/24
192.168.0.116/24
Ubuntu 20.04 1GB 20GB
VM4 OpenAirInterface UE/RAN 192.168.0.120/24 Ubuntu 18.04 2GB 40GB

VM4のOAI UE/RANのビルドはUbuntu 20.04に対応していないため、Ubuntu 18.04でビルドしました。

加入者情報は以下の通りです。(その他の項目はデフォルト値)

UE# IMSI APN OP/OPc
UE0 001010000000100 internet OPc
UE1 001010000000101 internet2 OPc
UE2 001010000000102 internet2 OPc
UE3 001010000000103 ims OPc
UE4 001010000000104 ims OPc

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

各PDNは以下の通りです。

PDN TUNnel interface of PDN APN TUNnel interface of UE U-Plane#
10.45.0.0/16 ogstun internet oip1 U-Plane1
10.46.0.0/16 ogstun2 internet2 oip2, oip3 U-Plane1
10.47.0.0/16 ogstun3 ims oip4, oip5 U-Plane2

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

Open5GS EPCとOAI UE/RANの設定ファイルの変更点

Open5GSとOAI UE/RANのビルド方法は以下を参照して下さい。

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

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

  • APN
  • TAC (Tracking Area Code)
  • e_CellID

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

  • open5gs/install/etc/open5gs/mme.yaml
--- mme.yaml.orig       2022-04-05 20:54:45.961060045 +0900
+++ mme.yaml    2022-04-05 21:00:44.186198088 +0900
@@ -245,19 +245,19 @@
 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
     gummei: 
       plmn_id:
-        mcc: 901
-        mnc: 70
+        mcc: 001
+        mnc: 01
       mme_gid: 2
       mme_code: 1
     tai:
       plmn_id:
-        mcc: 901
-        mnc: 70
+        mcc: 001
+        mnc: 01
       tac: 1
     security:
         integrity_order : [ EIA2, EIA1, EIA0 ]
@@ -387,6 +387,7 @@
 #      use_openair: true
 #
 parameter:
+    use_openair: true
 
 #
 # max:

OAI UE/RAN v1.0.3に接続するために、以下の行を有効にして下さい。

parameter:
    use_openair: true
  • open5gs/install/etc/open5gs/sgwc.yaml
--- sgwc.yaml.orig      2022-06-04 19:47:04.920150927 +0900
+++ sgwc.yaml   2022-06-04 20:12:49.514600761 +0900
@@ -69,7 +69,7 @@
     gtpc:
       - addr: 127.0.0.3
     pfcp:
-      - addr: 127.0.0.3
+      - addr: 192.168.0.111
 
 #
 # sgwu:
@@ -120,7 +120,10 @@
 #
 sgwu:
     pfcp:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.113
+        apn: [internet, internet2]
+      - addr: 192.168.0.115
+        apn: ims
 
 #
 # parameter:
  • open5gs/install/etc/open5gs/smf.yaml
--- smf.yaml.orig       2022-06-04 19:47:04.977151107 +0900
+++ smf.yaml    2022-06-04 23:09:08.094446920 +0900
@@ -377,21 +377,19 @@
 #
 
 smf:
-    sbi:
-      - addr: 127.0.0.4
-        port: 7777
     pfcp:
-      - addr: 127.0.0.4
-      - addr: ::1
+      - addr: 192.168.0.112
     gtpc:
       - addr: 127.0.0.4
-      - addr: ::1
     gtpu:
-      - addr: 127.0.0.4
-      - addr: ::1
+      - addr: 192.168.0.112
     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
@@ -440,12 +438,6 @@
 #          l_onoff: true
 #          l_linger: 10
 #
-nrf:
-    sbi:
-      - addr:
-          - 127.0.0.10
-          - ::1
-        port: 7777
 
 #
 # upf:
@@ -501,7 +493,10 @@
 #
 upf:
     pfcp:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.114
+        dnn: [internet, internet2]
+      - addr: 192.168.0.116
+        dnn: ims
 
 #
 # parameter:

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

  • open5gs/install/etc/open5gs/sgwu.yaml
--- sgwu.yaml.orig      2022-06-04 19:55:34.619319944 +0900
+++ sgwu.yaml   2022-06-04 20:26:52.317836255 +0900
@@ -98,9 +98,9 @@
 #
 sgwu:
     pfcp:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.113
     gtpu:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.113
 
 #
 # sgwc:
  • open5gs/install/etc/open5gs/upf.yaml
--- upf.yaml.orig       2022-04-05 20:55:38.304953273 +0900
+++ upf.yaml    2022-06-04 20:28:17.477289334 +0900
@@ -166,12 +166,16 @@
 #
 upf:
     pfcp:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.114
     gtpu:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.114
     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 EPC U-Plane2の設定ファイルの変更点

  • open5gs/install/etc/open5gs/sgwu.yaml
--- sgwu.yaml.orig      2022-06-04 20:03:06.617169084 +0900
+++ sgwu.yaml   2022-06-04 20:34:13.096027189 +0900
@@ -98,9 +98,9 @@
 #
 sgwu:
     pfcp:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.115
     gtpu:
-      - addr: 127.0.0.6
+      - addr: 192.168.0.115
 
 #
 # sgwc:
  • open5gs/install/etc/open5gs/upf.yaml
--- upf.yaml.orig       2022-04-05 20:56:57.984902990 +0900
+++ upf.yaml    2022-06-04 20:34:20.489022605 +0900
@@ -166,12 +166,13 @@
 #
 upf:
     pfcp:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.116
     gtpu:
-      - addr: 127.0.0.7
+      - addr: 192.168.0.116
     subnet:
-      - addr: 10.45.0.1/16
-      - addr: 2001:db8:cafe::1/48
+      - addr: 10.47.0.1/16
+        dnn: ims
+        dev: ogstun3
 
 #
 # smf:

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

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

  • ue_folder/ci-scripts/conf_files/ue.nfapi.conf
--- ue.nfapi.conf.orig  2020-11-22 07:54:40.846830672 +0000
+++ ue.nfapi.conf       2020-09-23 08:01:54.000000000 +0000
@@ -21,8 +21,8 @@
        num_cc = 1;
        tr_n_preference = "nfapi";
        local_n_if_name  = "lo";
-       remote_n_address = "127.0.0.2";
-       local_n_address  = "127.0.0.1";
+       remote_n_address = "127.0.0.1";
+       local_n_address  = "127.0.0.2";
        local_n_portc    = 50000;
        remote_n_portc   = 50001;
        local_n_portd    = 50010;
  • ue_folder/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
--- ue_eurecom_test_sfr.conf.orig       2020-11-22 15:33:56.000000000 +0000
+++ ue_eurecom_test_sfr.conf    2020-11-24 02:38:41.104185570 +0000
@@ -86,14 +86,162 @@
     };
 
     SIM: {
-        MSIN="0100001111";
-        USIM_API_K="8baf473f2f8fd09487cccbd7097c6862";
-        OPC="e734f8734007d6c5ce7a0508809e7e9c";
+        MSIN="0000000100";
+        USIM_API_K="465B5CE8B199B49FAA5F0A2EE238A6BC";
+        OPC="E8ED289DEBA952E4283B54E88E6183CA";
         MSISDN="33611123456";
     };
 
     # Home PLMN Selector with Access Technology
-    HPLMN= "20893";
+    HPLMN= "00101";
+
+    # User controlled PLMN Selector with Access Technology
+    UCPLMN_LIST = ();
+
+    # Operator PLMN List
+    OPLMN_LIST = ("00101", "20810", "20811", "20813", "20893", "310280", "310028");
+
+    # Operator controlled PLMN Selector with Access Technology
+    OCPLMN_LIST = ("22210", "21401", "21406", "26202", "26204");
+
+    # Forbidden plmns
+    FPLMN_LIST = ();
+
+    # List of Equivalent HPLMNs
+#TODO: UE does not connect if set, to be fixed in the UE
+#    EHPLMN_LIST= ("20811", "20813");
+    EHPLMN_LIST= ();
+};
+
+UE1:
+{
+    USER: {
+        IMEI="356113022094149";
+        MANUFACTURER="EURECOM";
+        MODEL="LTE Android PC";
+        PIN="0000";
+    };
+
+    SIM: {
+        MSIN="0000000101";
+        USIM_API_K="465B5CE8B199B49FAA5F0A2EE238A6BC";
+        OPC="E8ED289DEBA952E4283B54E88E6183CA";
+        MSISDN="33611123456";
+    };
+
+    # Home PLMN Selector with Access Technology
+    HPLMN= "00101";
+
+    # User controlled PLMN Selector with Access Technology
+    UCPLMN_LIST = ();
+
+    # Operator PLMN List
+    OPLMN_LIST = ("00101", "20810", "20811", "20813", "20893", "310280", "310028");
+
+    # Operator controlled PLMN Selector with Access Technology
+    OCPLMN_LIST = ("22210", "21401", "21406", "26202", "26204");
+
+    # Forbidden plmns
+    FPLMN_LIST = ();
+
+    # List of Equivalent HPLMNs
+#TODO: UE does not connect if set, to be fixed in the UE
+#    EHPLMN_LIST= ("20811", "20813");
+    EHPLMN_LIST= ();
+};
+
+UE2:
+{
+    USER: {
+        IMEI="356113022094149";
+        MANUFACTURER="EURECOM";
+        MODEL="LTE Android PC";
+        PIN="0000";
+    };
+
+    SIM: {
+        MSIN="0000000102";
+        USIM_API_K="465B5CE8B199B49FAA5F0A2EE238A6BC";
+        OPC="E8ED289DEBA952E4283B54E88E6183CA";
+        MSISDN="33611123456";
+    };
+
+    # Home PLMN Selector with Access Technology
+    HPLMN= "00101";
+
+    # User controlled PLMN Selector with Access Technology
+    UCPLMN_LIST = ();
+
+    # Operator PLMN List
+    OPLMN_LIST = ("00101", "20810", "20811", "20813", "20893", "310280", "310028");
+
+    # Operator controlled PLMN Selector with Access Technology
+    OCPLMN_LIST = ("22210", "21401", "21406", "26202", "26204");
+
+    # Forbidden plmns
+    FPLMN_LIST = ();
+
+    # List of Equivalent HPLMNs
+#TODO: UE does not connect if set, to be fixed in the UE
+#    EHPLMN_LIST= ("20811", "20813");
+    EHPLMN_LIST= ();
+};
+
+UE3:
+{
+    USER: {
+        IMEI="356113022094149";
+        MANUFACTURER="EURECOM";
+        MODEL="LTE Android PC";
+        PIN="0000";
+    };
+
+    SIM: {
+        MSIN="0000000103";
+        USIM_API_K="465B5CE8B199B49FAA5F0A2EE238A6BC";
+        OPC="E8ED289DEBA952E4283B54E88E6183CA";
+        MSISDN="33611123456";
+    };
+
+    # Home PLMN Selector with Access Technology
+    HPLMN= "00101";
+
+    # User controlled PLMN Selector with Access Technology
+    UCPLMN_LIST = ();
+
+    # Operator PLMN List
+    OPLMN_LIST = ("00101", "20810", "20811", "20813", "20893", "310280", "310028");
+
+    # Operator controlled PLMN Selector with Access Technology
+    OCPLMN_LIST = ("22210", "21401", "21406", "26202", "26204");
+
+    # Forbidden plmns
+    FPLMN_LIST = ();
+
+    # List of Equivalent HPLMNs
+#TODO: UE does not connect if set, to be fixed in the UE
+#    EHPLMN_LIST= ("20811", "20813");
+    EHPLMN_LIST= ();
+};
+
+UE4:
+{
+    USER: {
+        IMEI="356113022094149";
+        MANUFACTURER="EURECOM";
+        MODEL="LTE Android PC";
+        PIN="0000";
+    };
+
+    SIM: {
+        MSIN="0000000104";
+        USIM_API_K="465B5CE8B199B49FAA5F0A2EE238A6BC";
+        OPC="E8ED289DEBA952E4283B54E88E6183CA";
+        MSISDN="33611123456";
+    };
+
+    # Home PLMN Selector with Access Technology
+    HPLMN= "00101";
 
     # User controlled PLMN Selector with Access Technology
     UCPLMN_LIST = ();

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

  • enb_folder/ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf
--- rcc.band7.tm1.nfapi.conf.orig       2020-11-22 15:33:38.000000000 +0000
+++ rcc.band7.tm1.nfapi.conf    2020-11-24 01:00:23.936598997 +0000
@@ -15,7 +15,7 @@
     // Tracking area code, 0x0000 and 0xfffe are reserved values
     tracking_area_code = 1;
 
-    plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } );
+    plmn_list = ( { mcc = 001; mnc = 01; mnc_length = 2; } );
 
     tr_s_preference     = "local_mac"
 
@@ -172,7 +172,7 @@
 
 
     ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "CI_MME_IP_ADDR";
+    mme_ip_address      = ( { ipv4       = "192.168.0.111";
                               ipv6       = "192:168:30::17";
                               active     = "yes";
                               preference = "ipv4";
@@ -181,12 +181,12 @@
 
     NETWORK_INTERFACES :
     {
-        ENB_INTERFACE_NAME_FOR_S1_MME            = "ens3";
-        ENB_IPV4_ADDRESS_FOR_S1_MME              = "CI_ENB_IP_ADDR";
-        ENB_INTERFACE_NAME_FOR_S1U               = "ens3";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "CI_ENB_IP_ADDR";
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "enp0s8";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.0.120/24";
+        ENB_INTERFACE_NAME_FOR_S1U               = "enp0s8";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.0.120/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
-        ENB_IPV4_ADDRESS_FOR_X2C                 = "CI_ENB_IP_ADDR";
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.0.120/24";
         ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
         
     };
@@ -197,8 +197,8 @@
        {
        num_cc = 1;
        local_s_if_name  = "lo:";                         
-       remote_s_address = "127.0.0.1";
-       local_s_address  = "127.0.0.2"; 
+       remote_s_address = "127.0.0.2";
+       local_s_address  = "127.0.0.1"; 
        local_s_portc    = 50001;
        remote_s_portc   = 50000;
        local_s_portd    = 50011;

Open5GS EPCとOAI UE/RANのネットワーク設定

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

SMF(PGW-C)のIPアドレスを追加します。

ip addr add 192.168.0.112/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アドレスを追加し、TUNインターフェースとNAPTを設定します。

ip addr add 192.168.0.114/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

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 EPC U-Plane2のネットワーク設定

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

net.ipv4.ip_forward=1
# sysctl -p

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

ip addr add 192.168.0.116/24 dev enp0s8

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

OAI UE/RANのネットワーク設定

ifconfig lo: 127.0.0.2 netmask 255.0.0.0 up

Open5GSとOAI UE/RANのビルド

Open5GSとOAI UE/RANのビルド方法は以下を参照して下さい。

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

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

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

注意。OAI UE/RANをビルドする際、初回のビルドでは、build_oaiコマンドのパラメータに-Iを追加して下さい。次回からは不要です。以下はeNodeBをビルドする場合の例です。

./build_oai -I --eNB -t ETHERNET -c

Open5GS EPCとOAI UE/RANを実行

最初にEPCを起動し、次にRAN、UEを起動します。

Open5GS EPC C-Planeを実行

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

  • Open5GS EPC C-Plane
./install/bin/open5gs-mmed &
./install/bin/open5gs-sgwcd &
./install/bin/open5gs-smfd &
./install/bin/open5gs-hssd &
./install/bin/open5gs-pcrfd &

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 &

OAI RANを実行

OAI eNBを起動し、Open5GS EPCに接続します。

# cd ~/enb_folder/cmake_targets
# ./lte_build_oai/build/lte-softmodem -O ../ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf 2>&1 | tee enb.log

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

06/05 19:10:19.615: [mme] INFO: eNB-S1 accepted[192.168.0.120]:36412 in s1_path module (../src/mme/s1ap-sctp.c:114)
06/05 19:10:19.615: [mme] INFO: eNB-S1 accepted[192.168.0.120] in master_sm module (../src/mme/mme-sm.c:152)
06/05 19:10:19.615: [mme] INFO: [Added] Number of eNBs is now 1 (../src/mme/mme-context.c:1837)
06/05 19:10:19.616: [mme] INFO: eNB-N2[192.168.0.120] max_num_of_ostreams : 2 (../src/mme/mme-sm.c:194)

OAI 5 UEsを実行

OAI 5 UEsを起動し、Open5GS EPCに接続します。その際、コマンドラインのパラメータにUEを5つ使用することを示す--num-ues 5を追加して下さい。

# cd ~/ue_folder/cmake_targets/tools
# source init_nas_s1 UE
# cd ..
# ./lte_build_oai/build/lte-uesoftmodem -O ../ci-scripts/conf_files/ue.nfapi.conf --L2-emul 3 --num-ues 5 2>&1 | tee ue.log

Open5GS C-Planeのログは以下の通りです。5つのUEがEPCに接続し、PDUセッションを確立しました。

06/05 19:11:03.431: [mme] INFO: InitialUEMessage (../src/mme/s1ap-handler.c:223)
06/05 19:11:03.431: [mme] INFO: [Added] Number of eNB-UEs is now 1 (../src/mme/mme-context.c:3489)
06/05 19:11:03.431: [mme] INFO:     ENB_UE_S1AP_ID[420141] MME_UE_S1AP_ID[1] TAC[1] CellID[0xe0000] (../src/mme/s1ap-handler.c:363)
06/05 19:11:03.431: [mme] INFO: [001010000000100] Unknown UE by IMSI (../src/mme/mme-context.c:2478)
06/05 19:11:03.431: [mme] INFO: [Added] Number of MME-UEs is now 1 (../src/mme/mme-context.c:2308)
06/05 19:11:03.431: [emm] INFO: [] Attach request (../src/mme/emm-sm.c:203)
06/05 19:11:03.431: [emm] INFO:     IMSI[001010000000100] (../src/mme/emm-handler.c:188)
06/05 19:11:03.490: [mme] INFO: [Added] Number of MME-Sessions is now 1 (../src/mme/mme-context.c:3501)
06/05 19:11:03.491: [sgwc] INFO: [Added] Number of SGWC-UEs is now 1 (../src/sgwc/context.c:210)
06/05 19:11:03.491: [sgwc] INFO: [Added] Number of SGWC-Sessions is now 1 (../src/sgwc/context.c:871)
06/05 19:11:03.492: [gtp] INFO: gtp_connect() [127.0.0.4]:2123 (../lib/gtp/path.c:60)
06/05 19:11:03.493: [smf] INFO: [Added] Number of SMF-UEs is now 1 (../src/smf/context.c:876)
06/05 19:11:03.493: [smf] INFO: [Added] Number of SMF-Sessions is now 1 (../src/smf/context.c:2868)
06/05 19:11:03.493: [smf] INFO: UE IMSI[001010000000100] APN[internet] IPv4[10.45.0.2] IPv6[] (../src/smf/s5c-handler.c:255)
06/05 19:11:03.496: [gtp] INFO: gtp_connect() [192.168.0.114]:2152 (../lib/gtp/path.c:60)
06/05 19:11:03.496: [gtp] INFO: gtp_connect() [127.0.0.4]:2123 (../lib/gtp/path.c:60)
06/05 19:11:03.751: [emm] INFO: [001010000000100] Attach complete (../src/mme/emm-sm.c:1018)
06/05 19:11:03.752: [emm] INFO:     IMSI[001010000000100] (../src/mme/emm-handler.c:237)
06/05 19:11:03.752: [emm] INFO:     UTC [2022-06-05T10:11:03] Timezone[0]/DST[0] (../src/mme/emm-handler.c:243)
06/05 19:11:03.753: [emm] INFO:     LOCAL [2022-06-05T19:11:03] Timezone[32400]/DST[0] (../src/mme/emm-handler.c:247)
06/05 19:11:03.754: [mme] INFO: InitialUEMessage (../src/mme/s1ap-handler.c:223)
06/05 19:11:03.755: [mme] INFO: [Added] Number of eNB-UEs is now 2 (../src/mme/mme-context.c:3489)
06/05 19:11:03.756: [mme] INFO:     ENB_UE_S1AP_ID[16398672] MME_UE_S1AP_ID[2] TAC[1] CellID[0xe0000] (../src/mme/s1ap-handler.c:363)
06/05 19:11:03.757: [mme] INFO: [001010000000101] Unknown UE by IMSI (../src/mme/mme-context.c:2478)
06/05 19:11:03.757: [mme] INFO: [Added] Number of MME-UEs is now 2 (../src/mme/mme-context.c:2308)
06/05 19:11:03.758: [emm] INFO: [] Attach request (../src/mme/emm-sm.c:203)
06/05 19:11:03.758: [emm] INFO:     IMSI[001010000000101] (../src/mme/emm-handler.c:188)
06/05 19:11:03.801: [mme] INFO: [Added] Number of MME-Sessions is now 2 (../src/mme/mme-context.c:3501)
06/05 19:11:03.802: [sgwc] INFO: [Added] Number of SGWC-UEs is now 2 (../src/sgwc/context.c:210)
06/05 19:11:03.802: [sgwc] INFO: [Added] Number of SGWC-Sessions is now 2 (../src/sgwc/context.c:871)
06/05 19:11:03.804: [smf] INFO: [Added] Number of SMF-UEs is now 2 (../src/smf/context.c:876)
06/05 19:11:03.804: [smf] INFO: [Added] Number of SMF-Sessions is now 2 (../src/smf/context.c:2868)
06/05 19:11:03.804: [smf] INFO: UE IMSI[001010000000101] APN[internet2] IPv4[10.46.0.2] IPv6[] (../src/smf/s5c-handler.c:255)
06/05 19:11:03.831: [mme] INFO: InitialUEMessage (../src/mme/s1ap-handler.c:223)
06/05 19:11:03.831: [mme] INFO: [Added] Number of eNB-UEs is now 3 (../src/mme/mme-context.c:3489)
06/05 19:11:03.832: [mme] INFO:     ENB_UE_S1AP_ID[7773174] MME_UE_S1AP_ID[3] TAC[1] CellID[0xe0000] (../src/mme/s1ap-handler.c:363)
06/05 19:11:03.832: [mme] INFO: [001010000000102] Unknown UE by IMSI (../src/mme/mme-context.c:2478)
06/05 19:11:03.833: [mme] INFO: [Added] Number of MME-UEs is now 3 (../src/mme/mme-context.c:2308)
06/05 19:11:03.833: [emm] INFO: [] Attach request (../src/mme/emm-sm.c:203)
06/05 19:11:03.834: [emm] INFO:     IMSI[001010000000102] (../src/mme/emm-handler.c:188)
06/05 19:11:04.063: [emm] INFO: [001010000000101] Attach complete (../src/mme/emm-sm.c:1018)
06/05 19:11:04.064: [emm] INFO:     IMSI[001010000000101] (../src/mme/emm-handler.c:237)
06/05 19:11:04.064: [emm] INFO:     UTC [2022-06-05T10:11:04] Timezone[0]/DST[0] (../src/mme/emm-handler.c:243)
06/05 19:11:04.064: [emm] INFO:     LOCAL [2022-06-05T19:11:04] Timezone[32400]/DST[0] (../src/mme/emm-handler.c:247)
06/05 19:11:04.065: [mme] INFO: InitialUEMessage (../src/mme/s1ap-handler.c:223)
06/05 19:11:04.066: [mme] INFO: [Added] Number of eNB-UEs is now 4 (../src/mme/mme-context.c:3489)
06/05 19:11:04.066: [mme] INFO:     ENB_UE_S1AP_ID[10104933] MME_UE_S1AP_ID[4] TAC[1] CellID[0xe0000] (../src/mme/s1ap-handler.c:363)
06/05 19:11:04.067: [mme] INFO: [001010000000103] Unknown UE by IMSI (../src/mme/mme-context.c:2478)
06/05 19:11:04.067: [mme] INFO: [Added] Number of MME-UEs is now 4 (../src/mme/mme-context.c:2308)
06/05 19:11:04.068: [emm] INFO: [] Attach request (../src/mme/emm-sm.c:203)
06/05 19:11:04.068: [emm] INFO:     IMSI[001010000000103] (../src/mme/emm-handler.c:188)
06/05 19:11:04.085: [mme] INFO: [Added] Number of MME-Sessions is now 3 (../src/mme/mme-context.c:3501)
06/05 19:11:04.086: [sgwc] INFO: [Added] Number of SGWC-UEs is now 3 (../src/sgwc/context.c:210)
06/05 19:11:04.086: [sgwc] INFO: [Added] Number of SGWC-Sessions is now 3 (../src/sgwc/context.c:871)
06/05 19:11:04.088: [smf] INFO: [Added] Number of SMF-UEs is now 3 (../src/smf/context.c:876)
06/05 19:11:04.088: [smf] INFO: [Added] Number of SMF-Sessions is now 3 (../src/smf/context.c:2868)
06/05 19:11:04.088: [smf] INFO: UE IMSI[001010000000102] APN[internet2] IPv4[10.46.0.3] IPv6[] (../src/smf/s5c-handler.c:255)
06/05 19:11:04.114: [mme] INFO: [Added] Number of MME-Sessions is now 4 (../src/mme/mme-context.c:3501)
06/05 19:11:04.115: [sgwc] INFO: [Added] Number of SGWC-UEs is now 4 (../src/sgwc/context.c:210)
06/05 19:11:04.115: [sgwc] INFO: [Added] Number of SGWC-Sessions is now 4 (../src/sgwc/context.c:871)
06/05 19:11:04.116: [smf] INFO: [Added] Number of SMF-UEs is now 4 (../src/smf/context.c:876)
06/05 19:11:04.116: [smf] INFO: [Added] Number of SMF-Sessions is now 4 (../src/smf/context.c:2868)
06/05 19:11:04.117: [smf] INFO: UE IMSI[001010000000103] APN[ims] IPv4[10.47.0.2] IPv6[] (../src/smf/s5c-handler.c:255)
06/05 19:11:04.120: [gtp] INFO: gtp_connect() [192.168.0.116]:2152 (../lib/gtp/path.c:60)
06/05 19:11:04.343: [emm] INFO: [001010000000102] Attach complete (../src/mme/emm-sm.c:1018)
06/05 19:11:04.344: [emm] INFO:     IMSI[001010000000102] (../src/mme/emm-handler.c:237)
06/05 19:11:04.344: [emm] INFO:     UTC [2022-06-05T10:11:04] Timezone[0]/DST[0] (../src/mme/emm-handler.c:243)
06/05 19:11:04.344: [emm] INFO:     LOCAL [2022-06-05T19:11:04] Timezone[32400]/DST[0] (../src/mme/emm-handler.c:247)
06/05 19:11:04.346: [emm] INFO: [001010000000103] Attach complete (../src/mme/emm-sm.c:1018)
06/05 19:11:04.346: [emm] INFO:     IMSI[001010000000103] (../src/mme/emm-handler.c:237)
06/05 19:11:04.347: [emm] INFO:     UTC [2022-06-05T10:11:04] Timezone[0]/DST[0] (../src/mme/emm-handler.c:243)
06/05 19:11:04.347: [emm] INFO:     LOCAL [2022-06-05T19:11:04] Timezone[32400]/DST[0] (../src/mme/emm-handler.c:247)
06/05 19:11:04.348: [mme] INFO: InitialUEMessage (../src/mme/s1ap-handler.c:223)
06/05 19:11:04.349: [mme] INFO: [Added] Number of eNB-UEs is now 5 (../src/mme/mme-context.c:3489)
06/05 19:11:04.350: [mme] INFO:     ENB_UE_S1AP_ID[3105598] MME_UE_S1AP_ID[5] TAC[1] CellID[0xe0000] (../src/mme/s1ap-handler.c:363)
06/05 19:11:04.350: [mme] INFO: [001010000000104] Unknown UE by IMSI (../src/mme/mme-context.c:2478)
06/05 19:11:04.351: [mme] INFO: [Added] Number of MME-UEs is now 5 (../src/mme/mme-context.c:2308)
06/05 19:11:04.351: [emm] INFO: [] Attach request (../src/mme/emm-sm.c:203)
06/05 19:11:04.351: [emm] INFO:     IMSI[001010000000104] (../src/mme/emm-handler.c:188)
06/05 19:11:04.385: [mme] INFO: [Added] Number of MME-Sessions is now 5 (../src/mme/mme-context.c:3501)
06/05 19:11:04.385: [sgwc] INFO: [Added] Number of SGWC-UEs is now 5 (../src/sgwc/context.c:210)
06/05 19:11:04.385: [sgwc] INFO: [Added] Number of SGWC-Sessions is now 5 (../src/sgwc/context.c:871)
06/05 19:11:04.387: [smf] INFO: [Added] Number of SMF-UEs is now 5 (../src/smf/context.c:876)
06/05 19:11:04.387: [smf] INFO: [Added] Number of SMF-Sessions is now 5 (../src/smf/context.c:2868)
06/05 19:11:04.387: [smf] INFO: UE IMSI[001010000000104] APN[ims] IPv4[10.47.0.3] IPv6[] (../src/smf/s5c-handler.c:255)
06/05 19:11:04.631: [emm] INFO: [001010000000104] Attach complete (../src/mme/emm-sm.c:1018)
06/05 19:11:04.632: [emm] INFO:     IMSI[001010000000104] (../src/mme/emm-handler.c:237)
06/05 19:11:04.632: [emm] INFO:     UTC [2022-06-05T10:11:04] Timezone[0]/DST[0] (../src/mme/emm-handler.c:243)
06/05 19:11:04.633: [emm] INFO:     LOCAL [2022-06-05T19:11:04] Timezone[32400]/DST[0] (../src/mme/emm-handler.c:247)

Open5GS U-Plane1のログは以下の通りです。3つのGTP-Uセッションが作成されました。

06/05 19:11:03.453: [sgwu] INFO: UE F-SEID[CP:0x1 UP:0x1] (../src/sgwu/context.c:157)
06/05 19:11:03.453: [sgwu] INFO: [Added] Number of SGWU-Sessions is now 1 (../src/sgwu/context.c:162)
06/05 19:11:03.457: [upf] INFO: [Added] Number of UPF-Sessions is now 1 (../src/upf/context.c:178)
06/05 19:11:03.457: [gtp] INFO: gtp_connect() [192.168.0.113]:2152 (../lib/gtp/path.c:60)
06/05 19:11:03.457: [gtp] INFO: gtp_connect() [192.168.0.112]:2152 (../lib/gtp/path.c:60)
06/05 19:11:03.457: [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 19:11:03.458: [gtp] INFO: gtp_connect() [192.168.0.114]:2152 (../lib/gtp/path.c:60)
06/05 19:11:03.715: [gtp] INFO: gtp_connect() [192.168.0.120]:2152 (../lib/gtp/path.c:60)
06/05 19:11:03.764: [sgwu] INFO: UE F-SEID[CP:0x2 UP:0x2] (../src/sgwu/context.c:157)
06/05 19:11:03.764: [sgwu] INFO: [Added] Number of SGWU-Sessions is now 2 (../src/sgwu/context.c:162)
06/05 19:11:03.768: [upf] INFO: [Added] Number of UPF-Sessions is now 2 (../src/upf/context.c:178)
06/05 19:11:03.769: [upf] INFO: UE F-SEID[CP:0x2 UP:0x2] APN[internet2] PDN-Type[1] IPv4[10.46.0.2] IPv6[] (../src/upf/context.c:397)
06/05 19:11:04.048: [sgwu] INFO: UE F-SEID[CP:0x3 UP:0x3] (../src/sgwu/context.c:157)
06/05 19:11:04.048: [sgwu] INFO: [Added] Number of SGWU-Sessions is now 3 (../src/sgwu/context.c:162)
06/05 19:11:04.052: [upf] INFO: [Added] Number of UPF-Sessions is now 3 (../src/upf/context.c:178)
06/05 19:11:04.053: [upf] INFO: UE F-SEID[CP:0x3 UP:0x3] APN[internet2] PDN-Type[1] IPv4[10.46.0.3] IPv6[] (../src/upf/context.c:397)

Open5GS U-Plane2のログは以下の通りです。2つのGTP-Uセッションが作成されました。

06/05 19:11:04.090: [sgwu] INFO: UE F-SEID[CP:0x1 UP:0x4] (../src/sgwu/context.c:157)
06/05 19:11:04.090: [sgwu] INFO: [Added] Number of SGWU-Sessions is now 1 (../src/sgwu/context.c:162)
06/05 19:11:04.094: [upf] INFO: [Added] Number of UPF-Sessions is now 1 (../src/upf/context.c:178)
06/05 19:11:04.094: [gtp] INFO: gtp_connect() [192.168.0.115]:2152 (../lib/gtp/path.c:60)
06/05 19:11:04.094: [gtp] INFO: gtp_connect() [192.168.0.112]:2152 (../lib/gtp/path.c:60)
06/05 19:11:04.094: [upf] INFO: UE F-SEID[CP:0x1 UP:0x4] APN[ims] PDN-Type[1] IPv4[10.47.0.2] IPv6[] (../src/upf/context.c:397)
06/05 19:11:04.095: [gtp] INFO: gtp_connect() [192.168.0.116]:2152 (../lib/gtp/path.c:60)
06/05 19:11:04.323: [gtp] INFO: gtp_connect() [192.168.0.120]:2152 (../lib/gtp/path.c:60)
06/05 19:11:04.360: [sgwu] INFO: UE F-SEID[CP:0x2 UP:0x5] (../src/sgwu/context.c:157)
06/05 19:11:04.361: [sgwu] INFO: [Added] Number of SGWU-Sessions is now 2 (../src/sgwu/context.c:162)
06/05 19:11:04.365: [upf] INFO: [Added] Number of UPF-Sessions is now 2 (../src/upf/context.c:178)
06/05 19:11:04.366: [upf] INFO: UE F-SEID[CP:0x2 UP:0x5] APN[ims] PDN-Type[1] IPv4[10.47.0.3] IPv6[] (../src/upf/context.c:397)

VM4(OAI UEマシン)でip addr showを実行した結果は以下の通りです。TUNインターフェースoip1-oip5に各PDNのIPアドレスが割り当てられていることが分かります。

# ip addr show
...
20: oip1: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/generic 00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00
    inet 10.45.0.2/8 brd 10.255.255.255 scope global oip1
       valid_lft forever preferred_lft forever
21: oip2: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/generic 00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00
    inet 10.46.0.2/8 brd 10.255.255.255 scope global oip2
       valid_lft forever preferred_lft forever
22: oip3: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/generic 00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00
    inet 10.46.0.3/8 brd 10.255.255.255 scope global oip3
       valid_lft forever preferred_lft forever
23: oip4: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/generic 00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00
    inet 10.47.0.2/8 brd 10.255.255.255 scope global oip4
       valid_lft forever preferred_lft forever
24: oip5: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/generic 00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00
    inet 10.47.0.3/8 brd 10.255.255.255 scope global oip5
       valid_lft forever preferred_lft forever
...

google.comにpingする

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

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

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

  • VM4(UE0)でping google.com
# ping google.com -I oip1 -n
PING google.com (142.251.42.206) from 10.45.0.2 oip1: 56(84) bytes of data.
64 bytes from 142.251.42.206: icmp_seq=1 ttl=61 time=63.9 ms
64 bytes from 142.251.42.206: icmp_seq=2 ttl=61 time=63.8 ms
64 bytes from 142.251.42.206: icmp_seq=3 ttl=61 time=62.1 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
19:19:03.967322 IP 10.45.0.2 > 142.251.42.206: ICMP echo request, id 3126, seq 1, length 64
19:19:03.984741 IP 142.251.42.206 > 10.45.0.2: ICMP echo reply, id 3126, seq 1, length 64
19:19:04.966964 IP 10.45.0.2 > 142.251.42.206: ICMP echo request, id 3126, seq 2, length 64
19:19:04.983959 IP 142.251.42.206 > 10.45.0.2: ICMP echo reply, id 3126, seq 2, length 64
19:19:05.966983 IP 10.45.0.2 > 142.251.42.206: ICMP echo request, id 3126, seq 3, length 64
19:19:05.984050 IP 142.251.42.206 > 10.45.0.2: ICMP echo reply, id 3126, seq 3, length 64

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

以上で、PDNの端点にTUNインターフェースを作成し、PDNに任意のパケットを流せるようになり、CU分離なプライベートLTEのシミュレーション携帯網として、MECを試す環境を構築できました。

最後に

ご存知の方も多いと思いますが、Open5GSの前身はNextEPCです。個人的にOpen5GSを気に入っている理由は以下の通りです。

話変わりますが、当初、Open5GS EPCとOpenAirInterface UEの接続はうまく行きませんでした。2020年9月下旬にこれを認識し、Open5GSの開発者に指摘するとともにEUROCOMにも状況を伝えました。

結果、Attach Request時に、MMEがSecurity-Modeの制御手順を開始する際、Security-Mode-Commandメッセージに、3GPP TS 24.301 v14.4から導入されたHashMMEを含める必要があるのですが、OAI UEはこれに対応していないことが判明し、EUROCOMの開発者もこのことを認識しました。

本来、OAI UEが対応するのが筋なのですが、先方の事情でこれに対応することができず、2020年11月にOpen5GS側で対応して頂きました。これにより、UE/RANのシミュレータにOAIを採用し、CU分離に対応したOpen5GS EPCと連携した携帯網を試験的に構築し、GTP-Uを使用することができるようになりました。

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

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

主な変更履歴

  • [2022.07.13] Open5GS v2.4.7に対応し、SMF(PGW-C)とUPF(PGW-U)に別途、IPアドレスを割当。
  • [2021.03.09] Open5GS v2.2.0に対応。
  • [2020.12.07] 初版。
8
5
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
8
5