安裝與測試 free5GC 核心網路

此示範我們將練習:

請注意下面的安裝流程是參考 free5GC 官網文件

未來 free5GC 若有版本更新而導致部分指令無法運作,請以官網資訊為準。

1. 確定系統版本

先用 uname -r 確定 kernel 版本。若安裝 Ubuntu 20.04, 版本應為 5.4.x

$ uname -r
5.4.0-65-generic

請確認你的版本為5.0.0-23-generic5.4.0 以後版本。

2. 安裝基本工具

確定沒有安裝 go

go version

若有安裝舊版本,請先刪除 (假設你的 go 是安裝在 /usr/local/go):

sudo rm -rf /usr/local/go

要安裝最新 Golang, 網路搜尋 ubunto golan install,會得到網址: Download and install

瀏覽至該網址,請選擇 Linux, 然後得到 “Download Go for Linux” 框框的 下載連結 (可在框框裡按滑鼠右鍵,複製連結網址)。網址像

https://golang.org/dl/go1.15.7.linux-amd64.tar.gz

有了上述檔案下載網址,安裝步驟如下:

cd ~
wget https://golang.org/dl/go1.15.7.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.15.7.linux-amd64.tar.gz

直接貼上下面指令:

mkdir -p ~/go/{bin,pkg,src}
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

看 golang 有無下載成功:

go version

接著安裝 MongoDb, 直接貼上:

sudo apt -y update
sudo apt -y install mongodb
sudo systemctl start mongodb

接著安裝其他開發工具, 貼上:

sudo apt -y install git gcc g++ cmake autoconf libtool pkg-config libmnl-dev libyaml-dev
go get -u github.com/sirupsen/logrus

參考影片 安裝基本工具

3. 設定網路規則

設定網路,貼上:

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
sudo systemctl stop ufw

注意: 上面 enp0s3 為核網連到 Data Network (Internet) 的介面, 可以由 ifconfigroute 得到。若你的介面名稱不同,請記得改。 另外注意這些網路設定在重新開機後會消失,每次開機後要記得重做。

參考影片 設定網路規則

4. 安裝 free5GC 核心網路

我們直接安裝 3.0.5 版及最新的更新:

cd ~
git clone --recursive https://github.com/free5gc/free5gc.git

接著編譯 free5GC:

cd ~/free5gc
make

安裝 gtp5g

cd ~
git clone https://github.com/free5gc/gtp5g.git
cd gtp5g
make
sudo make install

並檢查 gtp5g 是否安裝成功:

lsmod | grep gtp

參考影片 安裝 free5GC

5. 測試 free5GC

free5GC 提供了一些測試程式,測試一些 5G 核網標準的功能。 先測試基本的 註冊程序:

cd ~/free5gc
./test.sh TestRegistration

若最後有 PASS 字眼出現則安裝成功! 請繼續一一執行下列測試:

./test.sh TestRegistration

./test.sh TestGUTIRegistration

./test.sh TestServiceRequest

./test.sh TestXnHandover

./test.sh TestDeregistration

./test.sh TestPDUSessionReleaseRequest

./test.sh TestPaging

./test.sh TestN2Handover

./test.sh TestNon3GPP

./test.sh TestReSynchronisation

./test_ulcl.sh -om 3 TestRegistration

參考影片 測試 free5GC