【OpenAirInterface】分立部署核心网与容器化ueransim仿真基站并实现网络切片

本文主要是介绍【OpenAirInterface】分立部署核心网与容器化ueransim仿真基站并实现网络切片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里写目录标题

  • 1.简介
    • 1.1 任务说明
    • 1.2 部署前提
  • 2.多核心网部署
    • 2.1 多核心网镜像及yaml文件构建
      • 2.1.1 第一个核心网
      • 2.1.2 构建第二个核心网
      • 2.1.3 构建第三个核心网
    • 2.2多核心网启动
      • 2.2.1启动测试第一个核心网:
      • 2.2.2启动测试第二个核心网:
      • 2.2.3启动测试第三个核心网:
      • 2.2.4同时启动三个核心网
      • 2.3 upf-vpp不健康解决
  • 3.多ueransm容器部署
    • 3.1两机器网络配置

1.简介

基于【OpenAirInterface】分立部署核心网与容器化ueransim仿真基站我们已经可以在两台分立的机器上部署单个核心网与一个容器化ueransim,现在我们尝试在一台机器上一个虚拟机中部署三个OAI核心网,另一台机器中部署三个容器化ueransim仿真基站分别接入三个OAI核心网。

1.1 任务说明

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

前置部署请看:【OpenAirInterface】分立部署核心网与容器化ueransim仿真基站

OAI——单虚拟机多basic核心网部署

1.2 部署前提

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

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

2.多核心网部署

为满足一键开启与关闭一个核心网,不再像 OAI——单虚拟机多basic核心网部署中,将多个核心网的的启动写入一个yaml文件,编写多个yaml文件,每个yaml文件启动一个核心网,每个核心网之间互不干扰。

同时还需为每一套核心网网元创建独立的镜像,仿照之前的方法,使用更改标签的方法对原本的网元镜像复制。

2.1 多核心网镜像及yaml文件构建

进入docker-compose文件夹:

cd /oai-cn5g-fed/docker-compose

2.1.1 第一个核心网

第一个核心网使用的镜像就是官方下载的镜像

在这里插入图片描述

第一个yaml文件依照OAI提供的进行设置(就是原来的docker-compose-basic-vpp-nrf.yaml):

