4G/5Gモバイルネットワークの簡単な動作確認

本記事は、4G/5Gモバイルネットワークに関する幾つかのオープンソースの一部機能を簡単に動作確認した際のメモです。環境によっては動作しない場合もありますのでご了承下さい。

## バージョンとリソースの要件

### [Open5GS](https://github.com/open5gs/open5gs)

| Role | Ver | Commit & Date | OS | CPU | Mem | HDD |
| --- | --- | --- | --- | --- | --- | --- |
| C-Plane | 2.7.2+ | `deef017dfeb276f5f6a17c286df0646c17e9b201`<br>2024.08.27 | Ubuntu<br>24.04 | 1 | 2 GB | 20 GB |
| UPF | 2.7.2+ | `deef017dfeb276f5f6a17c286df0646c17e9b201`<br>2024.08.27 | Ubuntu<br>24.04 | 1 | 1 GB | 20 GB |

### [free5GC](https://github.com/free5gc/free5gc)

| Role | Ver | Commit & Date | OS | CPU | Mem | HDD |
| --- | --- | --- | --- | --- | --- | --- |
| C-Plane | 3.4.3 | `e76c358019c975f61f5d661165eae37efe3b75da`<br>2024.09.05 | Ubuntu<br>24.04 | 1 | 2 GB | 20 GB |
| [UPF](https://github.com/free5gc/go-upf) | 1.2.3 | `922281ba58b6ca42d73be218671c8feae3658420`<br>2024.05.11 | Ubuntu<br>24.04 | 1 | 1 GB | 10 GB |
| | 1.2.1<br>(for ULCL) | `44a445df3d80b3c3052dea80c3ac112ebc73cbff`<br>2023.12.19 | Ubuntu<br>24.04 | 1 | 1 GB | 10 GB |
| [gtp5g](https://github.com/free5gc/gtp5g)<br>(UPF) | 0.8.10 | `3ee1a5262c5b4dc2ba118b7cb1ed0ba842d3b07b`<br>2024.06.03 | -- | -- | -- | -- |

### [UPG-VPP](https://github.com/travelping/upg-vpp)
| Role | Ver | Commit & Date | OS | CPU | Mem | HDD |
| --- | --- | --- | --- | --- | --- | --- |
| UPF | 1.13.0 | `dfdf64000566d35955d7c180720ff66086bd3572`<br>2024.03.25 | Ubuntu<br>22.04 | 2 | 8 GB | 20 GB |

### [eUPF](https://github.com/edgecomllc/eupf)

| Role | Ver | Commit & Date | OS | CPU | Mem | HDD |
| --- | --- | --- | --- | --- | --- | --- |
| UPF | 0.6.4 | `0f704deaca67766733a447f4680cf4d77e638934`<br>2024.05.01 | Ubuntu<br>24.04 | 1 | 2 GB | 20 GB |

### [UERANSIM](https://github.com/aligungr/UERANSIM)

| Role | Ver | Commit & Date | OS | CPU | Mem | HDD |
| --- | --- | --- | --- | --- | --- | --- |
| RAN & UE | 3.2.6+ | `528061fe10389876da58d3bd15e8cba6d7c152a9`<br>2024.08.27 | Ubuntu<br>24.04 | 1 | 1 GB | 10 GB |

### [srsRAN_Project](https://github.com/srsran/srsRAN_Project)

| Role | Ver | Commit & Date | OS | CPU | Mem | HDD |
| --- | --- | --- | --- | --- | --- | --- |
| RAN | 24.04+ | `4ac5300d4927b5199af69e6bc2e55d061fc33652`<br>2024.07.31 | Ubuntu<br>24.04 | 2 | 4 GB | 10 GB |

### [srsRAN_4G](https://github.com/srsran/srsRAN_4G)

| Role | Ver | Commit & Date | OS | CPU | Mem | HDD |
| --- | --- | --- | --- | --- | --- | --- |
| RAN & UE | 23.11+ | `ec29b0c1ff79cebcbe66caa6d6b90778261c42b8`<br>2024.02.01 | Ubuntu<br>22.04 | 1 | 2 GB | 10 GB |

### [PacketRusher](https://github.com/HewlettPackard/PacketRusher)

| Role | Ver | Commit & Date | OS | CPU | Mem | HDD |
| --- | --- | --- | --- | --- | --- | --- |
| RAN & UE | 20240521+ | `32a08fa9fb2d83b654628b5187a0244a66b737b2`<br>2024.06.24 | Ubuntu<br>24.04 | 1 | 1GB | 10GB |
| [gtp5g](https://github.com/free5gc/gtp5g)<br>(RAN) | 0.8.6 | `d8818ee80a9a004ea0fac3715415395810666921`<br>2024.02.18 | -- | -- | -- | -- |
|| 0.9.1+ **[1]** | `02ac100d8fb71e8dd00d2421a4914dd504b913dd`<br>2024.08.15 | -- | -- | -- | -- |

**[1]** gtp5g v0.8.7以降では、GTP-Uシーケンス番号がデフォルトで有効になっています。この場合、eUPFはGTP-Uパケットを正しく処理できない可能性があります。そのため、eUPFに接続する場合は、PacketRusherが使用するgtp5gのGTP-Uシーケンス番号を以下のように無効にしてください。

   ```
   # echo 0 > /proc/gtp5g/seq
   ```

   なお、iperf3を使用したUPFパフォーマンス測定では、GTP-Uシーケンス番号が無効になっている場合の方がパフォーマンスが向上する傾向がありました。(例: UPG-VPP)

## PingとiPerf3

以下はこちらの環境でpingとiperf3の動作を確認した結果です。

### 5Gの場合

| UE | RAN | C-Plane | UPF | N3/N4/N6 | Ping | iPerf3 |
| --- | --- | --- | --- | --- | --- | --- |
| UERANSIM | UERANSIM | Open5GS | Open5GS | Separate | OK | OK |
| | | | | Same | OK | OK |
| | | | UPG-VPP | Separate | OK | OK |
| | | | eUPF | Separate | OK | OK |
| | | free5GC | free5GC | Separate | OK | OK |
| | | | | Same | OK | OK |
| | | | UPG-VPP | Separate | OK | OK |
| | | | eUPF | Separate | OK | OK |
| srsRAN_4G | srsRAN_Project | Open5GS | Open5GS | Separate | OK | OK |
| | | | | Same | OK | OK |
| | | | UPG-VPP | Separate | OK **[2]** | OK **[2]** |
| | | | eUPF | Separate | OK | OK **[3]** |
| | | free5GC | free5GC | Separate | OK | OK |
| | | | | Same | OK | OK |
| | | | UPG-VPP | Separate | OK **[2]** | OK **[2]** |
| | | | eUPF | Separate | OK | OK **[3]** |
| PacketRusher | PacketRusher | Open5GS | Open5GS | Separate | OK | OK |
| | | | | Same | OK | OK |
| | | | UPG-VPP | Separate | OK | OK |
| | | | eUPF | Separate | OK **[1]** | OK **[1]** |
| | | free5GC | free5GC | Separate | OK | OK |
| | | | | Same | OK | OK |
| | | | UPG-VPP | Separate | OK | OK |
| | | | eUPF | Separate | OK **[1]** | OK **[1]** |

### 4Gの場合

| UE | RAN | C-Plane | SGW-U | PGW-U (UPF) | S5u/Sxb/SGi | Ping | iPerf3 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| srsRAN_4G | srsRAN_4G | Open5GS | Open5GS | Open5GS | Separate | OK | OK |
| | | | | | Same | OK | OK |
| | | | | UPG-VPP | Separate | OK | OK |
| | | | | eUPF | Separate | OK | OK **[3]** |

**[2]** UPG-VPP v1.13.0は`PDU Session container`をサポートしていません。そのため、srsRAN_Projectなどの一部のgNodeBはUPG-VPPからのGTPトラフィックを受け入れない可能性があります。その場合は、[こちら](https://github.com/s5uishida/install_vpp_upf_dpdk/tree/main#build-upg-vpp-v1130)の注意事項を参照して下さい。今回の結果では、この暫定パッチを適用し、srsRAN_ProjectのgNodeBで動作することを確認しました。

**[3]** IPフラグメンテーションを回避するには、eUPFのN6またはSGiインターフェイスとsrsRAN_4G UEの `tun_srsue`インターフェイスの両方のMTUを次のように変更します。

   - eUPFのN6またはSGiインターフェースの場合:
   ```
   # ip link set <N6 or SGi interface of eUPF> mtu 1450
   ```
   - srsRAN_4G UE の `tun_srsue` インターフェイスの場合:
   ```
   # ip link set tun_srsue mtu 1400
   ```

## 最後に

UEをコア網に接続してPDUセッションを確立できても、pingやiperf3を試すと、必ずしもGTP-Uトンネルを正常に張れていないことや、指定したルートでパケットが流れないこと等がありました。OSSは試してみないと分からないことが多いですね。

最後に、元記事は[Github](https://github.com/s5uishida/simple_confirmed_info_for_mobile_network)に書いたものです。

## 主な変更履歴

- [2024.09.12] 初版。