【OpenAirInterface】分立部署核心网与容器化ueransim仿真基站

1.任务说明

有两台机器,服务器A与主机B,A与B通过网线直连,在A上部署OAI基础核心网,在B上部署docker 版ueransim,实现ueransim的成功接入。

我使用的服务器A与主机B上此前已下载部署过核心网与ueransim,此篇文章主要解决如何在两台机器上分立部署的问题。

在一台机器上进行部署的详细链接:基于Docker的UERANSIM多基站接入5GCN

2.部署前提

服务器A上在windows系统中安装了VM虚拟机,其上安装ubuntu18.04系统。下载部署成功了OAI核心网(版本v1.5.0)。

主机B上在windows系统中安装了VM虚拟机,其上安装ubuntu18.04系统。下载了OAI核心网(用于测试)与docker版 ueransim仿真基站,并测试可以成功接入。

3.部署过程

3.1网络配置

首先需要进行两台机器的网络配置,让两台机器可以互相ping通。

服务器A上网络配置如下:

将服务器的NIC4接口与虚拟机的VMnet4映射桥接起来,在虚拟机种选中使用VMnet4网络
在这里插入图片描述
在这里插入图片描述
对主机B进行相似操作
在这里插入图片描述
在这里插入图片描述
然后配置两个虚拟机使用到网络为静态IP,以使两机器能长期通信

#打开配置网络文件
sudo vim /etc/netplan/01-network-manager-all.yaml   

此为服务器A上配置
在这里插入图片描述
此为主机B上配置,两机器上保持网段在同一网段
在这里插入图片描述

#应用改网络设置
sudo netplan apply

然后测试两机器是否接通,通过互相ping的方式,可以互相ping通在这里插入图片描述

3.2核心网启动 (此为错误发现过程)

#核心网网络转发的配置
sudo sysctl net.ipv4.conf.all forwarding=1
sudo iptables -P FORWARD ACCEPT
#进入核心网启动文件夹
cd /oai-cn5g-fed/docker-compose
#启动核心网
docker-compose -f docker-compose-basic-vpp-nrf.yaml up -d

尝试启动核心网启动成功
在这里插入图片描述

