目标
本实验,用VPP接管网卡,获取VMnet8 分配的IP地址,使VPP可连接外网。
虚拟机设置
使能虚拟化引擎。
添加一个网卡,连接到虚拟机NAT网络。
AMD
Intel
启动VPP
分配大页内存
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
查看网卡PCI地址
进入VPP根目录,执行
build-root/build-vpp_debug-native/external/src-dpdk/usertools/dpdk-devbind.py -s
将ens33 down掉,ifconfig ens33 down
测试dpdk bind能否成功
build-root/build-vpp_debug-native/external/src-dpdk/usertools/dpdk-devbind.py --bind=vfio-pci 0000:02:01.0
绑定网卡报错
AMD CPU处理
跟iommu有关,找了好多方法都没成功,最后把VFIO 的iommu关了
echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
Intel CPU 处理
修改 /etc/default/grub
在GRUB_CMDLINE_LINUX
中加入如下配置:
iommu=pt intel_iommu=on
修改后更新
grub-mkconfig -o /boot/grub/grub.cfg
然后重启
查看 cat /proc/cmdline,已添加上
查看启动日志,iommu 已启用
提示 VFIO group is not viable! Not all devices in IOMMU group bound to VFIO or unbound
修改虚拟的.vmx文件,更改网卡类型为vmxnet3"
重新绑定
绑定成功后,解绑,写在配置文件中
build-root/build-vpp_debug-native/external/src-dpdk/usertools/dpdk-devbind.py -u 0000:02:01.0
VPP 配置文件
startup.conf
unix {
interactive
cli-listen /run/vpp/cli.sock
gid 0
}
dpdk {
dev 0000:02:01.0{
name eth0
}
}
api-trace {
on
}
socksvr {
default
}
cpu {
main-core 1
corelist-workers 2,3
}
buffers {
buffers-per-numa 128000
}
plugins {
plugin oddbuf_plugin.so { enable }
}
启动
make run
查看接口
show interface
将eth0 设置为up,启用dhcp client
ping 8.8.8.8 可以通
vpp 的ping命令不支持ping网址。
将启动命令放到配置文件中
startup.conf 中 增加 startup-config ./start_cli
unix {
interactive
cli-listen /run/vpp/cli.sock
gid 0
startup-config ./start_cli
}
dpdk {
dev 0000:02:01.0{
name eth0
}
}
api-trace {
on
}
socksvr {
default
}
cpu {
main-core 1
corelist-workers 2,3
}
buffers {
buffers-per-numa 128000
}
plugins {
plugin oddbuf_plugin.so { enable }
}
start_cli
comment { setup interface }
set interface state eth0 up
comment { start dhcp client }
set dhcp client intfc eth0