version: '3.8'
services:mysql:container_name: "mysql"image: mysql:8.0volumes:- ./database/oai_db2.sql:/docker-entrypoint-initdb.d/oai_db.sql- ./healthscripts/mysql-healthcheck2.sh:/tmp/mysql-healthcheck.shenvironment:- TZ=Europe/Paris- MYSQL_DATABASE=oai_db- MYSQL_USER=test- MYSQL_PASSWORD=test- MYSQL_ROOT_PASSWORD=linuxhealthcheck:test: /bin/bash -c "/tmp/mysql-healthcheck.sh"interval: 10stimeout: 5sretries: 30networks:public_net:ipv4_address: 192.168.70.131oai-udr:container_name: "oai-udr"image: oaisoftwarealliance/oai-udr:developenvironment:- TZ=Europe/Paris- UDR_NAME=OAI_UDR- UDR_INTERFACE_NAME_FOR_NUDR=eth0- MYSQL_IPV4_ADDRESS=192.168.70.131- MYSQL_USER=test- MYSQL_PASS=test- MYSQL_DB=oai_db- WAIT_MYSQL=120- USE_FQDN_DNS=yes- REGISTER_NRF=yes- NRF_IPV4_ADDRESS=192.168.70.130- NRF_FQDN=oai-nrfdepends_on:- mysql- oai-nrfnetworks:public_net:ipv4_address: 192.168.70.136oai-udm:container_name: "oai-udm"image: oaisoftwarealliance/oai-udm:developenvironment:- TZ=Europe/Paris- UDM_NAME=OAI_UDM- SBI_IF_NAME=eth0- REGISTER_NRF=yes- USE_FQDN_DNS=yes- UDR_IP_ADDRESS=192.168.70.136- UDR_FQDN=oai-udr- NRF_IPV4_ADDRESS=192.168.70.130- NRF_FQDN=oai-nrfdepends_on:- oai-udrnetworks:public_net:ipv4_address: 192.168.70.137oai-ausf:container_name: "oai-ausf"image: oaisoftwarealliance/oai-ausf:developenvironment:- TZ=Europe/Paris- AUSF_NAME=OAI_AUSF- SBI_IF_NAME=eth0- USE_FQDN_DNS=yes- REGISTER_NRF=yes- UDM_IP_ADDRESS=192.168.70.137- UDM_FQDN=oai-udm- NRF_IPV4_ADDRESS=192.168.70.130- NRF_FQDN=oai-nrfdepends_on:- oai-udmnetworks:public_net:ipv4_address: 192.168.70.138oai-nrf:container_name: "oai-nrf"image: oaisoftwarealliance/oai-nrf:developenvironment:- TZ=Europe/Paris- NRF_INTERFACE_NAME_FOR_SBI=eth0networks:public_net:ipv4_address: 192.168.70.130oai-amf:container_name: "oai-amf"image: oaisoftwarealliance/oai-amf:developenvironment:- TZ=Europe/paris- MCC=208- MNC=95- REGION_ID=128- AMF_SET_ID=1- SERVED_GUAMI_MCC_0=208- SERVED_GUAMI_MNC_0=95- SERVED_GUAMI_REGION_ID_0=128- SERVED_GUAMI_AMF_SET_ID_0=1- SERVED_GUAMI_MCC_1=460- SERVED_GUAMI_MNC_1=11- SERVED_GUAMI_REGION_ID_1=10- SERVED_GUAMI_AMF_SET_ID_1=1- PLMN_SUPPORT_MCC=208- PLMN_SUPPORT_MNC=95- PLMN_SUPPORT_TAC=0xa000# Slice 0 (222, 123)- SST_0=222- SD_0=123# Slice 0 (128, 12)- SST_1=128- SD_1=12- AMF_INTERFACE_NAME_FOR_NGAP=eth0- AMF_INTERFACE_NAME_FOR_N11=eth0# One single SMF instance- SMF_INSTANCE_ID_0=1- SMF_FQDN_0=oai-smf- SMF_IPV4_ADDR_0=192.168.70.133- SELECTED_0=true- NF_REGISTRATION=yes- SMF_SELECTION=yes- USE_FQDN_DNS=yes- EXTERNAL_AUSF=yes- EXTERNAL_UDM=no- EXTERNAL_NSSF=no- NRF_IPV4_ADDRESS=192.168.70.130- NRF_FQDN=oai-nrf- AUSF_IPV4_ADDRESS=192.168.70.138- AUSF_FQDN=oai-ausf- UDM_IPV4_ADDRESS=192.168.70.137- UDM_FQDN=oai-udmdepends_on:- mysql- vpp-upf- oai-ext-dn- oai-ausfnetworks:public_net:ipv4_address: 192.168.70.132oai-smf:container_name: "oai-smf"image: oaisoftwarealliance/oai-smf:developenvironment:- TZ=Europe/Paris- SMF_INTERFACE_NAME_FOR_N4=eth0- SMF_INTERFACE_NAME_FOR_SBI=eth0- DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100- DEFAULT_DNS_SEC_IPV4_ADDRESS=8.8.8.8- AMF_IPV4_ADDRESS=192.168.70.132- AMF_FQDN=oai-amf- UDM_IPV4_ADDRESS=192.168.70.137- UDM_FQDN=oai-udm- UPF_IPV4_ADDRESS=192.168.70.201- UPF_FQDN_0=vpp-upf.node.5gcn.mnc95.mcc208.3gppnetwork.org- NRF_IPV4_ADDRESS=192.168.70.130- NRF_FQDN=oai-nrf- DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1  # only needed when ims is being used- USE_LOCAL_SUBSCRIPTION_INFO=yes  #Set to yes if SMF uses local subscription information instead of from an UDM- REGISTER_NRF=yes- DISCOVER_UPF=yes- USE_FQDN_DNS=yes- ENABLE_USAGE_REPORTING=yes# Slice 0 (1, 0xFFFFFF)- DNN_NI0=oai- TYPE0=IPv4- DNN_RANGE0=12.1.1.151 - 12.1.1.253- NSSAI_SST0=1- SESSION_AMBR_UL0=200Mbps- SESSION_AMBR_DL0=400Mbps# Slice 1 (1, 1)- DNN_NI1=oai.ipv4- TYPE1=IPv4- DNN_RANGE1=12.1.1.51 - 12.1.1.150- NSSAI_SST1=1- NSSAI_SD1=1- SESSION_AMBR_UL1=100Mbps- SESSION_AMBR_DL1=200Mbps# Slice 2 (222, 123)- DNN_NI2=default- TYPE2=IPv4- DNN_RANGE2=12.1.1.2 - 12.1.1.50- NSSAI_SST2=222- NSSAI_SD2=123- SESSION_AMBR_UL2=50Mbps- SESSION_AMBR_DL2=100Mbps# Slice 3 for ims- DNN_NI3=ims- TYPE3=IPv4v6- DNN_RANGE3=14.1.1.2 - 14.1.1.253extra_hosts:- "vpp-upf.node.5gcn.mnc95.mcc208.3gppnetwork.org:192.168.70.201"depends_on:- oai-amfnetworks:public_net:ipv4_address: 192.168.70.133vpp-upf:privileged: truecontainer_name: "vpp-upf"image: oaisoftwarealliance/oai-upf-vpp:developenvironment:- IF_1_IP=192.168.70.201- IF_1_TYPE=N4- IF_2_IP=192.168.72.201- IF_2_TYPE=N3- IF_2_NWI=access.oai.org- IF_3_IP=192.168.73.201- IF_3_TYPE=N6- IF_3_IP_REMOTE=192.168.73.135 # EXT-DN IP Address- IF_3_NWI=internet.oai.org- NAME=VPP-UPF- MNC=95- MCC=208- REALM=3gppnetwork.org- VPP_MAIN_CORE=0- VPP_CORE_WORKER=1
#           - VPP_PLUGIN_PATH=/usr/lib64/vpp_plugins/                # RHEL7- VPP_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/vpp_plugins/ # Ubntu18.04- SNSSAI_SD=123- SNSSAI_SST=222- DNN=default- REGISTER_NRF=yes- NRF_IP_ADDR=192.168.70.130- NRF_PORT=80- HTTP_VERSION=1depends_on:- oai-nrfhealthcheck:test: /bin/bash -c "pgrep vpp"interval: 10stimeout: 5sretries: 5networks:public_net:ipv4_address: 192.168.70.134public_net_access:ipv4_address: 192.168.72.134public_net_core:ipv4_address: 192.168.73.134oai-ext-dn:privileged: trueinit: truecontainer_name: "oai-ext-dn"image: oaisoftwarealliance/trf-gen-cn5g:latestentrypoint: /bin/bash -c \"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\"ip route add 12.1.1.0/24 via 192.168.73.201 dev eth0; ip route; sleep infinity"command: ["/bin/bash", "-c", "trap : SIGTERM SIGINT; sleep infinity & wait"]healthcheck:test: /bin/bash -c "iptables -L -t nat | grep MASQUERADE"interval: 10stimeout: 5sretries: 5networks:public_net_core:ipv4_address: 192.168.73.135
networks:public_net:driver: bridgename: demo-oai-public-netipam:config:- subnet: 192.168.70.0/24driver_opts:com.docker.network.bridge.name: "demo-oai"public_net_access:name: oai-public-accessipam:config:- subnet: 192.168.72.0/24driver_opts:com.docker.network.bridge.name: "cn5g-access"public_net_core:name: oai-public-coreipam:config:- subnet: 192.168.73.0/24driver_opts:com.docker.network.bridge.name: "cn5g-core"

