こんにちは、GMOインターネットグループ株式会社 ネットワークソリューション部の梅崎です
今回はローカル5G案件でfree5GCをVMで動かし
どれだけのトラフィックをさばけるのか試しました
目次
構成
- free5GCの全コンポーネント入のVMを一台
- UERANSIMのUE&gNB相乗りを偶数台
一台のサーバーの中に↑をVMとして作成して
それぞれは同じブリッジに接続しています
端末の接続を行うとデータ通信は
UE(端末)<==>UPF(コア)間でカプセリングされやりとりされます
主に使ったもの
5Gコア | free5GC リンク1 リンク2 |
5Gアンテナ/端末シミュレーター | UERANSIM リンク |
OS | Ubuntu 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コアを別筐体で構築し改めて試験しようと思います
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(452)
-
イベント(161)
-
カルチャー(36)
-
デザイン(18)
TAG
- 5G
- Adam byGMO
- AI
- AWX
- BIT VALLEY
- blockchain
- ChatGPT
- cloudflare
- cloudnative
- CloudStack
- CM
- CNDO
- CNDT
- CODEGYM Academy
- ConoHa
- CS
- CSS
- CTF
- DC
- Designship
- Desiner
- DeveloperExpert
- DevSecOpsThon
- DNS
- Docker
- DTF
- GitLab
- GMO Developers Day
- GMO Developers Night
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOイエラエ
- GMOグローバルサイン
- GMOソリューションパートナー
- GMOデジキッズ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOリサーチ
- Go
- GTB
- Hardning
- Harvester
- HCI
- iOS
- IoT
- ISUCON
- JapanDrone
- Java
- JJUG
- K8s
- Kaigi on Rails
- Kids VALLEY
- LLM
- MetaMask
- MySQL
- NFT
- NVIDIA
- OpenStack
- Perl
- perplexity
- PHP
- PHPcon
- PHPerKaigi
- QUIC
- Rancher
- RPA
- Ruby
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- SSL
- Terraform
- TLS
- TypeScript
- UI/UX
- VLAN
- VS Code
- アドベントカレンダー
- インターンシップ
- オブジェクト指向
- オンボーディング
- お名前.com
- カルチャー
- コンテナ
- スクラム
- スペシャリスト
- セキュリティ
- ソフトウェアテスト
- チームビルディング
- ドローン
- ネットワーク
- プログラミング教育
- ブロックチェーン
- マルチプレイ
- ミドルウェア
- モバイル
- ゆめみらいワーク
- リモートワーク
- レンタルサーバー
- 京大ミートアップ
- 協賛レポート
- 基礎
- 多拠点開発
- 大学授業
- 宮崎オフィス
- 応用
- 技育プロジェクト
- 新卒
- 暗号
- 機械学習
- 決済
PICKUP