UPF 编译安装

基本环境

本教程主要介绍如何在虚拟机上部署 OpenXG-UPF,虚拟机配置建议:

  • CPU:8 核及以上;

  • 内存:16GB 及以上;

  • 网卡:4 块,驱动为 e1000;

  • 操作系统:Ubuntu 18.04

虚拟机网络配置

以我机器为例,4 个虚拟网卡分别为:ens3、ens9、ens10、ens11。对不同网卡的功能进行划分,分别包括以下 4 个分类:

  1. gtpu_entry:ens9,IP 地址 192.168.10.10,该地址在脚本中配置,VPP 将该地址设置到网卡上,用于与基站对接;

  2. gtpu_export:ens10,IP 地址 192.168.30.10,该地址在脚本中配置,VPP 将该地址设置到网卡上,该地用于将去掉 GTP Header 的数据转发给 VppHost;

  3. VppHost:ens11,IP 地址 192.168.30.11,该地址手动配置在网卡上,收到 UE 的 IP 业务数据,进行 NAT 等转发操作。

  4. snatInter:ens3,IP 地址 192.168.122.80,由 DHCP 分配得到的 IP 地址,作为与互联网对接的出入口。

PS:由于部分 IP 地址在程序中写死,建议除 snatInter 端口以外,其他端口使用以上建议配置的 IP 地址。

img

编译安装

通过 Git 下载代码

git clone http://gitlab.openxg.org.cn/openxg/upf.git
cd ./upf/scripts/

依次执行以下命令编译安装不同组件部分:

# 安装程序所依赖的外部程序包库
./build_upf.sh --pre_install

img

# 安装 Golang 基本环境
./build_upf.sh --install_golang

安装完成之后,再次执行:

source ~/.bashrc
go env
./build_upf.sh --vpp ## 编译安装vpp,UPF数据面功能在该步骤编译完成;
./build_upf.sh --n4 ## 编译安装N4接口,主要PFCP相关。

配置与运行

主要配置文件位于 ./etc/ 目录下:

配置 gtpu_entry 和 gtpu_export

img

网卡名字的对应关系见图 1,system 和 startup 模块中,需要填写相应网卡的 PCI 值,查看 PCI 值,可以使用以下命令:

ethtool -i ens9
ethtool -i ens10

system 和 startup 模块中对应的值修改为 bus-info 值的后两位。

img

配置基站侧 IP 地址

gnb_gtpu_ip 为 gNB 的数据面 IP 地址。后续将删除该选项,改为程序自动配置。

配置 UE 的地址池

ueip 为 UE 的地址段、ueIPPrefix 为子网掩码位数。后续该字段修改为 uePool: 192.169.0.0/24 样式。

依次配置各网卡名称及 IP 地址

特别说明,下图中 vppHostIP,实际上是 gtpu_export 的 IP,后续将对各端口名字进行统一修改。

img

修改系统配置脚本路径

config_system 所对应的目录,修改为自己的目录。后续该目录将修改为自动配置模式。

配置 N4 接口各参数

img

运行 UPF

执行:

./run_upf.sh --start

运行成果后出现以下结果,程序进入后台运行。

后续将改为 ./run_upf.sh -o upf.conf 的方式加载配置文件。

img

执行:

./run_upf.sh --close 

可停止 UPF 运行。

参考

http://community.opensource5g.org/forum.php?mod=viewthread&tid=20&extra=page%3D1&_dsign=3ff9c983