2.1.2 构建第二个核心网

构建第二套核心网所需的docekr 镜像 ,采用修改标签的方法,全部改为 1.5.1

sudo docker tag mysql:8.0 mysql:8.1
sudo docker tag oaisoftwarealliance/oai-amf:v1.5.0 oaisoftwarealliance/oai-amf:1.5.1
sudo docker tag oaisoftwarealliance/oai-smf:v1.5.0 oaisoftwarealliance/oai-smf:1.5.1
sudo docker tag oaisoftwarealliance/oai-ausf:v1.5.0 oaisoftwarealliance/oai-ausf:1.5.1
sudo docker tag oaisoftwarealliance/oai-udr:v1.5.0 oaisoftwarealliance/oai-udr:1.5.1
sudo docker tag oaisoftwarealliance/oai-udm:v1.5.0 oaisoftwarealliance/oai-udm:1.5.1
sudo docker tag oaisoftwarealliance/oai-nrf:v1.5.0 oaisoftwarealliance/oai-nrf:1.5.1
sudo docker tag oaisoftwarealliance/oai-nssf:v1.5.0 oaisoftwarealliance/oai-nssf:1.5.1
sudo docker tag oaisoftwarealliance/oai-nef:v1.5.0 oaisoftwarealliance/oai-nef:1.5.1
sudo docker tag oaisoftwarealliance/oai-pcf:v1.5.0 oaisoftwarealliance/oai-pcf:1.5.1
sudo docker tag oaisoftwarealliance/oai-upf-vpp:v1.5.0 oaisoftwarealliance/oai-upf-vpp:1.5.1
sudo docker tag oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 oaisoftwarealliance/oai-spgwu-tiny:1.5.1
sudo docker tag oaisoftwarealliance/trf-gen-cn5g:latest oaisoftwarealliance/trf-gen-cn5g:1.5.1

在这里插入图片描述
创建完成可以进行查看

docker images

在这里插入图片描述
在这里插入图片描述

创建第二个yaml文件,其在官方提供的docker-compose-basic-vpp-nrf.yaml上进行修改,命名为docker-compose-basic-vpp-nrf1.yaml
其中创建了一套新的核心网,所有网元都是名字都多添加了一个1,使用的网络网段为192.168.10.xx

version: '3.8'
services:mysql1:container_name: "mysql1"image: mysql:8.1volumes:- ./database/oai_db2.sql:/docker-entrypoint-initdb.d/oai_db.sql- ./healthscripts/mysql-healthcheck2.sh:/tmp/mysql-healthcheck.shenvironment:- TZ=Europe/Paris- MYSQL_DATABASE=oai_db- MYSQL_USER=test- MYSQL_PASSWORD=test- MYSQL_ROOT_PASSWORD=linuxhealthcheck:test: /bin/bash -c "/tmp/mysql-healthcheck.sh"interval: 10stimeout: 5sretries: 30networks:public_net1:ipv4_address: 192.168.10.131oai-udr1:container_name: "oai-udr1"image: oaisoftwarealliance/oai-udr:1.5.1environment:- TZ=Europe/Paris- UDR_NAME=OAI_UDR- UDR_INTERFACE_NAME_FOR_NUDR=eth0- MYSQL_IPV4_ADDRESS=192.168.10.131- MYSQL_USER=test- MYSQL_PASS=test- MYSQL_DB=oai_db- WAIT_MYSQL=120- USE_FQDN_DNS=yes- REGISTER_NRF=yes- NRF_IPV4_ADDRESS=192.168.10.130- NRF_FQDN=oai-nrf1depends_on:- mysql1- oai-nrf1networks:public_net1:ipv4_address: 192.168.10.136oai-udm1:container_name: "oai-udm1"image: oaisoftwarealliance/oai-udm:1.5.1environment:- TZ=Europe/Paris- UDM_NAME=OAI_UDM- SBI_IF_NAME=eth0- REGISTER_NRF=yes- USE_FQDN_DNS=yes- UDR_IP_ADDRESS=192.168.10.136- UDR_FQDN=oai-udr1- NRF_IPV4_ADDRESS=192.168.10.130- NRF_FQDN=oai-nrf1depends_on:- oai-udr1networks:public_net1:ipv4_address: 192.168.10.137oai-ausf1:container_name: "oai-ausf1"image: oaisoftwarealliance/oai-ausf:1.5.1environment:- TZ=Europe/Paris- AUSF_NAME=OAI_AUSF- SBI_IF_NAME=eth0- USE_FQDN_DNS=yes- REGISTER_NRF=yes- UDM_IP_ADDRESS=192.168.10.137- UDM_FQDN=oai-udm1- NRF_IPV4_ADDRESS=192.168.10.130- NRF_FQDN=oai-nrf1depends_on:- oai-udm1networks:public_net1:ipv4_address: 192.168.10.138oai-nrf1:container_name: "oai-nrf1"image: oaisoftwarealliance/oai-nrf:1.5.1environment:- TZ=Europe/Paris- NRF_INTERFACE_NAME_FOR_SBI=eth0networks:public_net1:ipv4_address: 192.168.10.130oai-amf1:container_name: "oai-amf1"image: oaisoftwarealliance/oai-amf:1.5.1environment:- TZ=Europe/paris- MCC=208- MNC=95- REGION_ID=128- AMF_SET_ID=1- SERVED_GUAMI_MCC_0=208- SERVED_GUAMI_MNC_0=95- SERVED_GUAMI_REGION_ID_0=128- SERVED_GUAMI_AMF_SET_ID_0=1- SERVED_GUAMI_MCC_1=460- SERVED_GUAMI_MNC_1=11- SERVED_GUAMI_REGION_ID_1=10- SERVED_GUAMI_AMF_SET_ID_1=1- PLMN_SUPPORT_MCC=208- PLMN_SUPPORT_MNC=95- PLMN_SUPPORT_TAC=0xa000# Slice 0 (222, 123)- SST_0=222- SD_0=123# Slice 0 (128, 12)- SST_1=128- SD_1=12- AMF_INTERFACE_NAME_FOR_NGAP=eth0- AMF_INTERFACE_NAME_FOR_N11=eth0# One single SMF instance- SMF_INSTANCE_ID_0=1- SMF_FQDN_0=oai-smf1- SMF_IPV4_ADDR_0=192.168.10.133- SELECTED_0=true- NF_REGISTRATION=yes- SMF_SELECTION=yes- USE_FQDN_DNS=yes- EXTERNAL_AUSF=yes- EXTERNAL_UDM=no- EXTERNAL_NSSF=no- NRF_IPV4_ADDRESS=192.168.10.130- NRF_FQDN=oai-nrf1- AUSF_IPV4_ADDRESS=192.168.10.138- AUSF_FQDN=oai-ausf1- UDM_IPV4_ADDRESS=192.168.10.137- UDM_FQDN=oai-udm1- INT_ALGO_LIST=[ "NIA1" , "NIA2"]- CIPH_ALGO_LIST=[ "NEA1" , "NEA2"]depends_on:- mysql1- vpp-upf1- oai-ext-dn1- oai-ausf1networks:public_net1:ipv4_address: 192.168.10.132oai-smf1:container_name: "oai-smf1"image: oaisoftwarealliance/oai-smf:1.5.1environment:- TZ=Europe/Paris- SMF_INTERFACE_NAME_FOR_N4=eth0- SMF_INTERFACE_NAME_FOR_SBI=eth0- DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100- DEFAULT_DNS_SEC_IPV4_ADDRESS=8.8.8.8- AMF_IPV4_ADDRESS=192.168.10.132- AMF_FQDN=oai-amf1- UDM_IPV4_ADDRESS=192.168.10.137- UDM_FQDN=oai-udm1- UPF_IPV4_ADDRESS=192.168.10.201- UPF_FQDN_0=vpp-upf.node.5gcn.mnc95.mcc208.3gppnetwork.org- NRF_IPV4_ADDRESS=192.168.10.130- NRF_FQDN=oai-nrf1- DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1  # only needed when ims is being used- USE_LOCAL_SUBSCRIPTION_INFO=yes  #Set to yes if SMF uses local subscription information instead of from an UDM- REGISTER_NRF=yes- DISCOVER_UPF=yes- USE_FQDN_DNS=yes- USE_NETWORK_INSTANCE=yes- ENABLE_USAGE_REPORTING=yes# Slice 0 (1, 0xFFFFFF)- DNN_NI0=oai- TYPE0=IPv4- DNN_RANGE0=12.1.1.151 - 12.1.1.253- NSSAI_SST0=1- SESSION_AMBR_UL0=200Mbps- SESSION_AMBR_DL0=400Mbps# Slice 1 (1, 1)- DNN_NI1=oai.ipv4- TYPE1=IPv4- DNN_RANGE1=12.1.1.51 - 12.1.1.150- NSSAI_SST1=1- NSSAI_SD1=1- SESSION_AMBR_UL1=100Mbps- SESSION_AMBR_DL1=200Mbps# Slice 2 (222, 123)- DNN_NI2=default- TYPE2=IPv4- DNN_RANGE2=12.1.1.2 - 12.1.1.50- NSSAI_SST2=222- NSSAI_SD2=123- SESSION_AMBR_UL2=50Mbps- SESSION_AMBR_DL2=100Mbps# Slice 3 for ims- DNN_NI3=ims- TYPE3=IPv4v6- DNN_RANGE3=14.1.1.2 - 14.1.1.253extra_hosts:- "vpp-upf.node.5gcn.mnc95.mcc208.3gppnetwork.org:192.168.60.201"depends_on:- oai-amf1networks:public_net1:ipv4_address: 192.168.10.133vpp-upf1:privileged: truecontainer_name: "vpp-upf1"image: oaisoftwarealliance/oai-upf-vpp:1.5.1environment:- IF_1_IP=192.168.10.201- IF_1_TYPE=N4- IF_2_IP=192.168.12.201- IF_2_TYPE=N3- IF_2_NWI=access.oai.org- IF_3_IP=192.168.13.201- IF_3_TYPE=N6- IF_3_IP_REMOTE=192.168.13.135 # EXT-DN IP Address- IF_3_NWI=internet.oai.org- NAME=VPP-UPF- MNC=95- MCC=208- REALM=3gppnetwork.org- VPP_MAIN_CORE=0- VPP_CORE_WORKER=1
#           - VPP_PLUGIN_PATH=/usr/lib64/vpp_plugins/                # RHEL7- VPP_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/vpp_plugins/ # Ubntu18.04- SNSSAI_SD=123- SNSSAI_SST=222- DNN=default- REGISTER_NRF=yes- NRF_IP_ADDR=192.168.10.130- NRF_PORT=80- HTTP_VERSION=1depends_on:- oai-nrf1healthcheck:test: /bin/bash -c "pgrep vpp"interval: 10stimeout: 5sretries: 5networks:public_net1:ipv4_address: 192.168.10.134public_net_access1:ipv4_address: 192.168.12.134public_net_core1:ipv4_address: 192.168.13.134oai-ext-dn1:privileged: trueinit: truecontainer_name: "oai-ext-dn1"image: oaisoftwarealliance/trf-gen-cn5g:1.5.1entrypoint: /bin/bash -c \"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\"ip route add 12.1.1.0/24 via 192.168.13.201 dev eth0; ip route; sleep infinity"command: ["/bin/bash", "-c", "trap : SIGTERM SIGINT; sleep infinity & wait"]healthcheck:test: /bin/bash -c "iptables -L -t nat | grep MASQUERADE"interval: 10stimeout: 5sretries: 5networks:public_net_core1:ipv4_address: 192.168.13.135networks:public_net1:driver: bridgename: demo-oai-public-net1ipam:config:- subnet: 192.168.10.0/24driver_opts:com.docker.network.bridge.name: "demo-oai1"public_net_access1:name: oai-public-access1ipam:config:- subnet: 192.168.12.0/24driver_opts:com.docker.network.bridge.name: "cn5g-access1"public_net_core1:name: oai-public-core1ipam:config:- subnet: 192.168.13.0/24driver_opts:com.docker.network.bridge.name: "cn5g-core1"

