基于vpp的开源upf-vpp编译

2023-03-07 17:12:48 浏览数 (1)

GTP-U User Plane Function (UPF) based on VPP。

本文主要讲解基于vpp的开源项目upg-vpp的编译安装运行。

1、 upg-vpp 开源地址:

在百度上搜索upf vpp会搜索到开源的项目,但是在readme介绍中,当前版本已经迁移到新的项目上并命名为upg-vpp。新的库不再包含vpp的代码:

代码语言:javascript复制
旧github地址:https://github.com/travelping/vpp/
新github地址:https://github.com/travelping/upg-vpp

2、下载

代码语言:javascript复制
git clone https://github.com/travelping/upg-vpp.git

3、编译及安装

进入upg-vpp目录执行make vpp 或make update-vpp,会下载vpp的源码。为了保证下载速度,vpp.spec文件中的把vpp路径修改成gitee.com网站的路径。

代码语言:javascript复制
#修改vpp.spec文件中VPP_REPO git路径:
VPP_COMMIT=53ec96777c32d610c7bc2d387d2c098749d49a18
#VPP_REPO=https://github.com/fdio/vpp.git
VPP_REPO=https://gitee.com/xxx/vpp.git
VPP_BRANCH=master
#执行make upte-vpp 
make update-vpp

执行命令make update-vpp会执行hack/update-vpp.sh脚本 下载vpp源码并打patch。

代码语言:javascript复制
20:44:49]root:upg-vpp$ cat hack/update-vpp.sh
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail

if [[ ${BASH:-} ]]; then
  # not compatible with alpine's sh
  set -o errtrace
  cd "$(dirname "${BASH_SOURCE}")/.."
fi

. vpp.spec
rm -rf vpp
git clone -b "${VPP_BRANCH}" -n "${VPP_REPO}"
(
  cd vpp
  git checkout -b downstream "${VPP_COMMIT}"
  git am ../vpp-patches/*
  cd src/plugins
  ln -s ../../../upf .
)

可以看到再vpp/src/plugins 目录下做了一个软连接。 具体如下:

代码语言:javascript复制
[20:46:57]root:vpp$ ls src/plugins/ -l | grep upf
lrwxrwxrwx  1 root root   12 Oct 15 19:46 upf -> ../../../upf

后面正常编译vpp就可以了。

代码语言:javascript复制
make install-dep
make build
make pkg-deb-debug
#打包完成后进入build-root 目录下安装:
dpkg -i *.deb

4、运行vpp,查询upf库是否启动:

我们可以看到upf插件已经加载完成。

代码语言:javascript复制
[20:51:06]root:usertools$ vppctl show plugins | grep upf
 11. upf_plugin.so                            20.09-rc0~284-gbf453f080

总结:

编译还是比较顺利的。upf库会依赖hyperscan,是在打patch的时候修改vpp Makefile文件。

0 人点赞