我用的是在windows上的ubantu虚拟机,版本号为18.04,下面开始核心网的搭建
步骤一
了解整个核心网部署流程docs/DEPLOY_HOME.md · master · oai / cn5g / oai-cn5g-fed · GitLab (eurecom.fr)
Pre-requisites就是搭建核心网的第一步,包括了最基础的docker注册登录,容器的部署,网络的配置等等。
How to get the container images是当你要下载修改容器里面的东西时才需要这一步,我们下载镜像时就需要。
5G Core Deployment就是最关键的一部,它给你提供了多种的方案选择,我选择的是第一个minimalist 部署。
其他的东西就不讲了哈哈
然后查阅完整最小核心网部署资料(OpenAirInterface 5G Core Network Minimalist Deployment using Docker-Compose)docs/DEPLOY_SA5G_MINI_DEPLOYMENT.md · master · oai / cn5g / oai-cn5g-fed · GitLab (eurecom.fr)
有图上可以看出,一共提供了两种选择,唯一的区别就在于有无NRF(Network Repository Function,网络仓储功能),我会将两者均搭建,读者可以自行选择。
这些都需要提前准备,版本号大于等于图中版本号即可,其中安装具体不明白的地方可以参考该连接docs/DEPLOY_PRE_REQUESITES.md · master · oai / cn5g / oai-cn5g-fed · GitLab (eurecom.fr)
总结一下:
提前需要准备的东西
Software Version
docker engine 19.03.6, build 369ce74a3c //必须下载
docker-compose 1.27.4, build 40524192 //必须下载
Ubuntu 18.04//虚拟机
tshark 3.4.4 (Git commit c33f6306cbb2)
wireshark 3.4.4 (Git commit c33f6306cbb2) //上面两个是仿真软
其中wireshark我们使用的是远程抓包的方式(通过windows中的wireshark抓取虚拟机中的数据包),后面会讲述。
注意:Pre-requisites中的东西都需要在搭建核心网之前准备好,比如登录docker和修改网络那些,下面的步骤二会带着读者进行pre-requisites的配置
步骤二
进行pre-requisites的配置
//命令行建立文件夹
$ sudo su //进入管理员操作模式
root@phoenix-VirtualBox:/home/phoenix# mkdir OAI //新建文件夹
root@phoenix-VirtualBox:/home/phoenix# cd //cd [dirName]:选择要切换的目标目录。
root@phoenix-VirtualBox:/home/phoenix/OAI# cd //显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)
创建好文件夹之后,下载源代码
下载源码
root@phoenix-VirtualBox:/home/phoenix/OAI# git clone https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed.git
下载基础镜像(这也是pre-requst中的第三步Pull base images)
root@phoenix-VirtualBox:/home/phoenix/OAI/ # docker pull ubuntu:bionic
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# docker pull mysql:5.7
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# docker images //检查是否下载成功
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu bionic 476c64862aa8 2 days ago 63.1MB
mysql 5.7 daff57b7d2d1 10 days ago 430MB
下载核心网镜像(注意此时docker需要登录噢)docs/RETRIEVE_OFFICIAL_IMAGES.md · master · oai / cn5g / oai-cn5g-fed · GitLab (eurecom.fr)
部署三网元的版本AMF,SMF和SPGW-U以及DN(NRF可以不用部署)
下载核心网镜像
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# docker pull oaisoftwarealliance/oai-amf:latest
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# docker pull oaisoftwarealliance/trf-gen-cn5g:latest
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# docker pull oaisoftwarealliance/oai-spgwu-tiny:latest
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# docker pull oaisoftwarealliance/oai-smf:latest
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# docker images //检擦是否全部安装完毕
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu bionic 476c64862aa8 3 days ago 63.1MB
mysql 5.7 daff57b7d2d1 11 days ago 430MB
oaisoftwarealliance/oai-spgwu-tiny latest b1d0c95000bc 8 weeks ago 127MB
oaisoftwarealliance/oai-smf latest 639a618a3707 2 months ago 149MB
oaisoftwarealliance/oai-amf latest 890b5b8e62ec 2 months ago 153MB
oaisoftwarealliance/trf-gen-cn5g latest e6037618a0d9 5 months ago 278MB
hello-world latest feb5d9fea6a5 11 months ago 13.3kB
所有镜像下载完毕
修改镜像tag
修改镜像tag
docker image tag oaisoftwarealliance/oai-amf:latest oai-amf:latest
docker image tag oaisoftwarealliance/oai-smf:latest oai-smf:latest
docker image tag oaisoftwarealliance/oai-spgwu-tiny:latest oai-spgwu-tiny:latest
docker image tag oaisoftwarealliance/trf-gen-cn5g:latest trf-gen-cn5g:latest
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# docker images
//检擦是否全部安装完毕
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu bionic 476c64862aa8 3 days ago 63.1MB
mysql 5.7 daff57b7d2d1 11 days ago 430MB
oai-spgwu-tiny latest b1d0c95000bc 8 weeks ago 127MB
oaisoftwarealliance/oai-spgwu-tiny latest b1d0c95000bc 8 weeks ago 127MB
oaisoftwarealliance/oai-smf latest 639a618a3707 2 months ago 149MB
oai-smf latest 639a618a3707 2 months ago 149MB
oai-amf latest 890b5b8e62ec 2 months ago 153MB
oaisoftwarealliance/oai-amf latest 890b5b8e62ec 2 months ago 153MB
trf-gen-cn5g latest e6037618a0d9 5 months ago 278MB
oaisoftwarealliance/trf-gen-cn5g latest e6037618a0d9 5 months ago 278MB
hello-world latest feb5d9fea6a5 11 months ago 13.3kB
易知多了四个,但是他们的image id是相同的(因为是相同镜像,只不过不是一样的tag)
修改完成之后,docker即可log out
步骤三
部署轻量级核心网
建立网桥,原文:The docker-compose-host
machine needs to be configured with demo-oai
bridge before deploying core network components. To capture initial message exchange between smf<-->nrf<-->upf we need create the bridge.
建立网桥
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# docker network create \> --driver=bridge \
--subnet=192.168.70.128/26 \
-o "com.docker.network.bridge.name"="demo-oai" \
demo-oai-public-net
报错:
Command 'ifconfig' not found, but can be installed with:
那我们需要安装:
apt install net-tools //需要apt install net-tools
//查看网络端口地址:
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# ifconfig demo-oai //检查是否建立了demo-oai网桥
demo-oai: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.70.129 netmask 255.255.255.192 broadcast 192.168.70.191
ether 02:42:b4:1f:e2:5b txqueuelen 0 (以太网)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
易知ip地址为192.168.70.129(demo-oai的ip地址在后面配置UERANSIM时需要使用)********************************************
//查看网桥地址:
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# docker network ls
NETWORK ID NAME DRIVER SCOPE
a44a686e67a9 bridge bridge local
b54316542a4d demo-oai-public-net bridge local
88e9f49b2e00 host host local
ad926acba8ba none null local
//易知网关地址为b54316542a4d
//因此我们已经完成了网络的部署要求
步骤四
启动核心网(请忽略下图中出现的nrf,因为我在步骤2中也下载了nrf的镜像)
参考docs/DEPLOY_SA5G_MINI_DEPLOYMENT.md · master · oai / cn5g / oai-cn5g-fed · GitLab (eurecom.fr)
中的7. Deploying OAI 5g Core Network
在docker compose中有一个启动脚本,因此我们先打开docker compose
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed# ls
CHANGELOG.md ci-scripts CONTRIBUTING.md docs openshift scripts
charts component docker-compose LICENSE README.md
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed#
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed/docker-compose# ls
core-network.py docker-compose-mini-nonrf.yaml
database docker-compose-mini-nrf.yaml
docker-compose-basic-nonrf.yaml docker-compose-my5grantester-vpp.yaml
docker-compose-basic-nrf-http2.yaml docker-compose-no-privilege.yaml
docker-compose-basic-nrf.yaml docker-compose-slicing-basic-nrf.yaml
docker-compose-basic-vpp-nonrf.yaml docker-compose-slicing-ransim.yamlls
docker-compose-basic-vpp-nrf-http2.yaml docker-compose-ueransim-vpp.yaml
docker-compose-basic-vpp-nrf.yaml healthscripts
docker-compose-gnbsim-vpp.yaml nssf_slice_config.yaml
docker-compose-gnbsim.yaml
//易知提供了一个core-network.py 的脚本
由于我们不需要NRF因此运行如下命令
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed/docker-compose# python3 ./core-network.py --type start-mini --scenario 1
[2022-09-06 20:07:59,726] root:DEBUG: Starting 5gcn components... Please wait....
[2022-09-06 20:07:59,726] root:DEBUG: docker-compose -f docker-compose-mini-nrf.yaml up -d
[+] Running 6/6
⠿ Container oai-nrf Started 10.9ss
⠿ Container mysql Running 0.0s
⠿ Container oai-amf Started 11.2ss
⠿ Container oai-smf Started 11.8ss
⠿ Container oai-spgwu Started 12.2ss
⠿ Container oai-ext-dn Started 12.6sss
[2022-09-06 20:08:12,695] root:DEBUG: OAI 5G Core network started, checking the health status of the containers... takes few secs....
[2022-09-06 20:08:12,695] root:DEBUG: docker-compose -f docker-compose-mini-nrf.yaml ps -a
[2022-09-06 20:08:24,893] root:DEBUG: All components are healthy, please see below for more details....
NAME COMMAND SERVICE STATUS PORTS
mysql "docker-entrypoint.s…" mysql running (healthy) 3306/tcp, 33060/tcp
oai-amf "/bin/bash /openair-…" oai-amf running (healthy) 80/tcp, 9090/tcp, 38412/sctp
oai-ext-dn "/bin/bash -c ' ip r…" oai-ext-dn running
oai-nrf "/bin/bash /openair-…" oai-nrf running (healthy) 80/tcp, 9090/tcp
oai-smf "/bin/bash /openair-…" oai-smf running (healthy) 80/tcp, 8080/tcp, 8805/udp
oai-spgwu "/bin/bash /openair-…" oai-spgwu running (healthy) 2152/udp, 8805/udp
[2022-09-06 20:08:24,894] root:DEBUG: Checking if the containers are configured....
[2022-09-06 20:08:24,894] root:DEBUG: Checking if AMF, SMF and UPF regtered with nrf core network....
[2022-09-06 20:08:24,894] root:DEBUG: curl -s -X GET http://192.168.70.130/nnrf-nfm/v1/nf-instances?nf-type="AMF" | grep -o "192.168.70.132"
192.168.70.132
[2022-09-06 20:08:24,926] root:DEBUG: curl -s -X GET http://192.168.70.130/nnrf-nfm/v1/nf-instances?nf-type="SMF" | grep -o "192.168.70.133"
192.168.70.133
[2022-09-06 20:08:24,933] root:DEBUG: curl -s -X GET http://192.168.70.130/nnrf-nfm/v1/nf-instances?nf-type="UPF" | grep -o "192.168.70.134"
192.168.70.134
[2022-09-06 20:08:24,940] root:DEBUG: AMF, SMF and UPF are registered to NRF....
[2022-09-06 20:08:24,940] root:DEBUG: Checking if SMF is able to connect with UPF....
[2022-09-06 20:08:25,089] root:DEBUG: UPF receiving heathbeats from SMF....
[2022-09-06 20:08:25,089] root:DEBUG: OAI 5G Core network is configured and healthy....
root@phoenix-VirtualBox:/home/phoenix/OAI/oai-cn5g-fed/docker-compose# docker ps
//如上命令可以知道现在docker的状态,一共有如下6个容器在工作
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c2b117b38ea8 trf-gen-cn5g:latest "/bin/bash -c ' ip r…" About a minute ago Up About a minute oai-ext-dn
5b24c377081d oai-spgwu-tiny:v1.4.0 "/bin/bash /openair-…" About a minute ago Up About a minute (healthy) 2152/udp, 8805/udp oai-spgwu
3a926bd3cdad oai-smf:v1.4.0 "/bin/bash /openair-…" About a minute ago Up About a minute (healthy) 80/tcp, 8080/tcp, 8805/udp oai-smf
1c1c499e1fb6 oai-amf:v1.4.0 "/bin/bash /openair-…" About a minute ago Up About a minute (healthy) 80/tcp, 9090/tcp, 38412/sctp oai-amf
95ecc6e96483 oai-nrf:v1.4.0 "/bin/bash /openair-…" About a minute ago Up About a minute (healthy) 80/tcp, 9090/tcp oai-nrf
feb18e23f53c mysql:5.7 "docker-entrypoint.s…" 45 minutes ago Up 45 minutes (healthy) 3306/tcp, 33060/tcp
芜湖~核心网成功启动。接下来就是虚拟基站和UE的部署配置。