free5GCを試してみた -Vol.02

こんにちは、GMOインターネットグループ株式会社 ネットワークソリューション部の梅崎です

今回はローカル5G案件でfree5GCを物理サーバー上で動かし
どれだけのトラフィックをさばけるのか試しました

free5GCを試してみた -Vol.01

構成

  • free5GC の全コンポーネントを入れた物理サーバー(10Gbps接続✕2)を一台
  • UERANSIM の UE & gNB 相乗りの VM を5台ずつ、3台の物理サーバー(10Gbps接続)へ
  • MEC見立ての物理サーバー(iperfの対向役)を一台

主に使ったもの

5Gコア free5GC この時点のもの
リンク1
リンク2
5Gアンテナ/端末シミュレーター UERANSIM v3.2.6
リンク
OS Ubuntu 22.04.1 LTS
トラフィック生成ツール iperf version 2.1.5
free5GC 側のサーバーCPU: Intel(R) Xeon(R) CPU E5-2660 v3 × 2ソケット(計20コア/40スレッド)
メモリー: 128GB
UERANSIM 側の物理サーバーCPU: Intel(R) Xeon(R) CPU E5-2670 v3 × 2ソケット(計24コア/48スレッド)
メモリー: 128GB

or

CPU: Intel(R) Xeon(R) CPU E5-2660 v3 × 2ソケット(計20コア/40スレッド)
メモリー: 128GB
UERANSIM の VMCPU: 8個
メモリー: 1GB
MEC見立ての物理サーバー CPU: Intel(R) Xeon(R) CPU E5-2660 v3 × 2ソケット(計20コア/40スレッド)
メモリー: 128GB

トラフィック印加試験

1台のVMのみ

# MECへUEごとにのトラフィックを流す

#出す側
iperf -i 1 -t 3600 -b 100M -c ${受け側のIP} -P 1 -u

#受け側
iperf -s -i 1 -u

100Mbpsのときは問題ないですが

600Mbpsのときはそもそも、UERANSIMのVMからパケットが500Mbps前後しか出ない状態でした
色々試したところ400Mbpsのトラフィック一本ならパケロス等も無いようで
今回の構成のUE一台ごとの上限は400Mbpsのようです

15台のVM(UDP)

# MECへUEごとにトラフィックを流す

#出す側
iperf -i 1 -t 3600 -b 100M -c ${受け側のIP} -P 1 -u

#受け側
iperf -s -i 1 -u

100Mbpsを15台分は特に問題なく

100Mbps * 2本が15台分は一瞬3Gbpsになるもののすぐに
セッションが切断されてしまいました

15台のVM(TCP)

次にTCPでも同様なことを試してみました

# MECへUEごとにトラフィックを流す

#出す側
iperf -i 1 -t 3600 -b 300M -c ${受け側のIP} -P 2

#受け側
iperf -s -i 1

UDPをTCPにするとアップロード側が合計で最大7Gbps程度になり
正直TCPよりUDPの方がスピードが出そうだと思っていたのですが
TCPの方が圧倒的に多くのトラフィックを捌けていて驚いています……

15台のVM(UDP、チューニングをしてみる)

ちょっとTCP側と違いあまりチューニング方法が出てこなかったのですが
一つそれらしいコマンドを見つけたので試そうと思います

# UDPはソケットバッファを増やすとパフォーマンスが良くなるとのこと
sysctl -w net.core.rmem_max=4194304
sysctl -w net.core.wmem_max=4194304

# MECへUEごとにトラフィックを流す

#出す側
iperf -i 1 -t 3600 -b 100M -c ${受け側のIP} -P 1 -u

#受け側
iperf -s -i 1 -u

100Mbps*2を15台の動作はあまり変わらないという結果でした

ここで気がついたのですが合計トラフィックが3Gbpsを超えたところで
パケットがMEC役のサーバーへ届かなくなり

その後、しばらくしfree5GCのサーバーへ来るトラフィックが3Gbpsを割り始めると
パケットがMEC役のサーバーへ到達するようになりました

15台のVM(TCP、 UL/DL双方向)

ちょっとUDPは挙動が怪しいですが、これ以上はチューニングを頑張らないとならなさそうなので
一旦TCPの方を試していきます

ここまではUEからみてUL方向のトラフィックのみだったので
今度はTCPUL/DL双方向にしたところ

# MECへUEごと、UL/DL双方向にトラフィックを流す

#出す側
iperf -i 1 -t 3600 -b 500M -c ${受け側のIP} -d

#受け側
iperf -s -i 1

ULが4.5Gbpsほど、DLが3.5Gbpsほどになりました
ただ、ULのみのときと同じく数分放置しているとセッションが切れてしまうUEが数台出てくる状態です

15台のVM(TCP、DL方向)

次にUEからみてDL方向のトラフィックをテストしてみます

# MECへUEごと、UL/DL双方向にトラフィックを流す

#出す側
iperf -i 1 -t 3600 -b 500M -c ${受け側のIP} -r

#受け側
iperf -s -i 1

DL方向のトラフィックも7Gbps程度はでるようでした
こちらも数分放置しているとセッションが切れてしまうUEが数台出ていました

15台のVM(TCP、UL方向、7Gbps以下)

最後に今までの上限トラフィックより少ないトラフィックだと
UEのセッションが切れないようになってくれるか試してみます

# MECへUEごと、UL/DL双方向にトラフィックを流す

#出す側
iperf -i 1 -t 3600 -b 400M -c ${受け側のIP}

#受け側
iperf -s -i 1

最初は問題なく400Mbps*15台の6Gbpsほどを処理できています

ただ、こちらも一時間放置したところ
いくつかのUEのセッションが切れてping届かなくなっていました

まとめ

free5GCを物理サーバー上に構築したところ
今回のサーバースペックだとTCPがUL/DL合計7~8Gbps程度、UDPがULで3Gbps程度出るようですが
トラフィックを流し続けているとUEのセッションが不安定になってしまうという結果でした

ただし、この不安定さの原因がUERANSIM側なのかfree5GC側なのか、はたまた相性の問題なのかが不明なので
今後はUE/coreの別実装でもテストする必要があるかなと思います

最後に

安定性はさておくと現状のローカル5G環境として利用する分には
捌けるトラフィックは十分かなと感じています

次回は実際のRANをfree5GCにつなげてみて
安定性等々を試していこうかと思います

ブログの著者欄

梅崎 皓太

GMOインターネットグループ株式会社

ネットワークエンジニア。GMOインターネットグループ株式会社のバックボーンから商材までのネットワーク設計・構築・運用を担当しています。 写真はマイニング事業で北欧に飛んでいたときにブリザードに遭遇した後の写真です。冷たすぎてiPhone電源落ちちゃってビックリ

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW