0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ローカル5G】 free5GCとリアルgNBでiPhone接続を試す。②

Last updated at Posted at 2024-09-12

※本記事は2024年9月9日時点の内容です。
この記事は私がfree5GCとリアルgNB(ローカル5G用小型基地局= Small Cell)を使ってiPhone接続を試す機会があり、その過程をまとめたものです。
free5GCのインストールについては基本的には全てfree5GCプロジェクトのWEBサイトを参考に進めました。

インストールしたバージョンは以下の通りです。
OS :  Ubuntu 20.04.6 LTS
Linux Kernerl : 5.4.0-193-generic
free5GC : v3.4.2


過去記事はこちら
① Ubuntuインストール編



free5GCインストール

A. 前提条件

1. Linux Kernel Versionの確認

free5GC WEBサイトには「UPFエレメントを使用する為にはLinuxカーネルの5.0.0-23-genericまたは5.4.xバージョンを使用する必要があります。」とありましたので uname -r コマンドでバージョン確認。

2. Go言語インストール

free5GC WEBサイトの指示に従って、バージョン1.21.8をインストールしました。
私の場合はGo言語はインストールされていませんでしたので、以下コマンドでGo言語をインストールしました。

go言語インストール
wget https://dl.google.com/go/go1.21.8.linux-amd64.tar.gz
sudo tar -C /usr/local -zxvf go1.21.8.linux-amd64.tar.gz
mkdir -p ~/go/{bin,pkg,src}
# The following assume that your shell is bash:
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin:$GOROOT/bin' >> ~/.bashrc
echo 'export GO111MODULE=auto' >> ~/.bashrc
source ~/.bashrc

インストール後にバージョン確認
root@free5gc:~# go version
go version go1.21.8 linux/amd64

3. C-Plane Supporting Packagesインストール

まずはupdate、wgetとgitのインストールを実行。

sudo apt -y update
sudo apt -y install wget git

CPUがAVXをサポートしているか確認。"avx"が表示されればOKかと。

lscpu | grep avx

MongoDB Community Editionのインストール

a. パッケージマネージメントシステムが使用する公開鍵のインポート

sudo apt install -y gnupg curl
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

b. MongoDB用リストファイル作成(Ubuntu 20.04用)
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

c. ローカルパッケージデータベースをリロードとMongoDBパッケージのインストール
sudo apt update
sudo apt install -y mongodb-org

d. MongoDB Community Edition実行とステータス確認
 #MongoDB実行 
sudo systemctl start mongod

 #ステータス確認 
sudo systemctl status mongod

確認結果: active(running)になっている事を確認。
スクリーンショット 2024-09-10 115139.png


4. U-Plane Supporting Packagesインストール

sudo apt -y update
sudo apt -y install git gcc g++ cmake autoconf libtool pkg-config libmnl-dev libyaml-dev



5. Linuxホストのネットワーク設定

コマンド2行目の <dn_interface> 部分はインターフェース名を入れます。
インターフェース名は ifconfig や ip a などで確認します。

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o <dn_interface> -j MASQUERADE
sudo iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400
sudo systemctl stop ufw
sudo systemctl disable ufw # prevents the firewall to wake up after a OS reboot

(例) インターフェース名が "enp0s31f6"の場合
sudo iptables -t nat -A POSTROUTING -o enp0s31f6 -j MASQUERADE

B. C-Planeエレメントインストール

1. free5GCリポジトリをクローン

v3.4.2をインストール
※free5GC WEBによるとv3.4.2が最新安定版との事。

cd ~
git clone --recursive -b v3.4.2 -j `nproc` https://github.com/free5gc/free5gc.git

2. ネットワーク機能サービスのコンパイル

cd ~/free5gc
make



C. U-Plane機能インストール(UPF)

1. Linux Kernel Versionの確認

UPFが使用するGTPカーネルモジュールには、Linuxカーネルバージョン5.0.0-23-genericまたは5.4.xが必要との事。
私が使ったバージョンは既に何回も確認されているように「5.4.0-193-generic」です。

2. 5G GTP-U kernelモジュールビルド

git clone -b v0.8.10 https://github.com/free5gc/gtp5g.git
cd gtp5g
make
sudo make install

D. Web Console インストール

1. nodejsインストール

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - 
sudo apt update
sudo apt install -y nodejs
corepack enable # setup yarn automatically

2. Web Consoleビルド

cd ~/free5gc
make webconsole

マニュアルビルドの場合はこちらのコマンドを実行。

cd ~/free5gc/webconsole/frontend
yarn install
yarn build
rm -rf ../public
cp -R build ../public
cd ..
go build -o bin/webconsole server.go

E. 動作テスト

これでインストールが完了したので一度テストしておきます。
テスト開始前に以下コマンドを実行。

cd ~/free5gc
make upf
chmod +x ./test.sh

私の場合は2行目の「make upf」が何度やってもうまく行きませんでしたが無視して進めました。これまでのところ特に問題は発生してません。

a. Registrationテスト

cd ~/free5gc
./test.sh TestRegistration

実行するとログが流れてややしばらくしてテスト結果が表示されました。

テスト結果
--- PASS: TestRegistration (3.25s)
PASS
ok  test6.094s

PASSになればOK。
FAILの場合にはエラー部分を確認して対応が必要ですが、何かが正しくインストールされていない場合やサービスが正しく起動していない場合がほとんどだと思います。
私の場合はupdateやupgradeがうまくできていなかったり、MongoDBのサービスが停止していたりで何度か失敗しました。
エラー箇所は流れるログの中で [ERRO] で表示されます。


同じように他の機能もテストを進めます。

b. GUTIRegistrationテスト

./test.sh TestGUTIRegistration

c. ServiceRequestテスト

./test.sh TestServiceRequest

d. 他機能のテスト

その他機能テストについてはfree5GC WEBを参照ください。


free5GCインストールについてはこれにて終了。

次回記事ではfree5GCのconfig編集過程についてまとめようと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?