构建指南:Free5gc

Free5GC 简介

img

free5GC 是第五代 (5G) 移动核心网络的开源项目。该项目的最终目标是实现 3GPP Release 15 (R15) 及更高版本中定义的 5G 核心网络 (5GC)。目前,主要贡献者来自国立阳明交通大学(NYCU)。

Free5GC采用当前较为流行的Go语言进行编写,在性能上会比传统基于C/C++编写的核心网更强,同时Free5GC有较多的国人与台湾同胞开发者,在语言沟通上、社区氛围更贴近国内开发者,因此Free5GC成为了部署核心网的一个优秀选项。

Free5GC的安装

Free5GC的安装包含三部分:其一是依赖库,其二是源码编译以及一个web端的核心网可视化管理页面。本文写于2024年8月,当你阅读到这时可能已经发生版本更新。但是这也没关系,你依然可以参考官方的 安装文档 进行最新版本的安装,我这里推荐使用v3.3.0版本的,因为这个版本经过测试可以在18.04至24.04的Ubuntu上工作。非v3.3.0版本安装,请严格参考官方的安装文档,否则会造成严重的问题!

前置依赖安装

  1. Golang 安装。Free5gc使用Go 1.17.8构建,因此需要先安装该版本的Golang,当然可以使用最新版的Go。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    wget https://dl.google.com/go/go1.17.8.linux-amd64.tar.gz
    sudo tar -C /usr/local -zxvf go1.17.8.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
  2. 数据库依赖 : Free5GC使用MongoDB作为数据库。从这一步开始,请再次确认你打算安装的Free5GC的版本,如果你确定使用v3.3.0版本,那么请继续往下;否则,请参考官方文档进行安装。

1
2
3
sudo apt -y update
sudo apt -y install mongodb wget git
sudo systemctl start mongodb
  1. 控制面依赖: 控制面依赖主要是为GTP相关模块的编译做准备的。使用如下命令安装编译GTP模块的依赖:
1
2
sudo apt -y update
sudo apt -y install git gcc g++ cmake autoconf libtool pkg-config libmnl-dev libyaml-dev

源码下载与编译

使用如下命令下载源代码。注意v3.3.0就是下载的Free5GC的版本。下载时,请保障下载的终端具备科学上网的能力,否则可能会出现部分网元子仓库下载但有些网元仓库没下载的情况。

1
2
3
cd ~
git clone --recursive -b v3.3.0 -j `nproc` https://github.com/free5gc/free5gc.git
cd free5gc

如果有仓库克隆失败,那么使用 sudo rm -rf free5gc 删除掉目录下free5gc文件夹重新运行上述命令重新下载。当所有代码下载成功后,下一步是编译相关代码。

1
2
cd ~/free5gc
make

注意如果出现了编译失败,有可能是在上一步的源码下载部分出现问题,也可能是代理终端出现问题:该项目的编译需要依赖一定的科学上网条件进行编译(很抽象,但这就是Golang)。当代码编译完成后,我们还需要再编译GTP模块。在编译GTP前,请注意关闭掉硬件中的安全启动选项,否则会编译失败:

1
2
3
4
5
cd ~
git clone -b v0.6.8 https://github.com/free5gc/gtp5g.git
cd gtp5g
make
sudo make install

WebConsole安装

Webconsole可用于增删改查UE注册信息,提供简单边界的操作接口管理核心网用户。使用如下命令安装前置,主要是NodeYarn

1
2
3
4
5
6
7
8
sudo apt install curl
sudo apt remove cmdtest
sudo apt remove yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get update
sudo apt-get install -y nodejs yarn

当一切就绪后,如下命令编译Webconsole:

1
2
cd ~/free5gc
sudo make webconsole

简单使用

使用如下的命令可以简单验证系统是否成功安装。

运行WebConsole

1
2
cd ~/free5gc/webconsole
./bin/webconsole

打开浏览器跳转至 http://127.0.0.1:5000端口,输入账户 admin和密码 free5gc,如果成功进入则说明控制台成功安装并运行。

image-20240810154423564

此时如果出现白屏,则有可能是部分资源未能成功从CDN处加载。挂上梯子后再刷新页面:

运行Free5gc核心网

新建一个终端,输入如下指令:

1
2
cd ~/free5gc
sudo ./run.sh

如果没有报错,则说明核心网启动无恙。不要关闭该终端,否则整个核心网会有部分网元停止运行。

run free5gc

退出Free5gc核心网

如果在启动Free5gc核心网时遇到问题,在按下ctrl+c后还需关闭掉其他的一些已启动的进程:

1
2
cd ~/free5gc
sudo ./force_kill.sh