在主机B上添加路由转发,转发到服务器A上的demo-oai网桥(错误的多余步骤,正确的路由转发见后文

#192.168.70.0来自于核心网启动的docker-compose.yaml文件里network下的设置
sudo ip route add 192.168.70.0/24 via 192.168.12.3 dev ens33
sudo ip route add 192.168.72.0/24 via 192.168.12.3 dev ens33

在主机B上测试是否可以ping到核心网,其中192.168.70.1是核心网demo-oai网桥,成功ping通,说明主机B可以与核心网进行通信
在这里插入图片描述

3.3启动容器化ueransim(此为错误发现与解决过程)

3.3.1直接启动问题发现

启动ueranism,发现无法启动,ueransim1的启动需要依托网络demo-oai-public-net,主机B上并没有创建这个网络,服务器A上启动OAI核心网后是创建了这个网络的。
很显然,这里涉及到了容器之间的跨机器工作问题,主机B上启动docker版ueransim依赖demo-oai-public-net网络,但主机B上的容器无法找到武器A上创建的网络,同时涉及到docker-compose网络配置的问题

在这里插入图片描述
下图分别为核心网docker-compose文件与ueransim的docke-compose文件中的网络配置
在这里插入图片描述

在这里插入图片描述

3.3.2问题解决

思路:修改ueransim的docker-compose文件,使其可以连接到服务器A上的核心网

先对docker-compose文件中各个参数的意义有所了解如:基于Docker的UERANSIM多基站接入5GCN
学习容器跨主机进行通信Docker容器跨主机通讯的几种方式

主要参考链接为:两种常用的跨主机Docker容器互通方法
跨主机容器通信

文章中将两台机器的docker0网桥连接起来,docker启动的时候会在主机上自动创建一个docker0网桥,实际上是一个Linux网桥,所有容器的启动如果在docker run的时候没有指定网络模式的情况下都会挂载到docker0网桥上。这样容器就可以和主机甚至是其他容器之间通讯了。我们使用的是自己创建的网桥demo-oai-public-net ,所以不是接通docker0,而是接通两个机器上的demo-oai-public-net。
在docker版ueransim的docker-compose.yaml文件里加入所需的网桥:

原来
在这里插入图片描述
现在:
之所以如此添加是因为启动的核心网是docker-compose-basic-nrf-vpp版本,此更改依据要接入的核心网版本进行对应的更改。
在这里插入图片描述
除此以外其他相关设置如:LINK_IP、 NGAP_IP、GTP_IP 、NGAP_PEER_IP、GNB_IP_ADDRESS也需进行相应更改

ueransim docker-compose.yaml文件更改后全文如下:

version: '3.8'
services:
#对名字进行了更改,避免重名
    ueransim33:
        container_name: ueransim33
        image: ueransim:latest
        privileged: true
        environment:
            # GNB Congig Parameters
            - MCC=208
            - MNC=95
            - NCI=0x000000010
            - TAC=0xa000
            #此三个ip网段对应本地创建的demo-oai的网段,最后141可更改,但此三个需相同
            - LINK_IP=192.168.60.141 
            - NGAP_IP=192.168.60.141
            - GTP_IP=192.168.62.141
            #此为核心网amf的接入ip
            - NGAP_PEER_IP=192.168.70.132
            - SST=222
            - SD=123
            - IGNORE_STREAM_IDS=true
            # UE Config Parameters
            - NUMBER_OF_UE=1
            - IMSI=208950000000031
            - KEY=0C0A34601D4F07677303652C0462535B
            - OP=63bfa50ee6523365ff14c1f45f88737d
            - OP_TYPE=OPC
            - AMF_VALUE=8000
            - IMEI=356938035643803
            - IMEI_SV=0035609204079514
            #此为ue接入gnb的ip,更改为LINK_IP
            - GNB_IP_ADDRESS=192.168.60.141
            - PDU_TYPE=IPv4
            - APN=default
            - SST_0=222
            - SD_0=123
            - SST_C=222
            - SD_C=123
            - SST_D=222
            - SD_D=123
        networks:
        #下面网络均更改与最下面的networks一致
            public_net:
                ipv4_address: 192.168.60.141
            public_net_access:
                ipv4_address: 192.168.62.141
        healthcheck:
            test: /bin/bash -c "ifconfig uesimtun0"
            interval: 10s
            timeout: 5s
            retries: 5
           #创建出与核心网同名网桥,但网段不同避免冲突
networks:
    public_net:
        driver: bridge
        name: demo-oai-public-net
        ipam:
            config:
                - subnet: 192.168.60.0/24
        driver_opts:
            com.docker.network.bridge.name: "demo-oai"
    public_net_access:
        name: oai-public-access
        ipam:
            config:
                - subnet: 192.168.62.0/24
        driver_opts:
            com.docker.network.bridge.name: "cn5g-access"

结构图如下:
在这里插入图片描述
将主机B上容器接入服务器A上demo-oai网桥,在主机B上添加如下路由:

sudo route add -net 192.168.70.0/24 gw 192.168.12.3
sudo route add -net 192.168.72.0/24 gw 192.168.12.3

在这里插入图片描述
将服务器A与主机B上demo-oai网桥接通,在服务器A上添加如下路由:

sudo route add -net 192.168.60.0/24 gw 192.168.12.33
sudo route add -net 192.168.62.0/24 gw 192.168.12.33

在这里插入图片描述

启动docker版 ueransim

docker-compose -f ueransim33.yaml up -d

在这里插入图片描述
查看ueransim日志:

docker ueransim33 logs

成功开启了uesimtun0,代表启动成功:
在这里插入图片描述

4.说明及纯享版开启流程

服务器A与主机B上添加的路由规则重启后会消失,所以每次都需重新添加

4.1开启流程纯享版

上面主要进行了几个工作 :

  1. 基础准备:两机器上核心网与ueransim的下载与部署测试;
  2. 两机器网线直连
  3. 两机器设置静态ip可以互相ping通
  4. 两机器设置路由转发以及ueransim的docker-compose.yaml文件修改,让主机B的ueransim容器数据可以传入服务器A的核心网网桥demo-oai里
  5. 启动核心网
  6. 启动基站

其中1、2、3以及4中yaml文件的修改是一劳永逸的,详情参照上文。其他步骤是每次开启都需重新操作的,如下:

服务器A设置路由转发:

sudo sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT
sudo route add -net 192.168.60.0/24 gw 192.168.12.33

主机B设置路由转发:

sudo route add -net 192.168.70.0/24 gw 192.168.12.3

服务器A开启核心网:

docker-compose -f docker-compose-basic-vpp-nrf.yaml up -d

主机B开启ueransim:

docker-compose -f ueransim33.yaml up -d

查看是否生成uesimtun0:

docker ueransim33 logs
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

月早十

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

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

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

打赏作者

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

抵扣说明:

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

余额充值