2.1.3 构建第三个核心网

构建第三套核心网所需的docekr 镜像 ,采用修改标签的方法,全部改为 1.5.3

sudo docker tag mysql:8.0 mysql:8.3
sudo docker tag oaisoftwarealliance/oai-amf:v1.5.0 oaisoftwarealliance/oai-amf:1.5.3
sudo docker tag oaisoftwarealliance/oai-smf:v1.5.0 oaisoftwarealliance/oai-smf:1.5.3
sudo docker tag oaisoftwarealliance/oai-ausf:v1.5.0 oaisoftwarealliance/oai-ausf:1.5.3
sudo docker tag oaisoftwarealliance/oai-udr:v1.5.0 oaisoftwarealliance/oai-udr:1.5.3
sudo docker tag oaisoftwarealliance/oai-udm:v1.5.0 oaisoftwarealliance/oai-udm:1.5.3
sudo docker tag oaisoftwarealliance/oai-nrf:v1.5.0 oaisoftwarealliance/oai-nrf:1.5.3
sudo docker tag oaisoftwarealliance/oai-nssf:v1.5.0 oaisoftwarealliance/oai-nssf:1.5.3
sudo docker tag oaisoftwarealliance/oai-nef:v1.5.0 oaisoftwarealliance/oai-nef:1.5.3
sudo docker tag oaisoftwarealliance/oai-pcf:v1.5.0 oaisoftwarealliance/oai-pcf:1.5.3
sudo docker tag oaisoftwarealliance/oai-upf-vpp:v1.5.0 oaisoftwarealliance/oai-upf-vpp:1.5.3
sudo docker tag oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 oaisoftwarealliance/oai-spgwu-tiny:1.5.3
sudo docker tag oaisoftwarealliance/trf-gen-cn5g:latest oaisoftwarealliance/trf-gen-cn5g:1.5.3

