free5GCを試してみた – Vol.03

こんにちは、GMOインターネットグループ株式会社 ネットワークソリューションチームの梅崎です
今回は弊社にある実際のローカル5G環境のアンテナをFree5GCにつなげてみました

構成

主に使ったもの

5Gコアhttps://github.com/free5gc/free5gc
02638669e8daaa301775749a3a56cb66a143857b

https://github.com/free5gc/gtp5g
652e8e512aa2371d0304253301ccf252cb41b357
OSUbuntu 22.04.2 LTS
5.15.0-67-generic
サーバーCPU : Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz× 2ソケット(計24コア/48スレッド)
メモリー : 128GB

構築

NFのコンフィグは
https://github.com/free5gc/free5gc-compose/blob/master/config/
の内容をベースにしており
composeファイルはコンテナイメージを自分でビルドするものに変更しています

composeファイルで気をつけたこと

AMFへ外部からアクセスできるようにする

services:
  amf:
    ports:
      - "0.0.0.0:38412:38412/sctp"

UPFのネットワークをホストのものに&networkのRoot権限を与える

これについてはアンテナに通知するUPFのIPアドレスが
UPF自身がbindするものになってしまうようでして

これを別のIPアドレスにする設定が分からず
とりあえずはホストのNICを直接使うようにしました

services:
  amf:
  upf:
    cap_add:
      - NET_ADMIN
    network_mode: "host"

AMF, UPFだけ外部からアクセスできるようにしておけば大丈夫なようなので
これ以外は内部ネットワークでそれぞれのコンテナ(NF)同士が通信できるようにしています

設定ファイルの変更点

各NFの設定の内、plmnを実際に利用するものへ変更
snssaiはsst 1のsd 000001のみにし他は削除しています

registerIPv4, bindingIPv4, nrfUriなどのコンテナが利用するIPアドレスをサービス名に変更しています
(UPFについてはサーバー自体のIPアドレスを直接記載しました)

UPFとSMFの設定の内、端末用のIPアドレス帯を実際に利用するIPアドレス帯へ変更

AMFのNAS security parametersをとりあえず全部有効にしています
(おそらくアンテナとが利用するものの指定が足りなかったのか、これをしないとアンテナと接続できなかったです)

  security:  # NAS security parameters
    integrityOrder: # the priority of integrity algorithms
      - NIA1
      - NIA2
      - NIA0
    cipheringOrder: # the priority of ciphering algorithms
      - NEA1
      - NEA0
      - NEA2

あとはDebugレベルを変えたり
Free5GC自体のサンプルコンフィグと見比べて必要なさそうなコンフィグを消したりしてます

実機のアンテナと接続

※注※ 免許申請の際の構成図と変わるので、定期報告の際に構成を更新した旨を国へ連絡する必要があります

アンテナ側のコアのIPアドレスを今回構築したものへ変更したのですが、すぐには端末と接続できず

とはいえ繋がらない原因も3つぐらいで
・上記にも書いたUPFコンテナのアドレスがアンテナから見えない件
・security parametersが一致しない(?)件
・リリースタグがついているバージョンではうまく行かず、その時の最新版を利用する必要があった件
これを解決すれば普通に端末との通信ができるようになり
正直、事前に思っていたよりはかなりあっさりと接続できたなという印象です

(ただ、現状も設定が足りないのか、Free5GCとアンテナとの間の接続が切れ、アンテナ側が再起動を何度か繰り返してはいますが……)

最後に

エイヤッと試した割にあっさりとFree5GCと実機の接続ができ
良い意味で拍子抜けしたなと思ってしまっています

やっぱり標準化されたプロトコルっていいなと思います

一点気になるのは
Webコンソールがブラウザで開くと認証っぽいのはあるのですが
APIを直接Curlで叩くと管理者名だけで認証(?)が通るので
ここは自前で作るかしないとならないなと思います

また、今後はFree5GCのパフォーマンス試験や他の実装のコアも試してみようと考えています
特にパフォーマンスについては、アンテナ1つ程度であれば
もっともっとCPUが弱い安価なPCでも十分動作しそうなのでそれも試して見ようと思います

NFはgoでの実装なのでいっそラズパイでも動くのではと少し思っています
(ラズパイの場合、UPFが使っているカーネルモジュールがうまく動くのか知見が無いので確信は無いですが……)

ということで次回はFree5GCのパフォーマンス試験かラズパイへコアを乗っける構成を実施しようと思います

ブログの著者欄

梅崎 皓太

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

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

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW

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