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

组网图

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

部署框架图

Q&A

编译时访问go代理超时

  • 查看go安装过程中是否配置了go代理为直接访问方式
    在这里插入图片描述

mongodb启动失败

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

在这里插入图片描述

  • 查看启动结果
pgrep mongo -l

在这里插入图片描述

安装gtp5g失败

  • 提示权限不足
    在这里插入图片描述
  • 麒麟系统安全中心,关掉不需要的安全控制选项
    在这里插入图片描述

编译upf报错

  • 下载upf代码为go代码,目录前面带了go-upf
  • upf代码在free5gc的新版本中由c代码改为了go代码
    在这里插入图片描述
  • 将go-upf修改为upf
    在这里插入图片描述

运行free5GC测试脚本gtp5g报错

  • 提示版本gtp5g版本不匹配
    在这里插入图片描述
  • 卸载并安装对应的版本即可

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

  • 运行nrf网元提示nrf配置文件版本不匹配
    在这里插入图片描述
  • 修改nrf配置文件,文件目录~/free5gc/config/nrfcfg.yaml
    在这里插入图片描述

编译webconsole报错

node版本低

在这里插入图片描述

升级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需要的最小资源

SoftwareVersion
内核5.4.18-53-generic
OSKylin V10 SP1
gccgcc version 9.3.0 (Ubuntu 9.3.0-10kylin2)
go1.15.7 or later
mongodb4.4

硬件

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

HardwareVersion
CPUPhytium,D2000/8 E8C
RAM16G
Hard drive512G
NIC2*1Gbps Ethernet card supported in the Linux kernel

工具安装

安装go

go官网

下载安装

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

在这里插入图片描述

配置环境变量

  • 编辑/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 

在这里插入图片描述

添加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

官网下载

下载mongodb4.4

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

在这里插入图片描述

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

在这里插入图片描述

配置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

在这里插入图片描述

  • upf编译报错
    在这里插入图片描述
  • 进入NFs目录将go-upf改为upf,即可
    在这里插入图片描述

测试脚本测试

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

在这里插入图片描述

运行free5GC

单个网元运行

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

脚本启动所有网元

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

测试webconsole

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

在这里插入图片描述

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

在这里插入图片描述

  • 登录用户名 admin 密码 free5gc
  • 配置增加UE用户数据
  • 在这里插入图片描述

安装UERANSIM

UERANSIM链接

下载UERANSIM源码

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

在这里插入图片描述

安装依赖工具

  • 不要使用 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
    在这里插入图片描述
  • 刷新配置文件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
    在这里插入图片描述

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

amf配置文件修改
  • 文件路径~/free5gc/config/amfcfg.yam
  • 修改N2接口地址,修改为本机IP192.168.1.121
    在这里插入图片描述
smf配置文件修改
  • 文件路径~/free5gc/config/smfcfg.yaml
  • 配置给UPFN3/N9的地址,修改为本机IP192.168.1.121
    在这里插入图片描述
upf配置文件修改
  • 文件路径~/free5gc/NFs/upf/build/config/upfcfg.yaml
  • 修改UPF的N3接口地址为free5gc本机IP192.168.1.121
    在这里插入图片描述
配置网络环境
  • 该步骤在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
    在这里插入图片描述
UE配置文件查看
  • 文件路径~/UERANSIM/config/myfree5gc-ue.yaml
运行基站
  • 基站需要和free5gc建立链接,确保free5gc已经成功启动
  • ~/UERANSIM下执行命令
cd ~/UERANSIM
./build/nr-gnb -c config/myfree5gc-gnb.yaml

在这里插入图片描述

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

在这里插入图片描述

  • 测试UE的是否可访问DNping -I uesimtun0 baidu.com
    在这里插入图片描述
    至此通过UERANSIM+free5gc的部署完成,且成功运行。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值