飞腾-麒麟-ARM-5GC-UERANSIM

飞腾麒麟系统部署free5GC目录

  • 组网图
  • Q&A
    • 编译时访问go代理超时
    • mongodb启动失败
    • 安装gtp5g失败
    • 编译upf报错
    • 运行free5GC测试脚本gtp5g报错
    • 运行网元提示配置文件版本不匹配
    • 编译webconsole报错
      • node版本低
      • 升级node版本
  • 环境要求
    • 软件
    • 硬件
  • 工具安装
    • 安装go
      • go官网
      • 下载安装
      • 配置环境变量
      • 下载镜像库
      • 添加go代理
      • 测试安装结果
    • 安装mongodb
      • 官网下载
      • 下载mongodb4.4
      • 配置mongodb环境
      • 测试安装结果
    • 安装gtp5g
      • 安装
      • 卸载
  • free5GC部署
    • 配置网络环境
    • 源码下载
    • 源码编译
    • 测试脚本测试
    • 运行free5GC
      • 单个网元运行
      • 脚本启动所有网元
  • free5GC测试
    • 安装WebConsole
      • 卸载旧工具
      • 安装node.js和Yarn
      • 编译webconsole
      • 测试webconsole
    • 安装UERANSIM
      • 下载UERANSIM源码
      • 安装依赖工具
      • 编译UERANSIM
      • 配置和应用
    • UERANSIM+Free5GC测试
      • 测试环境框图
      • 修改free5gc配置文件并启动5gc
        • amf配置文件修改
        • smf配置文件修改
        • upf配置文件修改
        • 配置网络环境
        • 启动free5GC
      • 修改UERANSIM配置文件并启动UE和RAN
        • 基站配置文件修改
        • UE配置文件查看
        • 运行基站
        • 运行UE

组网图

本次部署用到了两块飞腾的开发板,一块开发板用于跑free5GC,一块开发板用于跑UERANSIM,当然也可以用一块开发板进行操作。下图红色框部分运行在DT_D2008_2103-1开发板上,黄色部分运行在DT_2008_2103-2开发板上面。
欢迎多多交流共同学习进步!

飞腾-麒麟-ARM-5GC-UERANSIM_第1张图片

Q&A

编译时访问go代理超时

  • 查看go安装过程中是否配置了go代理为直接访问方式
    飞腾-麒麟-ARM-5GC-UERANSIM_第2张图片

mongodb启动失败

  • 删除配置mongo环境两个目录中的所有文件
  • 进行mongodb 修复
  • 重新启动
