free5gc的安装与测试

作者:Yian
时间:2022年 11月 29日
内容简介:free5gc开发环境的搭建以及运行基本测试。

参考资源:free5gc GitHub仓库、互联网博客。
(如侵权烦请联系删除)

环境要求

以下来自free5gc的GitHub官方仓库document

  • 软件要求
    • OS: Ubuntu 18.04
    • gcc 7.3.0
    • Go 1.14.4 linux/amd64
    • kernel version 5.0.0-23-generic or 5.4.x

The listed kernel version is required for the UPF element.

  • 最小硬件要求
    • CPU: Intel i5 processor
    • RAM: 4GB
    • Hard drive: 160GB
    • NIC: Any 1Gbps Ethernet card supported in the Linux kernel
  • 推荐硬件要求
    • CPU: Intel i7 processor
    • RAM: 8GB
    • Hard drive: 160GB
    • NIC: Any 10Gbps Ethernet card supported in the Linux kernel

This guide assumes that you will run all 5GC elements on a single machine.

我的环境

  • 软件环境
    • OS: Ubuntu 18.04
    • Go 1.14.4 linux/amd64
    • kernel version 5.4.0-132-generic
    • VMware 16 Pro
  • 硬件环境
    • CPU: Intel i5-8265U 虚拟机分配:2核
    • RAM: 8GB 虚拟机分配:2G
    • Hard drive: 500GB 虚拟机分配:35G

其中,Ubuntu版本与内核版本最好与官方一致。
若你是从一个新的虚拟机环境中开始安装,推荐安装Ubuntu18.04并检查内核版本是否符合要求,然后安装下节基础环境配置,配置基本Linux开发环境。

基础环境配置

若你不是从一个新的环境中进行安装,可选择忽略本节中的内容。

设置root用户

sudo passwd root # 输入后系统提示设置root用户密码,输入两次创建完成

更换镜像源

cd /etc/apt # 进入 /etc/apt 目录
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup # 备份 sources.list 文件
sudo vi /etc/apt/sources.list # 打开 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 进行更新

sudo apt-get update
sudo apt-get upgrade

开启SSH服务

sudo apt-get install openssh-server # 安装ssh服务

sudo vim /etc/ssh/sshd_config # 将Port前面的#注释去掉,开启22端口,
StrictModes修改为yes,并去掉前面的#注释
并在#PermitRootLogin prohibit-password下一行添加PermitRootLogin yes

sudo /etc/init.d/ssh restart # 重启服务

GitHub加速

nslookup github.com # 在终端中输入,查询GitHub的Address
nslookup github.global.ssl.fastly.net # 查询github.global.ssl.fastly.net的Address
sudo vim /etc/hosts # 编辑host文件

在host文件末尾追加以下内容,其中ip地址更换为你上面获得的Address

#Github
20.205.243.166 http://github.com
20.205.243.166 https://github.com

31.13.86.21 http://github.global.ssl.fastly.net
31.13.86.21 https://github.global.ssl.fastly.net
2001::c710:9eab http://github.global.ssl.fastly.net
2001::c710:9eab https://github.global.ssl.fastly.net

再刷新缓存

sudo /etc/init.d/networking restart # Ubuntu18.04使用
sudo service network-manager restart # Ubuntu20.04使用,若找不到命令,用第三条
sudo netplan apply # 第二条失效时

Go安装

若你已经安装go且使用go version检查go语言版本若不为1.14.4,则需要卸载早前版本

# this assumes your current version of Go is in the default location
sudo rm -rf /usr/local/go

若你还没有安装go,根据以下命令可安装与配置go环境变量

wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
sudo tar -C /usr/local -zxvf go1.14.4.linux-amd64.tar.gz
mkdir -p ~/go/{
    
    bin,pkg,src}
# The following assume that your shell is bash
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin:$GOROOT/bin' >> ~/.bashrc
echo 'export GO111MODULE=auto' >> ~/.bashrc
source ~/.bashrc

执行命令后可使用go version检查是否安装成功

free5gc前置环境配置

控制面依赖安装

sudo apt -y update
sudo apt -y install mongodb wget git
sudo systemctl start mongodb # 这步时间会稍微长一点

用户面依赖安装

sudo apt -y update
sudo apt -y install git gcc g++ cmake autoconf libtool pkg-config libmnl-dev libyaml-dev

Ubuntu主机网络设置

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o <dn_interface> -j MASQUERADE # <dn_interface>为你的网卡,如ens33,不带括号
sudo iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400
sudo systemctl stop ufw

free5gc安装

两种方式

1.手动安装,参考资料:

GitHub仓库官方文档
【Free5GC】环境安装搭建-LFTF-CSDN博客
我在上述方式的安装过程中遇到过各式各样的问题,最后一次问题出在make时的security error,所以更推荐用下面方式,我把编译好的代码文件放在了仓库。

2.下载我基于官方仓库已编译过NFs目录的代码安装(推荐,更方便)

git clone https://github.com/NanshanTaotao/Free5gc-Pre-make.git # 下载失败可以科学上网下载zip解压
cd free5gc
unzip gtp5g.zip # 解压gtp
cd gtp5g
sudo make
sudo make install # 安装gtp
lsmod | grep gtp # 测试安装状态

测试安装状态

cd ~/free5gc
./test.sh TestRegistration # 如果出现pass字段则说明安装成功

下面是执行完输出的末尾部分,可以看到PASS字样

--- PASS: TestRegistration (9.43s)
PASS
ok  	test	11.083s
2022-11-29T21:26:19+08:00 [INFO][UPF][Main] Shutdown UPF ...
2022-11-29T21:26:19+08:00 [INFO][UPF][Pfcp][10.200.200.101:8805] Stopping pfcp server
2022-11-29T21:26:19+08:00 [ERRO][UPF][Pfcp][10.200.200.101:8805] read udp4 10.200.200.101:8805: use of closed network connection
2022-11-29T21:26:19+08:00 [INFO][UPF][Pfcp][10.200.200.101:8805] pfcp reciver stopped
2022-11-29T21:26:19+08:00 [INFO][UPF][Pfcp][10.200.200.101:8805] pfcp server stopped
2022-11-29T21:26:19+08:00 [INFO][UPF][Buff] buff server stopped
2022-11-29T21:26:19+08:00 [INFO][UPF][Main] Terminating UPF...
2022-11-29T21:26:19+08:00 [INFO][UPF][Main] UPF terminated
2022-11-29T21:26:19+08:00 [INFO][UPF][Main] UPF exited

其中第6行的2022-11-29T21:26:19+08:00 [ERRO][UPF][Pfcp][10.200.200.101:8805] read udp4 10.200.200.101:8805: use of closed network connection
第六行read时抛出use of closed network connection根据GoLang TCP网络编程-简书以及我有限的go知识,在己方已经关闭的socket上再进行read和write操作,会得到”use of closed network connection” error。这个error我猜测是第五行已经关闭服务器了,在进行read操作导致的,这应该要修改执行顺序,我暂时没有那个能力。

猜你喜欢

转载自blog.csdn.net/Youcan39tl/article/details/128105966