在这里插入图片描述
创建完成可以进行查看,可以看见已经创建了三套核心网镜像

docker images

在这里插入图片描述
在这里插入图片描述

创建第三个yaml文件,其在官方提供的docker-compose-basic-vpp-nrf.yaml上进行修改,命名为docker-compose-basic-vpp-nrf3.yaml
其中创建了一套新的核心网,所有网元都是名字都多添加了一个1,使用的网络网段为192.168.30.xx

version: '3.8'
services:mysql3:container_name: "mysql3"image: mysql:8.3volumes:- ./database/oai_db2.sql:/docker-entrypoint-initdb.d/oai_db.sql- ./healthscripts/mysql-healthcheck2.sh:/tmp/mysql-healthcheck.shenvironment:- TZ=Europe/Paris- MYSQL_DATABASE=oai_db- MYSQL_USER=test- MYSQL_PASSWORD=test- MYSQL_ROOT_PASSWORD=linuxhealthcheck:test: /bin/bash -c "/tmp/mysql-healthcheck.sh"interval: 10stimeout: 5sretries: 30networks:public_net3:ipv4_address: 192.168.30.131oai-udr3:container_name: "oai-udr3"image: oaisoftwarealliance/oai-udr:1.5.3environment:- TZ=Europe/Paris- UDR_NAME=OAI_UDR- UDR_INTERFACE_NAME_FOR_NUDR=eth0- MYSQL_IPV4_ADDRESS=192.168.30.131- MYSQL_USER=test- MYSQL_PASS=test- MYSQL_DB=oai_db- WAIT_MYSQL=120- USE_FQDN_DNS=yes- REGISTER_NRF=yes- NRF_IPV4_ADDRESS=192.168.30.130- NRF_FQDN=oai-nrf3depends_on:- mysql3- oai-nrf3networks:public_net3:ipv4_address: 192.168.30.136oai-udm3:container_name: "oai-udm3"image: oaisoftwarealliance/oai-udm:1.5.3environment:- TZ=Europe/Paris- UDM_NAME=OAI_UDM- SBI_IF_NAME=eth0- REGISTER_NRF=yes- USE_FQDN_DNS=yes- UDR_IP_ADDRESS=192.168.30.136- UDR_FQDN=oai-udr3- NRF_IPV4_ADDRESS=192.168.30.130- NRF_FQDN=oai-nrf3depends_on:- oai-udr3networks:public_net3:ipv4_address: 192.168.30.137oai-ausf3:container_name: "oai-ausf3"image: oaisoftwarealliance/oai-ausf:1.5.3environment:- TZ=Europe/Paris- AUSF_NAME=OAI_AUSF- SBI_IF_NAME=eth0- USE_FQDN_DNS=yes- REGISTER_NRF=yes- UDM_IP_ADDRESS=192.168.30.137- UDM_FQDN=oai-udm3- NRF_IPV4_ADDRESS=192.168.30.130- NRF_FQDN=oai-nrf3depends_on:- oai-udm3networks:public_net3:ipv4_address: 192.168.30.138oai-nrf3:container_name: "oai-nrf3"image: oaisoftwarealliance/oai-nrf:1.5.3environment:- TZ=Europe/Paris- NRF_INTERFACE_NAME_FOR_SBI=eth0networks:public_net3:ipv4_address: 192.168.30.130oai-amf3:container_name: "oai-amf3"image: oaisoftwarealliance/oai-amf:1.5.3environment:- TZ=Europe/paris- MCC=208- MNC=95- REGION_ID=128- AMF_SET_ID=1- SERVED_GUAMI_MCC_0=208- SERVED_GUAMI_MNC_0=95- SERVED_GUAMI_REGION_ID_0=128- SERVED_GUAMI_AMF_SET_ID_0=1- SERVED_GUAMI_MCC_1=460- SERVED_GUAMI_MNC_1=11- SERVED_GUAMI_REGION_ID_1=10- SERVED_GUAMI_AMF_SET_ID_1=1- PLMN_SUPPORT_MCC=208- PLMN_SUPPORT_MNC=95- PLMN_SUPPORT_TAC=0xa000# Slice 0 (222, 123)- SST_0=222- SD_0=123# Slice 0 (128, 12)- SST_1=128- SD_1=12- AMF_INTERFACE_NAME_FOR_NGAP=eth0- AMF_INTERFACE_NAME_FOR_N11=eth0# One single SMF instance- SMF_INSTANCE_ID_0=1- SMF_FQDN_0=oai-smf3- SMF_IPV4_ADDR_0=192.168.30.133- SELECTED_0=true- NF_REGISTRATION=yes- SMF_SELECTION=yes- USE_FQDN_DNS=yes- EXTERNAL_AUSF=yes- EXTERNAL_UDM=no- EXTERNAL_NSSF=no- NRF_IPV4_ADDRESS=192.168.30.130- NRF_FQDN=oai-nrf3- AUSF_IPV4_ADDRESS=192.168.30.138- AUSF_FQDN=oai-ausf3- UDM_IPV4_ADDRESS=192.168.30.137- UDM_FQDN=oai-udm3- INT_ALGO_LIST=[ "NIA1" , "NIA2"]- CIPH_ALGO_LIST=[ "NEA1" , "NEA2"]depends_on:- mysql3- vpp-upf3- oai-ext-dn3- oai-ausf3networks:public_net3:ipv4_address: 192.168.30.132oai-smf3:container_name: "oai-smf3"image: oaisoftwarealliance/oai-smf:1.5.3environment:- TZ=Europe/Paris- SMF_INTERFACE_NAME_FOR_N4=eth0- SMF_INTERFACE_NAME_FOR_SBI=eth0- DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100- DEFAULT_DNS_SEC_IPV4_ADDRESS=8.8.8.8- AMF_IPV4_ADDRESS=192.168.30.132- AMF_FQDN=oai-amf3- UDM_IPV4_ADDRESS=192.168.30.137- UDM_FQDN=oai-udm3- UPF_IPV4_ADDRESS=192.168.30.201- UPF_FQDN_0=vpp-upf.node.5gcn.mnc95.mcc208.3gppnetwork.org- NRF_IPV4_ADDRESS=192.168.30.130- NRF_FQDN=oai-nrf3- DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1  # only needed when ims is being used- USE_LOCAL_SUBSCRIPTION_INFO=yes  #Set to yes if SMF uses local subscription information instead of from an UDM- REGISTER_NRF=yes- DISCOVER_UPF=yes- USE_FQDN_DNS=yes- USE_NETWORK_INSTANCE=yes- ENABLE_USAGE_REPORTING=yes# Slice 0 (1, 0xFFFFFF)- DNN_NI0=oai- TYPE0=IPv4- DNN_RANGE0=12.1.1.151 - 12.1.1.253- NSSAI_SST0=1- SESSION_AMBR_UL0=200Mbps- SESSION_AMBR_DL0=400Mbps# Slice 1 (1, 1)- DNN_NI1=oai.ipv4- TYPE1=IPv4- DNN_RANGE1=12.1.1.51 - 12.1.1.150- NSSAI_SST1=1- NSSAI_SD1=1- SESSION_AMBR_UL1=100Mbps- SESSION_AMBR_DL1=200Mbps# Slice 2 (222, 123)- DNN_NI2=default- TYPE2=IPv4- DNN_RANGE2=12.1.1.2 - 12.1.1.50- NSSAI_SST2=222- NSSAI_SD2=123- SESSION_AMBR_UL2=50Mbps- SESSION_AMBR_DL2=100Mbps# Slice 3 for ims- DNN_NI3=ims- TYPE3=IPv4v6- DNN_RANGE3=14.1.1.2 - 14.1.1.253extra_hosts:- "vpp-upf.node.5gcn.mnc95.mcc208.3gppnetwork.org:192.168.30.201"depends_on:- oai-amf3networks:public_net3:ipv4_address: 192.168.30.133vpp-upf3:privileged: truecontainer_name: "vpp-upf3"image: oaisoftwarealliance/oai-upf-vpp:1.5.3environment:- IF_1_IP=192.168.30.201- IF_1_TYPE=N4- IF_2_IP=192.168.32.201- IF_2_TYPE=N3- IF_2_NWI=access.oai.org- IF_3_IP=192.168.33.201- IF_3_TYPE=N6- IF_3_IP_REMOTE=192.168.33.135 # EXT-DN IP Address- IF_3_NWI=internet.oai.org- NAME=VPP-UPF- MNC=95- MCC=208- REALM=3gppnetwork.org- VPP_MAIN_CORE=0- VPP_CORE_WORKER=1
#           - VPP_PLUGIN_PATH=/usr/lib64/vpp_plugins/                # RHEL7- VPP_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/vpp_plugins/ # Ubntu18.04- SNSSAI_SD=123- SNSSAI_SST=222- DNN=default- REGISTER_NRF=yes- NRF_IP_ADDR=192.168.30.130- NRF_PORT=80- HTTP_VERSION=1depends_on:- oai-nrf3healthcheck:test: /bin/bash -c "pgrep vpp"interval: 10stimeout: 5sretries: 5networks:public_net3:ipv4_address: 192.168.30.134public_net_access3:ipv4_address: 192.168.32.134public_net_core3:ipv4_address: 192.168.33.134oai-ext-dn3:privileged: trueinit: truecontainer_name: "oai-ext-dn3"image: oaisoftwarealliance/trf-gen-cn5g:1.5.3entrypoint: /bin/bash -c \"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\"ip route add 12.1.1.0/24 via 192.168.33.201 dev eth0; ip route; sleep infinity"command: ["/bin/bash", "-c", "trap : SIGTERM SIGINT; sleep infinity & wait"]healthcheck:test: /bin/bash -c "iptables -L -t nat | grep MASQUERADE"interval: 10stimeout: 5sretries: 5networks:public_net_core3:ipv4_address: 192.168.33.135networks:public_net3:driver: bridgename: demo-oai-public-net3ipam:config:- subnet: 192.168.30.0/24driver_opts:com.docker.network.bridge.name: "demo-oai3"public_net_access3:name: oai-public-access3ipam:config:- subnet: 192.168.32.0/24driver_opts:com.docker.network.bridge.name: "cn5g-access3"public_net_core3:name: oai-public-core3ipam:config:- subnet: 192.168.33.0/24driver_opts:com.docker.network.bridge.name: "cn5g-core3"

