一、环境
操作系统: Centos7.4
VPP版本: 20.09
设置阿里云镜像源
注:由于centos官方源下载rpm太慢,vpp依赖的rpm包有几百个,所以选择阿里云镜像源
更新centos-base源参考
https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11gE0rea
更新epel源参考
https://developer.aliyun.com/mirror/epel?spm=a2c6h.13651102.0.0.3e221b11gE0rea
都选择RHEL 7版本
二、安装vpp
1.下载vpp-20.09版本
git clone -b stable/2009 https://github.com/FDio/vpp.git
如果速度太慢可以先把vpp从github上导入到码云,然后从码云下载
2.安装vpp依赖包
cd vpp-20.09
make install-dep
全部选y,安装完成后重启机器,这里重启是因为vpp会更新kernel到最新版本,可以通过 uname -a命令查看,不更新会影响dpdk编译安装
3.编译igb_uio驱动
这里是可选项,vpp利用dpdk收包,需要编译igb_uio这个网卡驱动,但是不做vpp也可以运行
有两种方式编译igb_uio驱动
方式一是手动编译安装dpdk的时候编译igb_uio驱动
方式二是修改配置文件,让vpp编译安装dpdk时编译igb_uio驱动,这里采用方式二,方式一可以自行百度,网上有很多教程
cd /home/vpp-20.09/build/external/packages
vi dpdk.mk
# 找到 $(call set,RTE_EAL_IGB_UIO,n)
# 把 n 改成 y 并保存退出
4.安装vpp相关依赖
make install-ext-deps
这里vpp会下载几个依赖的程序,例如dpdk
下载目录是 vpp-20.09/build/external/downloads 可以查看
vpp会把下载的程序压缩包解压编译安装并且制作成一个rpm包,安装包名称是 vpp-ext-deps-20.09-13.x86_64, 这里20.09-13会根据版本有变化
5.编译安装vpp
make build #编译debug版本
make build-release #编译发布版本
三、配置大页内存
大页内存不配置也可以运行,但是配置可以提高程序性能
这里只是举例,如果服务器内存很多那么配置越多越好,例如32G内存可以配置16个
vim /etc/default/grub
# 修改 GRUB_CMDLINE_LINUX 这一行并保存退出
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet default_hugepagesz=1G hugepagesz=1G hugepages=1"
# 在尾部添加了 default_hugepagesz(默认大页大小) hugepagesz(大页大小) hugepages(大页个数)
# 这里是设置了1个大页内存 大页内存大小是1G linux还支持2M的大页
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
# 通过/proc/meminfo 查看大页内存情况
cat /proc/meminfo
情况如图所示
总大页个数是1 剩余大页个数是1
四、运行VPP
运行vpp前需要了解vpp的可执行程序和配置文件,其次还有vpp运行时会遇到的错误和警告,这里以make build方式举例说明
1.vpp相关文件
编译过后会生成一些可执行程序和依赖的动态库
可执行程序在目录vpp-20.09/build-root/build-vpp_debug-native/vpp/bin
动态库在目录vpp-20.09/build-root/build-vpp_debug-native/vpp/lib
默认配置文件在目录vpp-20.09/build-root/install-vpp_debug-native/vpp/etc/vpp,名称为startup.conf
2.运行vpp
这里举例运行vpp并且指出运行vpp会遇到的问题和解决方法
2.1修改环境变量
vi /etc/profile
在尾部添加
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/include:/usr/local/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64
export CC=/opt/rh/devtoolset-9/root/bin/gcc
export CXX=/opt/rh/devtoolset-9/root/bin/g++
保存退出后执行 source /etc/profile
这里主要是主要是C_INCLUDE_PATH和LD_LIBRARY_PATH,指定程序默认搜索头文件和动态库的路径
CC和CXX是指定gcc和g++版本,这里是因为Centos7安装的gcc是4.8.5,通过更改环境变量CC和CXX可以更换gcc版本
2.2运行vpp
cd vpp-20.09/build-root/build-vpp_debug-native/vpp/bin #切换到vpp可执行程序目录
./vpp -c /home/vpp-20.09/build-root/install-vpp_debug-native/vpp/etc/vpp/startup.conf
这里是默认配置文件运行vpp
2.3动态库找不到错误解决
找不到是因为vpp生成的动态库不在程序搜索的目录下
cd vpp-20.09/build-root/build-vpp_debug-native/vpp/lib
cp -r * /usr/local/lib # 拷贝所有动态库到系统默认目录下
2.4vpp用户组不存在错误
添加vpp用户组即可
groupadd vpp
2.5vpp日志文件创建失败
原因是因为/var/log/vpp目录不存在
mkdir -p /var/log/vpp
2.6vpp证书警告
这个只是警告,不影响运行,但是还是消除掉比较好
cd /etc/ssl/certs/
./make-dummy-cert ca-certificates.crt
2.7运行vpp命令行界面
vpp通过命令行界面与vpp进行交互,可以查看和设置各种内容,留着以后讲解
前提是vpp已经运行了,新开一个终端
cd vpp-20.09/build-root/build-vpp_debug-native/vpp/bin
./vppctl -s /run/vpp/cli.sock
出现这个界面就算成功了
至此vpp已经算是安装好了,并且可以运行,后期将会讲解vpp配置文件