现在我们对VPP的掌握正在逐步深入,但是通过上次的分析,我们应该把VPP主机的网络适配器类型配置为VMXNET3,以最大限度提升网络性能。

所以现在我们把VPP主机网卡数量修改为3个,NIC1用作管理接口,NIC2用作WAN口,NIC3用于LAN口。

VPP二层接口,不是翻墙_重启

这里有没有发现一个问题,那就是分明配置了VPP的接口,但是一重启配置就丢了,DPDK纳管的网卡就不见了。

VPP二层接口,不是翻墙_linux_02

难道是DPDK配置不见了?不是的,/etc/vpp/startup.conf中关于DPDK的配置还在。

VPP二层接口,不是翻墙_网络_03


那是为什么呢?

还要回到/etc/vpp/startup.conf这个启动配置文件上,该文件保存了VPP的启动参数,还有要调用的配置或命令等信息。

VPP二层接口,不是翻墙_配置文件_04

前面我们提到,在默认情况下,为了让VPP将接口绑定到 DPDK,我们需要将对应的接口DOWN掉,然后通过在VPP配置文件中绑定接口对应的PCI地址来绑定到DPDK。但是,前面通过命令操作的配置属于易失性配置,重启之后就不在了,也就是说,即使我们把接口DOWN掉了,但是重启后接口还是会UP起来。

那怎么解决呢?

比较简单的是使用开机自运行脚本,也就是修改/etc/rc.d/rc.local文件。我们在该文件中写入两条命令,用于DOWN掉接口ens224和ens256。

ip link set ens224 down

ifconfig ens256 down

重启主机试一下。

VPP二层接口,不是翻墙_重启_05

可以看到,接口ens224已经不见了,因为已经被DPDK纳管了。而接口ens256状态是DOWN,这部分配置还没加。

VPP二层接口,不是翻墙_配置文件_06

这里也可以看到链路速率为10 Gbps,网卡类型为VMXNET3。我们翻一下上次的网卡。

VPP二层接口,不是翻墙_配置文件_07

对比可以看到,使用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

修改完成之后重启主机,测试一下。

VPP二层接口,不是翻墙_配置文件_08

翻车了,只是地址没有了,但是接口还是UP的。

好的,我们回到第一种方法。

接下来需要将作为LAN口的ens256也绑定到DPDK中。

dpdk    {

        dev 0000:13:00.0        {

                name eth1

                }

        dev 0000:1b:00.0        {

                name eth2

                }

}

现在接口已经纳管好了。

VPP二层接口,不是翻墙_服务器_09

但是接口状态还是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

查看接口状态。

VPP二层接口,不是翻墙_配置文件_10

测试一下访问状况。

VPP二层接口,不是翻墙_配置文件_11

核对ARP信息。

VPP二层接口,不是翻墙_网络_12

没有问题。

下一个问题,就是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

VPP二层接口,不是翻墙_网络_13

重启测试一下。

VPP二层接口,不是翻墙_配置文件_14

OK,状态正常。