何度もOSをいれなおしましたが、今度こそミニPC上に Open5GSによるEPC構築を目指します。
参考文献
Open 5GSのドキュメント
https://open5gs.org/open5gs/docs/
完成形イメージ
紆余曲折
User’s Guide
Quickstart
5GCoreを建てようと思うと、ピンクの部分がごちゃっとしてて難しそうなので、
まずは緑の部分EPCを建てようと思いました。
1. Introduction 4G/ 5G NSA Core
SGWとPGWが、C(制御側)とU(データの転送)で分かれている(いわゆるC/U分離 CUPS)なのが若干気になりますが、
ほぼ私の知っているEPCなので、なんとかなりそう。
The Open5GS 4G/ 5G NSA Core contains the following components:
MME - Mobility Management Entity
HSS - Home Subscriber Server
PCRF - Policy and Charging Rules Function
SGWC - Serving Gateway Control Plane
SGWU - Serving Gateway User Plane
PGWC/SMF - Packet Gateway Control Plane / (component contained in Open5GS SMF)
PGWU/UPF - Packet Gateway User Plane / (component contained in Open5GS UPF)
MME - HSS で認証したり、端末が移動したときのハンドオーバー制御して、
HSS - PCRF で認証されたユーザーの情報を渡して、
PCRFがSGW/PGWに流れるデータの転送を制御する
ようなイメージ。
2.Install Open5GS with a Package Manager
Ubuntuのパッケージがあるので、簡単にインストールできる。
ミニPCへのUbuntuインストールは下記記事参照
https://qiita.com/kanegae/items/610294ce18e9ae802582
メインPCからミニPCにSSHアクセスして、UbuntuにOpen5GSをインストール
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:open5gs/latest
$ sudo apt update
$ sudo apt install open5gs
・apt update
https://packages.ubuntu.com/focal/
色々まとめて最新化してくれるらしい。
コンパイラ、ライブラリ、エディタ等
・apt install software-properties-common
https://packages.ubuntu.com/ja/bionic-updates/software-properties-common
open sslとかPythonがインストールされるらしい
・add-apt-repository ppa:open5gs/latest
open 5gsのPPA(Personal Package Archive opne5gs)のリポジトリを追加。
→open 5gsの各種パッケージがダウンロードできるようになる。
3. Install the WebUI of Open5GS
WebUIで加入者データ(電話番号、SIMのキーとか設定できるっぽい)
Node.jsが必要。
・Node.js:非同期型のイベント駆動の JavaScript 環境?(Javaがサーバ上で動く?)
$ sudo apt update
$ sudo apt install curl
$ curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs
Node.js 14.がインストールされたっぽい
・curl command line tool for transferring data with URL syntax
https://packages.ubuntu.com/ja/focal/curl
//HTTPのgetとかputがコマンドラインで送れるっぽい。
//curl -fsSL がよくわからず。
WebUIがインストールできた様子。
Download the Open5GS Source Code (v2.4.7)
/home/kaneb1a/open5gs-2.4.7/webui/.babelrc"
pen5gs@2.4.7 build /home/kaneb1a/open5gs-2.4.7/webui
Default Administrator Account [Username:xxxx, Password:xxxx]
4. Configure Open5GS
・HSSに加入者データ(電話番号など)
・PGWにIPルーチングテーブル
・Quick startでは1台のPCですべてのコンポーネントがある前提。loopback addressを使う。
//とりあえず、EPC(4G)コアだけ絵にしてみました。
4.1. Setup a 4G/ 5G NSA Core
MMEのmcc/mncを変更。
PLMN: Public Land Mobile Network : 携帯事業者の識別番号 001/01
→せっかくなので、日本の番号にしてみる 国コード:440 事業者コード:19
※日本のPLMN割り当てについては 4.1.1. で詳細後述
TAC(TrackingAreaCode) エリアの識別:各事業者で割り当てるものっぽい
→デフォルトの1にする。
エディタは nanoを使っておく。
/etc/open5gs$ sudo nano mme.yaml
mme:
freeDiameter: /etc/freeDiameter/mme.conf
s1ap:
- addr: 127.0.0.2
gtpc:
- addr: 127.0.0.2
gummei:
plmn_id:
mcc: 440
mnc: 19
mme_gid: 2
mme_code: 1
tai:
plmn_id:
mcc: 440
mnc: 19
tac: 1
security:
integrity_order : [ EIA2, EIA1, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
mme_name: open5gs-mme0
mmeとsgwのデーモン再起動
kaneb1a@beelinkk01a:/etc/open5gs$ sudo systemctl restart open5gs-mmed
kaneb1a@beelinkk01a:/etc/open5gs$ sudo systemctl restart open5gs-sgwud
4.1.1. PLMN補足
参考文献:IoT時代の電気通信番号を巡る現状等について 総務省
https://www.soumu.go.jp/main_content/000592370.pdf
PLMN-ID = MCC(Mobile Countory Code) + MNC (Mobile Network cord)
4.1.2. TAC補足
参考文献
・IMSIの利用に関する課題について
https://www.soumu.go.jp/main_content/000458410.pdf
・3GPP TS23.003
www.arib.or.jp/english/html/overview/doc/STD-T63v11_00/5_Appendix/Rel12/23/23003-c60.p
TAC(TrackingAreaCode) エリアの識別:各事業者で割り当てるものっぽい
4.2. Setup a 5G Core
AMFのmcc/mncを変更。
→せっかくなので、日本の番号にしてみる 国コード:440 事業者コード:19
amf:
sbi:
- addr: 127.0.0.5
port: 7777
ngap:
- addr: 127.0.0.5
guami:
- plmn_id:
mcc: 440
mnc: 19
amf_id:
region: 2
set: 1
tai:
- plmn_id:
mcc: 440
mnc: 19
tac: 1
plmn_support:
- plmn_id:
mcc: 440
mnc: 19
s_nssai:
- sst: 1
security:
integrity_order : [ NIA2, NIA1, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
AMFデーモンを再起動
$ sudo systemctl restart open5gs-amfd
4.3. Register Subscriber Information
http://localhost:3000
// Xwindowsを入れてミニPCでlocal hostを叩けWebUIにアクセスできるのですが
// グラフィックのドライバのインストールに失敗し解像度が800 x 600で固定されて見にくい
// メインPCから:3000に接続できない。
が、local hostのWeb UIを使います。IMSI,K,OPcを設定
・International Mobile Subscriber Identity(IMSI)
440191234567801
MCC:440
MNC:19
MSIN(Mobile Subscription Identification Number)ユーザID?10桁:1234567801
補足:MCC:日本 MNC:適当 MNC:適当、
・Subscriber Key(K):
・Operator Key(OPc)
・Authentication Managemnt Field(AMF): 8000 (デフォルト)
IMSとSubscriber Keyと OPcについては下記参照
https://qiita.com/m0ch1m0ch1/items/4c04d4ebb954ca29de97
4.3.1. IMSI, K, OPc
3GPP TS 23.003 Rel 17 3G Security; Security architecture
3.2. Symbols
K Long-term secret key shared between the USIM and the AuC
6.3 Authentication and key agreement
Figure 5: Authentication and key agreement