如下已创建好三个yaml文件
在这里插入图片描述

2.2多核心网启动

2.2.1启动测试第一个核心网:

lab@lab-virtual-machine:~/oai-cn5g-fed/docker-compose$ docker-compose -f docker-compose-basic-vpp-nrf.yaml up -d

注:不加最后的后缀 -d 使容器不为守护进程,可以直接进入容器内部观察内部的消息,判断核心哇是否正常运转
在这里插入图片描述
查看容器状态

docker ps

注:其中oai-ext-dn不健康不影响核心网运行,该网元用于进行一些数据交互测试
在这里插入图片描述

2.2.2启动测试第二个核心网:

lab@lab-virtual-machine:~/oai-cn5g-fed/docker-compose$ docker-compose -f docker-compose-basic-vpp-nrf1.yaml up -d

在这里插入图片描述

2.2.3启动测试第三个核心网:

lab@lab-virtual-machine:~/oai-cn5g-fed/docker-compose$ docker-compose -f docker-compose-basic-vpp-nrf3.yaml up -d

查看容器状态,看各网元是否健康

docker ps

在这里插入图片描述

2.2.4同时启动三个核心网

经过上面的测试,每一个核心网都可以单独正常启动,且各自使用了不同的镜像、网络、容器,现在测试三个核心网同时启动:

