用 Free5GC 和 UERANSIM 建立一套 5G 行動網路環境
這一篇文章會使用開源 5G 核心網路 Free5GC 及開源 5G 終端及基地臺模擬器 UERANSIM 建立一套完整的 5G 行動網路,建立完成後,我們也可以測試一下連網能力。
章節
環境需求
Free5GC 官方建議採用 Ubuntu 18.04 作為實驗環境,其他 OS 不一定能編譯成功,也可能會碰到預期外的 bug。並且由於需要編譯 gtp5g kernel module,在下文有建議使用的核心版本。
升級 Kernel 版本
可以先用 uname -r
來確認核心的版本,核心版本需求為 5.0.0-23
或 5.4 以上
的版本,其他 distribution kernel 可能會沒辦法編譯 gtp5g kernel module。
1 | sudo su - |
grub 預設行為抓取最新版本的 kernel,所以如果是降級的話,記得把新版的 kernel 移除掉。然後以新安裝的 Kernel 重新開機。
安裝編譯 Free5GC 與 UERANSIM 所需的套件
接下來需要安裝編譯用的工具和 dependencies,以及 Go 語言。
1 | sudo apt update |
安裝好之後,為了讓後續 UPF 能夠把封包 forward 出去,我們必須手動 config networking 和 iptables。
1 | sudo sysctl -w net.ipv4.ip_forward=1 |
最後是編譯 gtp5g 的 Linux Kernel
1 | git clone https://github.com/PrinzOwO/gtp5g.git |
編譯 Free5GC 與 UERANSIM
1 | # Compile Free5GC |
1 | # Compile UERANSIM |
設定執行核心網路和執行模擬器
啟動 Free5GC 核心網路與 WebUI
1
2
3
4
5
6
7# Use 2 terminals to run separate commands
# Free5GC core networks
./run.sh
# Free5GC web console, access the WebUI by localhost:5000
cd webconsole
go run server修改 UERANSIM 的
config/profile.yaml
中選擇的 profile 為free5gc
1
2
3
4
5
6
7# Default possible profiles are:
# - custom
# - open5gs
# - free5gc
# - havelsan
# You can also create unlimited number of custom profiles by creating a folder for them.
selected-profile: 'free5gc'連入 Free5GC 的頁面新增一個 subscriber,認證模式選擇
OP
,UERANSIM 目前預設使用這種模式。啟動 UERANSIM 並選擇
pdu-session-establishment
當看到 “Ping reply from google.com” 就是成功 ping 通了。
實驗環境要搭建其實很簡單,在 UERANSIM 也有教學怎麼操作 interface 並透過這個 interface 來上網,你也可以透過 tcpdump 或 wireshark 來觀察到 GTP-U 的 tunnel packets。
用 Free5GC 和 UERANSIM 建立一套 5G 行動網路環境