前提
做5Gc相关分析,却苦于没有环境和数据,于是使用free5Gc搭建一套5G核心网环境,方便后续工作的展开。
网上资料众说纷纭,有自行用go对于free5Gc进行编译的,也有使用kubernetes进行搭建的。但是,我期望:
-
搭建工作尽可能简单
-
不想引入不需要的东西,例如kubernetes里的replication control,pod,service等一系列的概念
所以,用docker-compose来搭建free5Gc无疑是最好的方法。记录搭建的整个流程如下。
1. 系统环境
在Ubuntu18.04虚拟机上搭建整套环境。而free5Gc需要的系统内核为5.0.0-23-generic(官方说是因为UPF的一个issue),所以首先需要进行切换内核的工作。
1.1 更新ap-get源
首先备份原/etc/apt/sources.list文件,然后再在新的/etc/apt/sources.list文件中,将源切换为阿里源。
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
再运行apt-get update更新源。
1.2 更换内核
apt-get install linux-image-5.0.0-23-generic
apt-get install linux-headers-5.0.0-23-generic
重启虚拟机后,uname -a可以查看当前的内核已经变更为5.0.0-23:
安装gtp5g:
git clone https://github.com/free5gc/free5gc-compose.git
cd gtp5g
make
sudo make install
2. 安装docker及docker-compose
sudo apt-get install docker.io
sudo apt-get install docker-compose
free5GC需要更高版本的docker-compose,所以先安装pip,再使用pip安装指定的docker-compose版本
sudo apt-get install python-pip
sudo pip install docker-compose==1.26.0
3. 安装free5Gc
git clone https://github.com/free5gc/free5gc-compose.git
cd free5gc
由于需要使用go语言相关功能,所以需要将代理切换为国内的代理。修改free5Gc/base/Dockerfile增加红线处配置:
sudo make base
sudo docker-compose build
sudo docker-compose up //直接运行
sudo docker-compose up -d //后台运行
4. 效果
可以看到,各个网元已经成功构建:
docker容器也都成功启动:
5. 使用UE/gNB进行连接
在我的环境中,AMF网元的IP为10.100.200.8(进入docker容器自行查看ip)。
Github上另外有一个开源项目:
https://github.com/hhorai/gnbsim
是一个开源的5G gNB/UE模拟器,可以用于验证5G核心网。
git clone https://github.com/hhorai/gnbsim&& cd gnbsim && cd example && go build
即编译完成。
在free5Gc的webui里,新建一个subscribers:(free5Gc启动后,webui容器会将自己的5000端口映射到宿主机的5000端口上,所以使用http://宿主机ip:5000即可以访问webui界面)。其默认的用户名和密码为:admin/free5gc。
修改example.json如下内容:
imeiisv:208930000000003(与新建的那个subscriber的UE ID保持一致)
msin:0000000003(与UEID后10位保持一致)
GTPuAddr:因为gnbsim就是运行在宿主机上,填写ubuntu 的IP即可
GTPuIFname:填写ubuntu的网卡即可
UE.url(启动一个web服务器,将UE.url指向这个Web服务器的url)
执行命令:sudo ./example -ip 10.100.200.8 即可以接入5G核心网。
整个gnbSim模拟了生成一个gNB和UE,并且使用UE打开了一个web页面的过程(即UE.url的值指向的web页面):
因为运行example后,会新建gtp-gnb虚拟网卡。如果再次测试,会提示设备忙。所以,如果需要再次测试,可以用命令:
sudo ip link delete gtp-gnb 删除之后,再进行测试。
来源:freebuf.com 2021-01-07 18:13:39 by: tammypi
请登录后发表评论
注册