rm -rf /var/lib/mongo/*
rm -rf /var/log/mongo/*
mongod --repair

飞腾-麒麟-ARM-5GC-UERANSIM_第3张图片

  • 查看启动结果
pgrep mongo -l

飞腾-麒麟-ARM-5GC-UERANSIM_第4张图片

安装gtp5g失败

  • 提示权限不足
    飞腾-麒麟-ARM-5GC-UERANSIM_第5张图片
  • 麒麟系统安全中心,关掉不需要的安全控制选项
    飞腾-麒麟-ARM-5GC-UERANSIM_第6张图片

编译upf报错

  • 下载upf代码为go代码,目录前面带了go-upf
  • upf代码在free5gc的新版本中由c代码改为了go代码
    在这里插入图片描述
  • 将go-upf修改为upf
    飞腾-麒麟-ARM-5GC-UERANSIM_第7张图片

运行free5GC测试脚本gtp5g报错

  • 提示版本gtp5g版本不匹配
    飞腾-麒麟-ARM-5GC-UERANSIM_第8张图片
  • 卸载并安装对应的版本即可

运行网元提示配置文件版本不匹配

  • 运行nrf网元提示nrf配置文件版本不匹配
    在这里插入图片描述
  • 修改nrf配置文件,文件目录~/free5gc/config/nrfcfg.yaml
    飞腾-麒麟-ARM-5GC-UERANSIM_第9张图片

编译webconsole报错

node版本低

飞腾-麒麟-ARM-5GC-UERANSIM_第10张图片

升级node版本

  • 查看当前版本
node -v
  • 清楚node缓存
sudo npm cache clean -f
  • 如果没有npm工具,安装npm工具
sudo apt-get install npm
  • 安装node版本管理工具
sudo npm install n -g
  • 升级node到最新版本
sudo n stable

环境要求

软件

此处所列为当前我使用的开发板软件资源,详细的要求可查看free5gc需要的最小资源

Software Version
内核 5.4.18-53-generic
OS Kylin V10 SP1
gcc gcc version 9.3.0 (Ubuntu 9.3.0-10kylin2)
go 1.15.7 or later
mongodb 4.4

硬件

此处所列为当前我使用的开发板硬件资源,详细的要求可查看free5gc需要的最小资源

Hardware Version
CPU Phytium,D2000/8 E8C
RAM 16G
Hard drive 512G
NIC 2*1Gbps Ethernet card supported in the Linux kernel

工具安装

安装go

go官网

  • golan官网

下载安装

sudo  wget https://golang.google.cn/dl/go1.15.7.linux-arm64.tar.gz

飞腾-麒麟-ARM-5GC-UERANSIM_第11张图片

配置环境变量

  • 编辑/etc/profile,在最后加速go的环境变量配置
export GOROOT=/usr/local/go/
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

在这里插入图片描述

下载镜像库

  • golang github上建立了一个镜像库,下载github上的镜像库放入GOPATH下
  • 编译free5gc源码时用到的go的依赖库会到本机该目录下查找
mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https:/github.com/golang/sync.git
git clone https://github.com/golang/crypto.git
git clone https://github.com/golang/sys.git 

飞腾-麒麟-ARM-5GC-UERANSIM_第12张图片

添加go代理

  • 解决编译时不能访问go代理
go env -w GOPROXY=https://goproxy.cn,direct

测试安装结果

  • 查看安装go版本
go version

在这里插入图片描述

  • 编写测试程序 gohelloworld.go
vim gohelloworld.go
package main
import (
    "fmt"
)

func main(){
    fmt.Printf("hello world\n")
}
  • 构建gohelloworld.go
go build gohelloworld.go
  • 会在当前目录生成gohelloworld的可执行程序
    在这里插入图片描述
  • 运行gohelloworld测试
./gohelloworld

在这里插入图片描述

安装mongodb

官网下载

  • mongodb官网
    飞腾-麒麟-ARM-5GC-UERANSIM_第13张图片

下载mongodb4.4

wget https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2004-4.4.18.tgz

飞腾-麒麟-ARM-5GC-UERANSIM_第14张图片

tar -zxvf mongodb-linux-aarch64-ubuntu2004-4.4.18.tgz

飞腾-麒麟-ARM-5GC-UERANSIM_第15张图片

配置mongodb环境

  • 将mongodb拷贝到系统环境变量目录
cp mongodb-linux-aarch64-ubuntu2004-4.4.18/bin/* /usr/local/bin/

在这里插入图片描述

  • 创建示例存储目录和log目录
sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongo

在这里插入图片描述

测试安装结果

  • 启动mongod
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork
ps -ef | grep mongodb

在这里插入图片描述

安装gtp5g

安装

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

卸载

sudo make uninstall

free5GC部署

配置网络环境

  • 更新环境库和工具
sudo apt -y update
sudo apt -y install git gcc g++ cmake autoconf libtool pkg-config libmnl-dev libyaml-dev
  • 配置路由和包过滤转发规则关防火墙
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

源码下载

  • 克隆github上的free5GC源码
    cd ~
    git clone --recursive -b v3.2.1 -j `nproc` https://github.com/free5gc/free5gc.git
    cd free5gc
  • 各个网元子模块下载失败,free5GC中NFs目录各个网元目录为空,手动再次下载
# 删除空文件夹
rm -rf ~/free5gc/NFs/*
# 切换到NFs目录下
cd ~/free5gc/NFs
# 重新手动git
git clone https://github.com/free5gc/amf.git
git clone https://github.com/free5gc/smf.git
git clone https://github.com/free5gc/pcf.git
git clone -b v1.1.1 -j `nproc` https://github.com/free5gc/ausf.git
git clone https://github.com/free5gc/nssf.git
git clone -b v1.1.1 -j `nproc` https://github.com/free5gc/nrf.git
git clone https://github.com/free5gc/udm.git
git clone https://github.com/free5gc/udr.git
git clone https://github.com/free5gc/go-upf.git
git clone https://github.com/free5gc/n3iwf.git

cd ~/free5gc
rm -rf ~/free5gc/webconsole  # webconsole 文件夹也为空,和处理一样,重新手动git webconsole文件
git clone https://github.com/free5gc/webconsole.git

源码编译

  • 进入free5GC目录编译
cd ~/free5gc
make

飞腾-麒麟-ARM-5GC-UERANSIM_第16张图片

  • upf编译报错
    在这里插入图片描述
  • 进入NFs目录将go-upf改为upf,即可
    飞腾-麒麟-ARM-5GC-UERANSIM_第17张图片

测试脚本测试

  • free5GC提供了测试脚本,可运行脚本测试不同的功能
  • 简单测试注册功能,会打印一些log信息,并且没报错即可
cd ~/free5gc
./test.sh TestRegistration

飞腾-麒麟-ARM-5GC-UERANSIM_第18张图片

运行free5GC

单个网元运行

  • 运行nrf为示例
cd ~/free5gc
./bin/nrf
  • 单个网元启动,启动顺序要求
    NRF > UDR > UDM > AUSF > NSSF > AMF > PCF > UPF > SMF > N3IWF

脚本启动所有网元

  • 执行run.sh
cd ~/free5gc
./run.sh

飞腾-麒麟-ARM-5GC-UERANSIM_第19张图片

  • 可打开另一终端查看网元进程
ps -ef

飞腾-麒麟-ARM-5GC-UERANSIM_第20张图片

free5GC测试

安装WebConsole

卸载旧工具

sudo apt remove cmdtest
sudo apt remove yarn

安装node.js和Yarn

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update
sudo apt-get install -y nodejs yarn

编译webconsole

cd ~/free5gc
make webconsole

飞腾-麒麟-ARM-5GC-UERANSIM_第21张图片

测试webconsole

  • 运行server.go服务
cd ~/free5gc/webconsole
go run server.go

在这里插入图片描述

  • 打开本机浏览器访问http://192.168.1.121:5000

飞腾-麒麟-ARM-5GC-UERANSIM_第22张图片

  • 登录用户名 admin 密码 free5gc
  • 配置增加UE用户数据

安装UERANSIM

UERANSIM链接

下载UERANSIM源码

git clone -b v3.2.6 https://github.com/aligungr/UERANSIM.git

飞腾-麒麟-ARM-5GC-UERANSIM_第23张图片

安装依赖工具

  • 不要使用 sudo apt-get install cmake,因为默安装安装的版本比较旧。用下面给的命令安装
  • make、gcc/g++、cmake再build UERANSIM时会用到,libsctp-dev,lksctp-tools,iproute2运行时会用到
  • 如果snap没有安装先安装snap,sudo apt install snap snapd
  • 将/snap/bin加入环境变量vim /etc/profile
    飞腾-麒麟-ARM-5GC-UERANSIM_第24张图片
  • 刷新配置文件source /etc/profile
  • 安装依赖工具命令
sudo apt install make
sudo apt install gcc
sudo apt install g++
sudo apt install libsctp-dev lksctp-tools
sudo apt install iproute2
sudo snap install cmake --classic

编译UERANSIM

  • 进入UERANSIM目录编译
cd ~/UERANSIM
make
  • 编译后会创建build目录
    在这里插入图片描述
  • libdevbnd.so 动态nr-binder库
  • nr-binder 用于UE访问网络的工具
  • nr-gnb 模拟5G基站
  • nr-ue 模拟5G UE
  • nr-cli CLI工具配置UE和gNB

配置和应用

  • 启动基站加载指定配置文件nr-gnb -c myconfig.yaml
  • 启动UE加载指定配置文件nr-ue -c myconfig.yaml
  • 启动10个UE 配置文件中的IMSI自增1 nr-ue -c myconfig.yaml -n 10
  • 启动10个UE 从指定的IMSI自增1 nr-ue -c myconfig.yaml -n 10 -i imsi-286010000000001
  • 通过CLI登录到UE或者基站 nr-cli node-namenr-cli imsi-001010000000001
  • 查看当前环境中的UE和基站nr-cli --dump
  • 登录到基站或者UE后可查看可使用的命令commands

UERANSIM+Free5GC测试

测试环境框图

  • 两台飞腾天乾EDU220F开发板
  • 运行free5gc的开发板DT_D2008_2103-1的IP为192.168.1.121
  • 运行ueransim的开发板DT_D2008_2103-2的IP为192.168.1.118
    飞腾-麒麟-ARM-5GC-UERANSIM_第25张图片

修改free5gc配置文件并启动5gc

amf配置文件修改
  • 文件路径~/free5gc/config/amfcfg.yam
  • 修改N2接口地址,修改为本机IP192.168.1.121
    在这里插入图片描述
smf配置文件修改
  • 文件路径~/free5gc/config/smfcfg.yaml
  • 配置给UPFN3/N9的地址,修改为本机IP192.168.1.121
    飞腾-麒麟-ARM-5GC-UERANSIM_第26张图片
upf配置文件修改
  • 文件路径~/free5gc/NFs/upf/build/config/upfcfg.yaml
  • 修改UPF的N3接口地址为free5gc本机IP192.168.1.121
    飞腾-麒麟-ARM-5GC-UERANSIM_第27张图片
配置网络环境
  • 该步骤在free5GC部署章节已经配置,但是这是临时配置,系统重启后会失效,为保证测试顺利可再次配置
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -I FORWARD 1 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o enaphyt4i0 -j MASQUERADE
sudo systemctl stop ufw

在这里插入图片描述

启动free5GC
  • 此处使用脚本全部启动
cd ~/free5gc
./run.sh

在这里插入图片描述

修改UERANSIM配置文件并启动UE和RAN

基站配置文件修改
  • 文件路径~/UERANSIM/config/myfree5gc-gnb.yaml
  • ngapIP为基站N2接口IP,配置为基站宿主机IP192.168.1.118
  • gtpIP为基站N3接口IP,配置为基站宿主机IP192.168.1.118
  • amfConfigs配置参数中的IP为AMF的N2接口IP,配置为free5gc宿主机IP192.168.1.121
    飞腾-麒麟-ARM-5GC-UERANSIM_第28张图片
UE配置文件查看
  • 文件路径~/UERANSIM/config/myfree5gc-ue.yaml
运行基站
  • 基站需要和free5gc建立链接,确保free5gc已经成功启动
  • ~/UERANSIM下执行命令
cd ~/UERANSIM
./build/nr-gnb -c config/myfree5gc-gnb.yaml

飞腾-麒麟-ARM-5GC-UERANSIM_第29张图片

运行UE
  • UE需要向基站附着,确保基站已经成功启动
  • ~/UERANSIM下执行命令
cd ~/UERANSIM
./build/nr-ue -c config/myfree5gc-ue.yaml

飞腾-麒麟-ARM-5GC-UERANSIM_第30张图片

  • 测试UE的是否可访问DNping -I uesimtun0 baidu.com
    飞腾-麒麟-ARM-5GC-UERANSIM_第31张图片
    至此通过UERANSIM+free5gc的部署完成,且成功运行。

你可能感兴趣的:(5G,5G,golang,bash,linux)