安裝與測試 free5GC 核心網路
此示範我們將練習:
- 安裝必需工具
- 安裝 free5GC
- 測試 free5GC
請注意下面的安裝流程是參考 free5GC 官網文件。
未來 free5GC 若有版本更新而導致部分指令無法運作,請以官網資訊為準。
1. 確定系統版本
先用 uname -r
確定 kernel 版本。若安裝 Ubuntu 20.04, 版本應為 5.4.x
。
$ uname -r
5.4.0-65-generic
請確認你的版本為5.0.0-23-generic
或 5.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) 的介面,
可以由 ifconfig
及 route
得到。若你的介面名稱不同,請記得改。
另外注意這些網路設定在重新開機後會消失,每次開機後要記得重做。
參考影片 設定網路規則
4. 安裝 free5GC 核心網路
我們直接安裝 3.2.0 版及最新的更新:
cd ~
git clone --recursive -b v3.2.0 -j `nproc` 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