现在我们对VPP的掌握正在逐步深入,但是通过上次的分析,我们应该把VPP主机的网络适配器类型配置为VMXNET3,以最大限度提升网络性能。
所以现在我们把VPP主机网卡数量修改为3个,NIC1用作管理接口,NIC2用作WAN口,NIC3用于LAN口。
这里有没有发现一个问题,那就是分明配置了VPP的接口,但是一重启配置就丢了,DPDK纳管的网卡就不见了。
难道是DPDK配置不见了?不是的,/etc/vpp/startup.conf中关于DPDK的配置还在。
那是为什么呢?
还要回到/etc/vpp/startup.conf这个启动配置文件上,该文件保存了VPP的启动参数,还有要调用的配置或命令等信息。
前面我们提到,在默认情况下,为了让VPP将接口绑定到 DPDK,我们需要将对应的接口DOWN掉,然后通过在VPP配置文件中绑定接口对应的PCI地址来绑定到DPDK。但是,前面通过命令操作的配置属于易失性配置,重启之后就不在了,也就是说,即使我们把接口DOWN掉了,但是重启后接口还是会UP起来。
那怎么解决呢?
比较简单的是使用开机自运行脚本,也就是修改/etc/rc.d/rc.local文件。我们在该文件中写入两条命令,用于DOWN掉接口ens224和ens256。
ip link set ens224 down ifconfig ens256 down
重启主机试一下。
可以看到,接口ens224已经不见了,因为已经被DPDK纳管了。而接口ens256状态是DOWN,这部分配置还没加。
这里也可以看到链路速率为10 Gbps,网卡类型为VMXNET3。我们翻一下上次的网卡。
对比可以看到,使用E1000e时网卡型号显示为Intel 82540EM,速率为1 Gbps,没说错吧?
当然,我们再测试一下另一种方法。网卡随主机一同启动,是因为配置文件中有一行配置ONBOOT=yes,我们把随主机启动修改为no是不是可以呢?
将接口ens224的配置文件/etc/sysconfig/network-scripts/ifcfg-ens224修改如下,ens256类似。
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="no" IPV4_FAILURE_FATAL="no" NAME="ens224" DEVICE="ens224" ONBOOT=no
修改完成之后重启主机,测试一下。
翻车了,只是地址没有了,但是接口还是UP的。
好的,我们回到第一种方法。
接下来需要将作为LAN口的ens256也绑定到DPDK中。
dpdk { dev 0000:13:00.0 { name eth1 } dev 0000:1b:00.0 { name eth2 } }
现在接口已经纳管好了。
但是接口状态还是DOWN的,先配置WAN口eth1。
vppctl set interface state eth1 up vppctl set interface ip address eth1 192.168.1.88/24
为了配置LAN接口eth2为二层口,首先创建一个环回口loop0。
vppctl loopback create-interface vppctl set interface l2 bridge loop0 1 bvi vppctl set interface ip address loop0 192.168.2.89/24 vppctl set interface state loop0 up
然后将接口loop0和eth2绑定到同一个网桥下。
vppctl set interface l2 bridge eth2 1 vppctl set interface state eth2 up
查看接口状态。
测试一下访问状况。
核对ARP信息。
没有问题。
下一个问题,就是VPP中的配置也是易失的,重启之后就没有了,我们要把它写到配置文件中。
[root@localhost ~]# vi /etc/vpp/init.dat set interface state eth1 up set interface ip address eth1 192.168.1.88/24 loopback create-interface set interface l2 bridge loop0 1 bvi set interface ip address loop0 192.168.2.89/24 set interface state loop0 up set interface l2 bridge eth2 1 set interface state eth2 up
重启测试一下。
OK,状态正常。