free5GCを試してみた -Vol.01

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

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

構成

  • free5GCの全コンポーネント入のVMを一台
  • UERANSIMのUE&gNB相乗りを偶数台

一台のサーバーの中に↑をVMとして作成して
それぞれは同じブリッジに接続しています

端末の接続を行うとデータ通信は
UE(端末)<==>UPF(コア)間でカプセリングされやりとりされます

主に使ったもの

5Gコアfree5GC
リンク1
リンク2
5Gアンテナ/端末シミュレーターUERANSIM
リンク
OSUbuntu 22.04.1 LTS
トラフィック生成ツールiperf version 2.1.5
1台目のサーバー
(他にもいろいろ相乗り)
CPU: Intel(R) Xeon(R) CPU E5-2630 v2 × 2ソケット(計12コア/24スレッド)
メモリー: 128GB

* qemu-kvm
* libvirt-daemon-system
* virtinst
* ovmf

この辺をインストールしています
2台目のサーバー
(次回記載予定)
CPU: Intel(R) Xeon(R) CPU E5-2660 v3 × 2ソケット(計20コア/40スレッド)
メモリー: 128GB

トラフィック印加試験

1台目のサーバーのみ

#双方向にトラフィックを200M上限で流す(以下同様のコマンド、上限だけ変更している)

#出す側
iperf -i 1 -t 600 -b 200M -l 1400 -c ${受け側の端末へ払い出されたIP} -d

#受け側
iperf -s -i 1

この構成だと1ペアだけの通信でも上下合わせて260Mbps弱しかでず
さらには10~90秒ほどでUEがシグナルロストしてしまう事象が発生しました

次に4ペアでそれぞれ100Mbps上限でトラフィック印加したところ
1ペアのときとは異なり、上下すべて合計で400Mbps程度は出たものの
1ペアのときと同じく10~90秒ほどでUEがシグナルロストしてしまう事象が発生しました

なお、躓いたポイントとしてを後ほど書くのですが
もともとはすべての通信が一つのコアで捌いていたようで上下200Mbpsほどで頭打ちだったので
この400Mbpsでも良くなった方ではあります

ただし、最後のペアは100Mbpsは切断されることはなく7分間は通信し続けることができました
が、やはりしばらく時間が経つと途中で切断されてしまいました……

(この構成ですと400Mbpsの通信の時点でホストマシンのCPU使用率がえらいことになっていました
全コアが60数%を超えてくれないのでハイパースレッディングがうまくいってないんですかね?)

はまりポイント

セキュアブート

今回のfree5GCではUPFのパケットの処理にカーネルモジュールの読み込みが必要なのですが
そのままmake installでインストールエラーが出ていました

調べていくとどうも署名が無い(?)ようでセキュアブートが有効になっていると失敗しているようでした

なのでセキュアブートを無効化するため
virsh-editでVMの設定の該当の箇所へ↓を追記しました

<domain type='kvm'>
  <os firmware='efi'>
    <loader secure='no'/>
    <bootmenu enable='yes'/>

ブートメニューの選択肢が出ないようになっていたのでVM側でも↓の設定をしています

/etc/default/grubへ↓

------------------------------
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_HIDDEN_TIMEOUT=10
------------------------------
↑を追記/書き換え

sudo update-grub
で反映

その後VMを起動するとブートメニューが表示されその中に「UEFIの設定」の項目があるはずなので
それを選択して設定を開き、セキュアブートを無効化しました

net.ipv4.ip_forward

free5GCのUPFを動かすサーバーで

/etc/sysctl.conf の↓
---------------------
net.ipv4.ip_forward=1
---------------------
↑のコメントアウトを外すか末尾に追記

を実施することでパケットフォワードしてくれるようになります
(iptablesなども適宜許可が必要です)

virtio-netのチューニング

デフォルトだと一つのコアでしかパケット処理をしてくれないらしく
一つのコアだけが使用率100%になっていることがあったので
こちらを参考にキューの数を増やすことでトラフィックフローごとに複数のコアにバランシングされるようにしました

また、こちらも行っています
(ただ、こちらで性能向上したかはあまり体感はできなかったです……)

所感

色々全部のせでVMを作ったところ
ハイパーバイザ側のブリッジングの処理などですかね?結構CPU負荷が高いようでして
トラフィックを捌くどころかCプレーン的な通信も落としちゃっているような気がしています

一応トラフィック制限をかけ50Mbps程度の通信なら落ちないようなのですが
このままでは実機アンテナとの接続試験どころではないなと感じました

次回

Linux側のチューニングを行うことで多くのトラフィックをさばけるのかもしれないのですが
正直今の性能を見るに、チューニングでの性能向上は疑っております……

なので次回は「小技ではなく力技で」ということで
5Gコアを別筐体で構築し改めて試験しようと思います

ブログの著者欄

梅崎 皓太

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

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

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW

GMOインターネットグループのSNSをフォローして最新情報をチェック