OAI 5G核心网安装
文章目录
前言
在上一篇博客中使用OAI成功安装了gNB,接下来开始安装OAI的5G核心网。主要参考的教程如下:https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/README.md
PS:由于核心网时通过docker来部署的,如果不了解docker的话可能理解起来会比较吃力,最好还是先了解一下docker中的容器镜像这些概念的实现原理。
核心网和gNB是安装在不同的主机上的,这也是官方建议的配置,同一个主机上安装这两个还没有尝试过,建议第一次还是分两个主机安装,以避免不必要的麻烦。
核心网的主机用的也是Ubuntu18.04.06 ,硬件方面官方好像没有太高的要求,我的是i5-10500T的一体主机。
一、安装docker和docker compose
1、安装docker
官方给的教程是通过docker和docker compose这两个软件来安装的,所以要先安装这两个软件,这里给出docker的官网,以供参考https://www.docker.com/
可以通过docker官方的自动安装脚本来安装,打开终端运行如下命令
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
可能会比较慢,这个地方也可以使用国内的一些其他的源,安装起来会比较快,可以自行搜索。
安装完之后可以通过
sudo docker --version
查看是否安装成功,之后将可以将用户名加入到docker组中,这样以后在运行docker命令的时候就不用加sudo了。
sudo usermod -a -G docker oai-5gc
其中oai-5gc要换成你自己的用户名,可以通过自己运行一下尝试时候添加成功。
接下来需要在dockerhub上注册一个账号,https://hub.docker.com/
2、安装docker compose
这部分的安装同样可以参考上一步中的docker官网的教程。
通过脚本安装docker compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
其中1.27.4是版本号,这个版本是OAI官网给的版本,如果后期有变化可以自行更改
官方地址如下
https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docs/DEPLOY_SA5G_MINI_DS_TESTER_DEPLOYMENT.md
安装完之后将docker compose的二进制文件应用可执行权限,并且创建软连接
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
最后也可以通过 docker compose - -version命令查看是否安装成功。
3、python
还需要一个至少3.6版本以上的python,这个一般在Ubuntu里好像会自带,通过以下命令查看版本。
python3 --version
二、下载镜像
首先通过命令行登录刚注册的dockerHub账号。
之后一个一个的下载相应的镜像文件,如果有中断,可以尝试重复运行
$docker login
$docker pull ubuntu:bionic
$docker pull mysql:5.7
$docker pull rdefosseoai/oai-amf:latest
$docker pull rdefosseoai/oai-nrf:latest
$ docker pull rdefosseoai/oai-spgwu-tiny:latest
$ docker pull rdefosseoai/oai-smf:latest
$ docker pull rdefosseoai/oai-udr:latest
$ docker pull rdefosseoai/oai-udm:latest
$ docker pull rdefosseoai/oai-ausf:latest
$ docker pull rdefosseoai/oai-upf-vpp:latest
之后对下载的镜像重命名,方便操作
$ docker image tag rdefosseoai/oai-amf:latest oai-amf:latest
$ docker image tag rdefosseoai/oai-nrf:latest oai-nrf:latest
$ docker image tag rdefosseoai/oai-smf:latest oai-smf:latest
$ docker image tag rdefosseoai/oai-spgwu-tiny:latest oai-spgwu-tiny:latest
$ docker image tag rdefosseoai/oai-udr:latest oai-udr:latest
$ docker image tag rdefosseoai/oai-udm:latest oai-udm:latest
$ docker image tag rdefosseoai/oai-ausf:latest oai-ausf:latest
$ docker image tag rdefosseoai/oai-upf-vpp:latest oai-upf-vpp:latest
之后记得退出登录
docker logout
三、下载5G核心网源码
git clone --branch v1.2.1 https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed.git
cd oai-cn5g-fed
git checkout -f v1.2.1
./scripts/syncComponents.sh
最后一歩的执行时间比较长,耐心等待,最后结果如下
四、运行核心网
首先切换到 oai-cn5g-fed/docker-compose 下,之后可以先运行以下命令查看帮助。
python3 core-network.py --help
如下图所示
之后可以根据自己的需要运行相应的命令,我以简单的为例,命令和结果如下,之后可以通过docker ps命令来查看正在运行的容器。或者ifconfig命令查看docker运行起来的各个容器的网络接口
python3 ./core-network.py --type start-mini --fqdn no --scenario 1
当需要停下核心网时,在之前可以保存各个容器的日志,命令如下:
docker logs oai-amf > amf.log
docker logs oai-smf > smf.log
docker logs oai-nrf > nrf.log
docker logs oai-spgwu > spgwu.log
python3 ./core-network.py --type stop-mini
日志文件还是保存在当前的文件夹下,即oai-cn5g-fed/docker-compose 文件夹下。
五、链接gNB
setp1
首先需要保证核心网主机和gNB主机在同一个局域网下,比如连在同一个路由器或者交换机下,即两台主机之间可以互相ping通,建议使用网线链接主机和路由器。
如果ping不通的话可能有如下几个原因:
1、没有处在同一个局域网下
2、两台主机的防火墙没关
3、可能路由器设置了IP隔离,禁止终端之间互相ping,我用的小米路由器就是这个问题。
step2
如果能够ping通之后,就要在gNB的主机上添加路由转发,命令如下:
sudo ip route add 192.168.70.128/26 via 192.168.28.153 dev eno1;
其中192.168.70.128/26是核心网通过docker 创建的网桥的地址,一般如果不修改docker file的参数,这个不用改,
192.168.28.153是核心网主机的地址
eno1是有线网卡的名字
另外注意一下添加路由的命令是一次性,即在关机重启之后就失效了,需要重新添加。
step3
在核心网主机上设置网络参数,命令如下:
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT
同样要注意以上的命令也是一次性的,重启之后就需要重新添加。
step4
分别设置完两台主机的参数后就可以测试一下,先把核心网主机的核心网启动起来,之后通过gNB主机来ping核心网中的各个容器。各个容器的地址如下,以及结果如下:
step5
上面的步骤都没问题后就可以尝试运行gNB了,
首先把核心网运行起来,之后在gNB主机上运行一下命令:
cd cmake_targets/ran_build/build
sudo ./nr-softmodem -E --sa -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
运行结果如下:
【notice】 这一步如果遇到未发现设备的问题可以尝试在运行的命令中加 -E,即运行下面的命令:
sudo -E ./nr-softmodem -E --sa -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
最后在贴一下核心网主机和gNB主机之间的链接框架图
六、总结
以上就是关于使用OAI搭建5G核心网的过程,由于目前还没有进行到手机白卡的阶段,所以在核心网配置的时候并没有将自己白卡的信息填入到核心网的数据库的过程,如果有需要的朋友可以自行查看开头给出的官方教程链接。
下一步应该就需要烧写白卡了,如果成功的话应该也会相应的记录下来,祝我好运。
道阻且长,道路是曲折的,前途是光明的!