# 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](http://community.opensource5g.org/data/attachment/forum/202012/25/140501k0dwcssaqfkcsxmi.png) ## 编译安装 通过 Git 下载代码 ``` git clone http://gitlab.openxg.org.cn/openxg/upf.git cd ./upf/scripts/ ``` 依次执行以下命令编译安装不同组件部分: ```bash # 安装程序所依赖的外部程序包库 ./build_upf.sh --pre_install ``` ![img](http://community.opensource5g.org/data/attachment/forum/202012/25/140604xirvivnhgjgarrgi.png) ```bash # 安装 Golang 基本环境 ./build_upf.sh --install_golang ``` 安装完成之后,再次执行: ```bash source ~/.bashrc go env ``` ```bash ./build_upf.sh --vpp ## 编译安装vpp,UPF数据面功能在该步骤编译完成; ``` ```bash ./build_upf.sh --n4 ## 编译安装N4接口,主要PFCP相关。 ``` ## 配置与运行 主要配置文件位于 ./etc/ 目录下: ### 配置 gtpu_entry 和 gtpu_export ![img](http://community.opensource5g.org/data/attachment/forum/202012/25/140714w0t3n3no29c3h129.png) 网卡名字的对应关系见图 1,system 和 startup 模块中,需要填写相应网卡的 PCI 值,查看 PCI 值,可以使用以下命令: ```bash ethtool -i ens9 ethtool -i ens10 ``` system 和 startup 模块中对应的值修改为 bus-info 值的后两位。 ![img](http://community.opensource5g.org/data/attachment/forum/202012/25/140748xmj92jcm49fxajdj.png) ### 配置基站侧 IP 地址 gnb_gtpu_ip 为 gNB 的数据面 IP 地址。后续将删除该选项,改为程序自动配置。 ### 配置 UE 的地址池 ueip 为 UE 的地址段、ueIPPrefix 为子网掩码位数。后续该字段修改为 `uePool: 192.169.0.0/24` 样式。 ### 依次配置各网卡名称及 IP 地址 特别说明,下图中 vppHostIP,实际上是 gtpu_export 的 IP,后续将对各端口名字进行统一修改。 ![img](http://community.opensource5g.org/data/attachment/forum/202012/25/140818dnwivdyidw25fmqe.png) ### 修改系统配置脚本路径 config_system 所对应的目录,修改为自己的目录。后续该目录将修改为自动配置模式。 ### 配置 N4 接口各参数 ![img](http://community.opensource5g.org/data/attachment/forum/202012/25/140841gk8w5aky8xwk8xgx.png) ### 运行 UPF 执行: ``` ./run_upf.sh --start ``` 运行成果后出现以下结果,程序进入后台运行。 后续将改为 `./run_upf.sh -o upf.conf` 的方式加载配置文件。 ![img](http://community.opensource5g.org/data/attachment/forum/202012/25/140906ouezenlgnxe0cied.png) 执行: ``` ./run_upf.sh --close ``` 可停止 UPF 运行。 ## 参考 http://community.opensource5g.org/forum.php?mod=viewthread&tid=20&extra=page%3D1&_dsign=3ff9c983