实验工具
工具 | 用途 | 备注 |
---|---|---|
服务器 | OAI 5G CN | V1.4.0版本,启动basic核心网 |
– | – | |
台式主机 | ueransim 仿真gnb与ue | ueransim3.2.6 |
1.核心网搭建
2.ueransim gnb搭建
3.ueransim ue搭建
4.环境配置
4.1网络连接
4.2gnb配置
4.3ue 配置
4.4其他配置
5.启动流程
6.功能测试
7.目前问题改进措施
8.问题发现解决与一些debug过程
9.相关知识笔记
4.环境配置
4.1 网络连接
1.使用网线连接服务器en04口与主机enp2s0口,使服务器与主机互相可以ping通(该设置只需配置一次)
设置服务器en04口与主机enp2s0口都为静态IP:
https://blog.csdn.net/qq1187239259/article/details/80022272
https://www.cnblogs.com/ubuntuanzhuang/p/13131138.html
cd /etc/netplan #进入配置文件路径
sudo vim 01-network-manager-all.yaml #打开配置文件
ip地址随意,只要网段相同(注:网段不可与外网网段相同)
服务器配置:
eno2为与主机相连的网口
主机配置:
nameservers即DNS,决定了ue能否解析网站域名
可以看到两者处于同一网段
测试:
2.主机网络转发配置
在服务器与主机可以ping通后,设置将从主机中传出的数据传给核心网
ip route add 192.168.70.128/26 via 192.168.2.10 dev enp2s0
192.168.70.128/26 // 核心网通过docker创建网桥地址
192.168.2.10 // 核心网机器网口地址
enp2s0 //gnb网络端口名字 ifconfig查询
完成后可以ping核心网docker(核心网已启动)的ip确认 如192.168.70.129
3.服务器核心网上网配置
服务器en04网口是与外网连接的网口,为使核心网与外网接通,需要进行一些配置
在服务器上进行如下配置:
OAI官网所需基本配置
sudo sysctl net.ipv4.conf.all.forwarding=1 #启动路由转发功能
sudo iptables -P FORWARD ACCEPT
上网所需配置
sudo sysctl -w net.ipv4.forward=1 //临时改变 net.ipv4.forward的值为1
sudo iptables -t nat -A POSTROUTING -o en04 -j MASQUERADE //-o后匹配出栈网口,所以应该是连接外网的网口
sudo systemctl stop ufw //关闭防火墙
sudo iptables -I FORWARD 1 -j ACCEPT -I 插入防火墙规则 FORWARD 与Linux本机没有关系,它可以传递数据包到后端计算机中
4.服务器上网优先级配置
服务器有俩个四个网口,我们使用到两个网口,en04用来连接外网上网,为dhcp动态连接,外网分配的网段是192.168.2.X。en02用来拦截gnb,设置为静态ip,使用ip 192.168.12.3。
- 之所以设置两者为不同网段是因为,linux中设置两个网卡在同一网卡时将实际只有一个网卡被使用,另一个网卡无用,将出现只能上网而ping不通gnb或能ping通gnb但上不了网的情况。
Linux双网卡设置IP属于同一网段的ping方法以及现象记录分析
2.网络优先级变化问题
在ue能够成功上网后,有时会出现断网情况,发现是网络优先级发生了改变:
route -n #查看ip路由表
可以看到,eno2在前面,数据会传到gnb网口中,自然无法上网了,需要将eno4设在前面
sudo route del default gw 192.168.12.1 eno2
sudo route add default gw 192.168.12.1 dev eno2 metric 200 #设置跃点高优先级靠后
sudo route del default gw 192.168.2.1 eno4
sudo route add default gw 192.168.2.1 dev eno4 metric 101
设置完eno4在前面了,此时服务器可以正常上网了
5.以防万一,主机关掉防火墙
sudo systemctl stop ufw //关闭防火墙
4.2gnb配置
gnb配置参照OAI官网中对 ueransim容器中的配置(后续版本更新可能更改)
https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docker-compose/docker-compose-ueransim-vpp.yaml
# GNB Congig Parameters
- MCC=208
- MNC=95
- NCI=0x000000010
- TAC=0xa000
- LINK_IP=127.0.0.1 #此处有更改,是ue接入基站的ip
- NGAP_IP=192.168.70.141
- GTP_IP=192.168.72.141
- NGAP_PEER_IP=192.168.70.132
- SST=222
- SD=123
- IGNORE_STREAM_IDS=true
4.3ue配置
ue配置参照OAI官网中对 ueransim容器中的配置(后续版本更新可能更改)
https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docker-compose/docker-compose-ueransim-vpp.yaml
# UE Config Parameters
- NUMBER_OF_UE=1
- IMSI=208950000000031
- KEY=0C0A34601D4F07677303652C0462535B
- OP=63bfa50ee6523365ff14c1f45f88737d
- OP_TYPE=OPC
- AMF_VALUE=8000
- IMEI=356938035643803
- IMEI_SV=0035609204079514
- GNB_IP_ADDRESS=127.0.0.1 #此处有更改
- PDU_TYPE=IPv4
- APN=default
- SST_0=222
- SD_0=123
- SST_C=222
- SD_C=123
- SST_D=222
- SD_D=123
4.4其他配置
5.启动流程
1.启动核心网:
sudo sysctl net.ipv4.conf.all.forwarding=1 #启动路由转发功能
sudo iptables -P FORWARD ACCEPT
python3 core-network.py --help #查看启动命令帮助
python3 core-network.py --type start-basic #启动基础版核心网
2.测试服务器与主机可以互相ping通
3.设置主机路由转发
ip route add 192.168.70.128/26 via 192.168.2.10 dev enp2s0
测试主机可以ping到核心网:
4.启动gnb
build/nr-gnb -c config/open5gs-gnb.yaml
5.启动UE
注意需要在sudo条件下启动
sudo build/nr-ue -c config/open5gs-ue.yaml
最下面一行可以看见创建的 uesimtun0 网口,我们就是使用该网口进行数据传输
6.ue上网所需临时配置
服务器端配置:
sudo sysctl -w net.ipv4.forward=1
sudo iptables -t nat -A POSTROUTING -o en04 -j MASQUERADE //eno4
sudo systemctl stop ufw
sudo iptables -I FORWARD 1 -j ACCEPT
ue端配置:
sudo systemctl stop ufw
6.功能测试
- 通过uesimtun0 ping通百度
ping -I uesimtun0 14.215.177.38
2.通过curl浏览网页
sudo curl --interface uesimtun0 14.215.177.38
3.通过nr-binder 工具打开火狐并上网
首先要将nr-binder工具权限更改为可用
chmod +x nr-binder
使用nr-binder 绑定uesimtun0启动火狐:
sudo ./nr-binder 12.1.1.2 firefox
在火狐中输入百度域名14.215.177.38可以上网,如果不通过此方法而是直接打开firefox是无法上网的,可以验证ue通过核心网进行了网页浏览
可以打开网页传输工具传输数据:
比如使用奶牛快传传输了一张图片,在其他设备下打开链接都可以下载该图片
7.发现问题与改进措施
1.eno4 和eno2 优先级如何固定,使eno4在前,不会发生因为优先级的断网问题
2.只能通过ip地址访问网站但无法通过域名
比如ping百度会失败,ping域名14.215.177.38能成功
ping -I uesimtun0 www.baidu.com
3.虽然可以上网,但ue是无法ping通上网网口eno4的,具体原因不清楚
4.ue无法在浏览器上观看视频
5.一些需要每次手动进行的配置能否自动默认配置
8.问题发现解决与一些debug过程
8.1通过wireshark抓包判断通讯情况
1.必须在命令行里sudo 启动wireshark才能正常工作
sudo wireshark
通过限定ip地址抓包,可以基本判断是否有某个ip的数据,以及是否发送错误等
2.不可以设置服务器上网网段与 核心网同gnb通信网口网段一样
详见4.1-4
9.相关知识笔记
1.常用链接
https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed #OAI
https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docs/DEPLOY_HOME.md #OAI部署
https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docker-compose/docker-compose-ueransim-vpp.yaml #OAI 上 ueransim的配置
https://github.com/aligungr/UERANSIM #ueransim