lab@lab-virtual-machine:~/oai-cn5g-fed/docker-compose$ docker-compose -f docker-compose-basic-vpp-nrf.yaml up -dlab@lab-virtual-machine:~/oai-cn5g-fed/docker-compose$ docker-compose -f docker-compose-basic-vpp-nrf1.yaml up -dlab@lab-virtual-machine:~/oai-cn5g-fed/docker-compose$ docker-compose -f docker-compose-basic-vpp-nrf3.yaml up -d

查看容器健康状态,发现多了一个vpp-upf是不健康的:
在这里插入图片描述
在这里插入图片描述

2.3 upf-vpp不健康解决

同时启动核心网1和核心网3,发现并未出现不健康。
在这里插入图片描述
在这里插入图片描述
再启动原始核心网,发现出现了不健康。
同时启动原始核心网与核心网3发现正常。

鉴于UPF可能用不上,所以暂且搁置

3.多ueransm容器部署

3.1两机器网络配置

不同于之前只使用一个网线,现在使用三个网线,服务器A的三个网口,主机B的三个网口,需要在虚拟机上配置三个网络,使用三个不同的网段,对应于三个不同的核心网,同时使用三个路由转发。

这篇关于【OpenAirInterface】分立部署核心网与容器化ueransim仿真基站并实现网络切片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/254258

相关文章

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

VSCode配置Anaconda Python环境的实现

《VSCode配置AnacondaPython环境的实现》VisualStudioCode中可以使用Anaconda环境进行Python开发,本文主要介绍了VSCode配置AnacondaPytho... 目录前言一、安装 Visual Studio Code 和 Anaconda二、创建或激活 conda

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命