こんにちは、GMOインターネットグループ株式会社 ネットワークソリューションチームの梅崎です今回は弊社にある実際のローカル5G環境のアンテナをFree5GCにつなげてみました
構成
主に使ったもの
5Gコアhttps://github.com/free5gc/free5gc02638669e8daaa301775749a3a56cb66a143857bhttps://github.com/free5gc/gtp5g652e8e512aa2371d0304253301ccf252cb41b357OSUbuntu 22.04.2 LTS5.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のパフォーマンス試験かラズパイへコアを乗っける構成を実施しようと思います