VPP学习之路——VPP安装之超完整,必成功版;VPP命令
前言
- 安装过程中会有报错,问题解决方法在文末!!
- VPP运行于用户空间,支持多种收包方式,常用的收包工具是DPDK。
- 我安装vpp是想用dpdk+vpp+frr进行三层转发。
- vpp安装时候会安dpdk的tar包,部分版本的对应关系:
VPP | DPDK |
---|---|
Vpp 2110 | dpdk 21.8 |
Vpp 2210/2302 | dpdk 2207 |
Vpp 2306 | dpdk 2303 |
Vpp 2310 | dpdk 2307 |
我的dpdk是之前安装过的22.11,选了vpp:stable2210,感觉也没啥问题。
一、安装环境:
ubuntu:20.04
dpdk:22.11
vpp:stable2210
二、vpp安装时候会安dpdk的tar包,部分版本的对应关系:
Vpp 2110 dpdk 21.8
Vpp 2210/2302 dpdk 2207
Vpp 2306 dpdk 2303
Vpp 2310 dpdk 2307
我的dpdk是之前安装过的22.11,选了vpp:stable2210,感觉也没啥问题。
三、安装步骤
sudo权限下执行:
- 下载源码
git clone -b stable/2210 https://github.com/FDio/vpp.git
- 编译
cd vpp
./extras/vagrant/build.sh && make //执行vpp自带的脚本,所有环境都会准备好
VPP编译后,会自动下载dpdk的压缩包,目录:vpp/build/external/downloads,按照dpdk安装步骤安装即可,查看dpdk是否安装成功:
pkg-config --modversion libdpdk
- 脚本运行成功后会在在vpp/build-root目录下生成.deb的安装包:
使用dpkg -i依次安装框中的七个包:
先装1、2再装3,否则3会报错;剩余deb包可根据需要安装
dpkg -i libvppinfra-dev_24.02.0-8~g80e950381_amd64.deb
或者嫌一个个安装麻烦全安装了也行:
dpkg -i build-root/*.deb
-
执行完成以后,检查:
-
etc/vpp/下生成startup.conf文件
-
/usr/lib/x86_64-linux-gnu/vpp_plugins目录下生成.so动态库文件
-
配置dpdk运行环境
//这里vpp的测试运行依赖于uio 和igb_uio模块
modprobe uio
//igb_uio模块依赖于dpdk,我用dpdk插入igb_uio模块,可参考dpdk安装的相关介绍
insmod igb_uio.ko
//把dpdk要接管的网卡全部down掉
ifconfig eth0 down
ifconfig eth1 down
//配置巨页
echo 4 > /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
- 修改/etc/vpp/startup.conf配置文件
//查看ifconfig eth0 down中down掉的eth0的pci地址:
sudo lshw -class network -businfo
然后并把要用的pci地址加到startup.conf-dpdk里:
- 删除多余vpp进程
ps -aux | grep vpp ps -eaf | grep vpp kill -9
- 启动vpp
如果startup.conf 里面为cli-listen localhost:5002则:
启动vpp:sudo service vpp start(注:关闭服务service vpp stop、获取服务状态systemctl status vpp )
连接vpp:telnet 0 5002
如果startup.conf 里面为cli-listen /run/vpp/cli.sock则:
启动vpp:vpp -c /etc/vpp/startup.conf (通过-c选项加载配置文件)
连接vpp:vppctl -s /run/vpp/cli.sock或者直接vppctl
参考链接:
https://blog.csdn.net/qjh_serena/article/details/139639264
https://zhuanlan.zhihu.com/p/547995040
https://developer.aliyun.com/article/1404303
问题记录:
-
./extras/vagrant/build.sh编译报错
— building ipsec-mb 1.0 - log: /home/xingyp/vpp-new/build/external/deb/_build/ipsec-mb.build.log
**原因:**虚拟机的cpu占用率一直在增长,直到将其整个沾满, 应该是nasm使用内存过多然后oom了。
**解决方案:**虚机内存至少设置为8G;或者可以设置交换分区。
参考链接 -
unix_config:472: couldn’t open log ‘/var/log/vpp/vpp.log’
**解决方案:**mkdir /var/log/vpp(创建目录)
VPP命令
show int