vpp的安装
环境
- ubuntu20.04、ubuntu22.02、debian11
- vmware
命令行安装vpp
- 更新:
sudo apt-get update
获取PackageCloud vpp 安装脚本
curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | sudo bash ##获取key: curl -L https://packagecloud.io/fdio/master/gpgkey | sudo apt-key add - ## 查看vpp的deb包(如果没有,则不能安装) apt list vpp*
- 安装软件包
## 安装必要的包:
apt-get install vpp vpp-plugin-core vpp-plugin-dpdk
# 安装可选包:
apt-get install vpp-api-python python3-vpp-api vpp-dbg vpp-dev
查看vpp是否安装成功
$ systemctl status vpp ● vpp.service - vector packet processing engine Loaded: loaded (/lib/systemd/system/vpp.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2023-7-11 16:32:02 CST; 19h ago Main PID: 39699 (vpp_main) Tasks: 12 (limit: 11833) Memory: 69.3M CPU: 19h 13min 25.230s CGroup: /system.slice/vpp.service └─39699 /usr/bin/vpp -c /etc/vpp/startup.conf
表明vpp已经启动,配置文件为/etc/vpp/startup.conf
。
编译安装VPP
下载源码
git clone https://github.com/FDio/vpp.git fdio-vpp cd fdio-vpp
切换分支(用最近发布的2306版本)
git branch -a git checkout -b stable_2306 remotes/origin/stable/2306
编译vpp源码
# 首次编译建议用这个方式,会所有的依赖统一都安装好。 ./extras/vagrant/build.sh
或者分步执行:
##分步执行的命令 make install-dep make install-ext-deps ##编译release版本 make build-release ##编译debug版本 make build ##build deb包 make pkg-deb
最后安装所有的deb包:
dpkg -i build-root/*.deb
至此,编译工作全部完成,可以用systemctl status vpp
看下运行的状态,或者看到有一个进程/usr/bin/vpp -c /etc/vpp/startup.conf
在运行。
接口的显示
修改
/etc/vpp/startup.conf
,将要加载进vpp的网卡的pci添加进去:dpdk { dev 0000:13:00.0 dev 0000:0b:00.0 }
命令
lshw -class network -businfo
可以查看接口以及pci的对应关系,将不需要的接口down掉,加入vpp$lshw -class network -businfo WARNING: you should run this program as super-user. Bus info Device Class Description =========================================================== pci@0000:03:00.0 network VMXNET3 Ethernet Controller pci@0000:04:00.0 network VMXNET3 Ethernet Controller pci@0000:0b:00.0 network VMXNET3 Ethernet Controller pci@0000:13:00.0 ens224 network VMXNET3 Ethernet Controller pci@0000:1b:00.0 network VMXNET3 Ethernet Controller
重启vpp,vpp中可以看到加的pci了
vpp# show int Name Idx State MTU (L3/IP4/IP6/MPLS) Counter Count GigabitEthernet13/0/0 2 down 9000/0/0/0 GigabitEthernetb/0/0 1 down 9000/0/0/0 local0 0 down 0/0/0/0
踩坑记录
./extras/vagrant/build.sh
编译报错
编译到ipsec.mib什么的(记不大清楚了),发现虚拟机的cpu占用率一直在增长,直到将其整个沾满,紧接着就是报错,当时虚拟机分配的运行内存是2G,将其增加到4G、6G都不行。最后一试,增加到8G,终于在那一块运行通过。
vpp起来之后,show int
看不到加入的接口
- 首先
show pci
,能看到加入的pci,但是driver是e1000
用的vmware是17,创建的虚拟机的驱动默认是e1000,看到创建成功时候的pci驱动是vfio-pci。 加载vfio-pci驱动
sudo modprobe vfio-pci # 该命令执行部执行均可,是让系统启动后自动加载驱动的 sudo echo 'vfio-pci' | sudo tee -a /etc/modules
加载完之后,重启vpp,还是没有接口
绑定pci
# 在vpp的编译目录下运行 sudo ./build-root/install-vpp-native/external/bin/dpdk-devbind.py --bind vfio-pci 0000:0b:00.0
加入之后
show pci
看到网卡驱动已经是vfio-pci类型了
show pci
Address Sock VID:PID Link Speed Driver Product Name Vital Product Data
0000:03:00.0 0 15ad:07b0 unknown vmxnet3
0000:0b:00.0 0 15ad:07b0 unknown vfio-pci
0000:13:00.0 0 15ad:07b0 unknown vfio-pci
尽管如此,show int
还是看不到接口。
- 看到网上,需要将虚拟化需要打开
虚拟机右击--->设置--->处理器--->虚拟化引擎,将虚拟化Intel VT-X,和虚拟化IOMMU打开。重启虚拟机。
修改完还是不行。 修改网卡类型为vmxnet3
# 编辑虚拟机安装目录下的vmx文件,如下所示,将每个网卡类型改为vmxnet3 ethernet1.virtualDev = "vmxnet3"
重启虚拟机,重启vpp,至此可以了。
参考
https://s3-docs.fd.io/vpp/23.06/usecases/vmxnet3.html#vmware-...
https://packagecloud.io/fdio/2306/**install**
https://zhuanlan.zhihu.com/p/547995040
欢迎关注个人博客沟通交流 |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。