1.下载vpp源码
git clone https://gerrit.fd.io/r/vpp
git clone -b stable/2005 https://github.com/FDio/vpp.git 下载已经发布的版本
2.编译vpp
[1]make install-dep 下载vpp编译所需要的库
遇到的问题(1)
原因:版本冲突
解决办法:强制无支持卸载安装包
例:rpm -e --nodeps python36u-libs-3.6.7-1.ius.centos7.x86_64
把版本冲突的安装包全部卸载完,然后重新make install-dep
遇到的问题(2)
原因:为base-debuginfo获取存储库数据时出错,没有找到存储库
解决办法:与yum源有关 通过对比编译通过的虚拟机中的/etc/yum.repos.d/目录下的文件下的*.repo文件,在该目录下创建CentOS-Debuginfo.repo文件,并将CentOS-Debuginfo.repo文件中的内容全部复制过去
[2]make build
3.dpdk绑定接口
[1]加载绑定网卡的igb_uio.ko驱动
(1)进入vpp/build-root/build-vpp_debug-native/external/dpdk-20.02目录下
打开common_base文件,修改文件中的内容
(2)进入vpp/build/external/packages目录下
修改dpdk.mk文件(编vpp时编dpdk)
(3)进入vpp/build-root/build-vpp_debug-native/external/dpdk-20.02/x86_64-native-linuxapp-gcc/kmod目录下,查看是否有igb_uio.ko文件
modprobe uio
insmod igb_uio.ko 加载igb_uio.ko驱动
[2]绑定接口
在vpp/build-root/build-vpp_debug-native/external/dpdk-20.02/usertools目录下执行脚本dpdk-devbind.py
./dpdk-devbind.py --status 查看接口状态
./dpdk-devbind.py --bind=igb_uio.ko 接口名称
4.修改配置文件
在修改配置文件前要查看cpu的核数
lscpu
vim build-root/install-vpp_debug-native/vpp/etc/vpp/startup.conf(cpu核足够的情况下,如下配置)
unix {
# nodaemon
log /var/log/vpp/vpp.log
full-coredump
cli-listen 0.0.0.0:5002
# gid vpp
}
cpu {
main-core 1
workers 2
}
dpdk{
dev default{
num-rx-queues 3
num-tx-queues 3
num-rx-desc 512
num-tx-desc 512
vlan-strip-offload on
}
dev 0000:04:00.0
dev 0000:05:00.0
uio-driver vfio-pci
socket-mem 2048,2048
no-tx-checksum-offload
}
若cpu只有一个核,配置文件如下:
unix {
# nodaemon
log /var/log/vpp/vpp.log
full-coredump
cli-listen 0.0.0.0:5002
# gid vpp
}
dpdk{
dev default{
num-rx-queues 1
num-tx-queues 1
num-rx-desc 512
num-tx-desc 512
vlan-strip-offload on
}
dev 0000:04:00.0
dev 0000:05:00.0
uio-driver vfio-pci
socket-mem 2048,2048
no-tx-checksum-offload
}
5.启动vpp
[1]配置大页
cat /proc/meminfo 查看是否配置大页
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages 配置2G大页
[2]执行
在vpp/build-root/install-vpp_debug-native/vpp/bin目录下执行
./vpp -c …/etc/vpp/startup.conf
ps -aux | grep vpp 查看
telnet 0 5002进入vpp
show int 查看接口是否绑定成功
[3]执行遇到的问题
报错:api_segment_config : group vpp does not exist
修改startup.conf配置文件
报错:unix_config:468: couldn’t open log ‘/var/log/vpp/vpp.log’
创建/var/log/vpp这个目录
报错:api_segment_config: group vpp does not exist