OAI 5Gcn + ueransim 初稿【1】

实验工具

工具用途备注
服务器OAI 5G CNV1.4.0版本,启动basic核心网
台式主机ueransim 仿真gnb与ueueransim3.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    #进入配置文件路径

修改静态ip

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。

  1. 之所以设置两者为不同网段是因为,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.功能测试

  1. 通过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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月早十

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值