本記事は、Open5GSとUERANSIMを使用して、SCP(Service Communication Proxy)のIndirect communication Model Cを使用する場合の簡単な設定について説明します。これにより、複数のNFが直接通信することなく、SCPが中継することにより、NFによるサービス提供の負荷分散やサービス提供者・利用者のトポロジーがシンプルになることを期待しています。
なお、5GCのコア網に登場する各NF(Network Function)の役割やインターフェースについて概ね知っていることを期待して書いており、これらの説明は省略します。
目次
- Open5GS 5GCのシミュレーション携帯網の概要
- Open5GS 5GC C-Planeの設定ファイルの追加の変更点
- Open5GS 5GC C-Planeを実行
- 5G Trace Visualizerでpcapファイルを処理
- 最後に
- 主な変更履歴
Open5GS 5GCのシミュレーション携帯網の概要
これは、以下の構成例にSCP Model Cを適用した際の追加の設定例です。
SCPについては、3GPP TS 23.501 6.2.19, 6.3.16 and Annex E.1 Generalで説明されており、Model Cは図のオレンジ枠で囲んだ方式になります。
(Reference source: 3GPP TS 23.501 Annex E.1 General)
Model Cでは、指定した条件に合うNFのDiscovery機能にはNRFを使用し、その後、選択したNFと通信する際にSCPを経由します。
5GCとUE/RANに使用しているOSSは以下の通りです。
- 5GC - Open5GS v2.4.9 - https://github.com/open5gs/open5gs
- UE / RAN - UERANSIM v3.2.6 - https://github.com/aligungr/UERANSIM
NRFとSCPのSBIのIPアドレスは以下の通りです。
NF | IP address on SBI |
---|---|
NRF | 127.0.0.10 |
SCP | 127.0.1.10 |
Open5GS 5GC C-Planeの設定ファイルの追加の変更点
この場合、次の構成に対して、SCP Model C用に更なる変更を行います。
ここでは、追加で設定する内容について説明します。SCPを使う時、C-Planeの各NFの以下の設定ファイルを編集します。
open5gs/install/etc/open5gs/*.yaml
amf.yaml
ausf.yaml
bsf.yaml
nssf.yaml
pcf.yaml
smf1.yaml smf2.yaml
udm.yaml
udr.yaml
各NFの変更内容は同じです。以下にausf.yaml
の変更例を示します。
--- ausf.yaml.orig 2022-08-04 20:22:09.222046717 +0900
+++ ausf.yaml 2022-08-04 20:46:19.747846735 +0900
@@ -141,7 +141,11 @@
sbi:
- addr:
- 127.0.0.10
- - ::1
+ port: 7777
+
+scp:
+ sbi:
+ - addr: 127.0.1.10
port: 7777
#
なお、設定ファイルからSBIのIPv6アドレス::1
を削除しました。理由は、pcapファイルを5Gプロトコルのシーケンス図に変換するツールの5G Trace Visualizerが、::1
を適切に処理できないためです。このため、今回はIPv6アドレスを使用していません。
open5gs/install/etc/open5gs/nrf.yaml
nrf.yaml
も以下のように変更します。
--- nrf.yaml.orig 2022-08-04 20:22:09.164046273 +0900
+++ nrf.yaml 2022-08-04 20:49:31.213976148 +0900
@@ -91,7 +91,6 @@
sbi:
addr:
- 127.0.0.10
- - ::1
port: 7777
#
open5gs/install/etc/open5gs/scp.yaml
scp.yaml
も以下のように変更します。
--- scp.yaml.orig 2022-08-04 20:22:09.193046495 +0900
+++ scp.yaml 2022-08-04 20:51:18.153636042 +0900
@@ -164,7 +164,6 @@
sbi:
- addr:
- 127.0.0.10
- - ::1
port: 7777
#
Open5GS 5GC C-Planeを実行
open5gs-scpd
を追加して、Open5GS 5GC C-Planeを実行します。
./install/bin/open5gs-nrfd &
sleep 5
./install/bin/open5gs-scpd &
sleep 5
./install/bin/open5gs-smfd -c install/etc/open5gs/smf1.yaml &
./install/bin/open5gs-smfd -c install/etc/open5gs/smf2.yaml &
./install/bin/open5gs-amfd &
./install/bin/open5gs-ausfd &
./install/bin/open5gs-udmd &
./install/bin/open5gs-udrd &
./install/bin/open5gs-pcfd &
./install/bin/open5gs-nssfd &
./install/bin/open5gs-bsfd &
5G Trace Visualizerでpcapファイルを処理
5G通信の際、C-Plane VM上でtcpdumpを実行してpcapファイルを取得し、5G Trace Visualizerを使用して、5GプロトコルシーケンスをSVG図に変換します。
今回は以下の5G通信シナリオでpcapファイルを取得します。
C-Plane started
|
V
U-Plane1 started
|
V
U-Plane2 started
|
V
gNodeB started
|
V
UE(SST:1,SD:0x000001) started
|
V
ping google.com -I uesimtun0 -n
|
V
UE(SST:1,SD:0x000001) stopped
|
V
UE(SST:1,SD:0x000002) started
|
V
ping google.com -I uesimtun0 -n
|
V
UE(SST:1,SD:0x000002) stopped
そして、取得したpcapファイルを以下の通り処理します。
python3 trace_visualizer.py -wireshark "OS" -http2ports "1000-65535" <pcap file>
必要なら、次のオプションを追加することで見易い図を作成することができます。(他のオプションもあります)
-show_timestamp True -simple_diagrams True
なお、サンプルのpcapファイルとSVGファイルをここに置きました。
pcapファイルについては、ダウンロードしてWiresharkで見ることができます。また、SVGファイルについては、各SVGファイルのリンクを辿り、GithubのRaw
ボタンを押すことで、シーケンス図を見ることができます。
これにより、SCPのIndirect communication Model Cを簡単に確認することができました。
最後に
3GPP Rel.16で追加された規格のSCP(Service Communication Proxy)のIndirect communication Model Cを使用することにより、複数のNFが直接通信することなく、SCPが中継することで、NFによるサービス提供の負荷分散やサービス提供者・利用者のトポロジーがシンプルになると思います。また、2022年9月時点ではModel C対応ですが、Discovery機能をNRFの代わりにSCPでも提供するModel Dに対応する計画があるそうです。
最後に、元記事はGithubに書いたものです。Open5GSのチュートリアルからもリンクして頂きました。
主な変更履歴
- [2022.09.13] 初版。