先将vpp_arm64.tar.gz复制到目标机器上进行解压,解压后的目录构造如下:
root@localhost-Technical-B:~/vpp/vpp# lsbin dpaa2 vpp_readme include install.sh kmod lib share startup.conf usertools vpp_papi-1.6.2-py2.7.egg
首先阅读vpp_readme,可根据该文档进行安装。
安装时须要运行install.sh脚本,该脚本紧张把该目录下的文件拷贝到目的安装路径,并设置环境变量。利用如下命令进行安装:

chmod +x install.sh./install.sh /mnt/
环境准备绑定dpdk网口
dynamic_dpl.sh dpmac.4export DPRC=dprc.2
驱动模块加载若须要开启kni功能,则须要加载rte_kni.ko模块,利用如下命令加载:insmod rte_kni.ko carrier=on须要把稳的是carrier=on在dpdk18.05版本后不能省略,由于dpdk18.05版本后carrier默认为off。若不须要开启kni功能,则须要确保rte_kni.ko模块已经被卸载利用如下命令查看rte_kni.ko是否存在lsmod | grep rte_kni若存在则利用如下命令进行卸载:rmmod rte_knivpp配置文件
vpp配置文件与vpp配置同等,可直接参考vpp startup.conf干系配置(包括kni)。
线程参数cpu { main-core 4 corelist-workers 5}一样平常利用一个main线程和一个worker线程。dpdk参数dpdk { ## Change default settings for all intefaces huge-dir /mnt/hugepages no-pci num-mem-channels 1 # kni count #kni 1 dev default { ## Number of receive queues, enables RSS ## Default is 1 num-rx-queues 1 num-rx-desc 40960 #num-rx-desc 65536 rss { ipv4 } ## Number of transmit queues, Default is equal ## to number of worker threads or 1 if no workers treads num-tx-queues 1 } proc-type primary log-level 7}个中须要特殊留神的是num-rx-desc,该值是dpdk的环形收包缓冲区大小,若设置过小会导致dpdk丢包。按当前测试结果来看40960为最优值,若大流量时涌现大量rx-errors可适当增大该值。其余若须要启用kni功能,直接在dpdk配置中添加kni count即可,个中count是要支持kni的网口个数。kni网口个数依赖于实际的物理网口个数,kni个数无法超过实际物理网口个数。即kni是与物理网口逐一对应的。插件参数plugins { ## Adjusting the plugin path depending on where the VPP plugins are path /path/lib/vpp_plugins vat-path /path/lib/vpp_api_test_plugins plugin default { enable } plugin gtpu_plugin.so { disable }}插件配置中需指明vpp_plugins的路径,其余需将原生的gtpu插件禁用。kni配置和利用配置当启用kni功能时,对付一个物理网口来说,除vpp本身进行数据包处理外,还会在操作系统中虚拟出一个网口,一样平常命名为vEth0,个中0跟随kni个数增加。对付虚拟出来的网口可利用linux下的ifconfig、ethtool工具对其进行配置。可以将其当作正常的物理网口来利用。查看查看kni统计信息,可直策应用vppctl工具。vpp# show int Name Idx State MTU (L3/IP4/IP6/MPLS) Counter CountTenGigabitEthernet0 1 up 1500/0/0/0local0 0 down 0/0/0/0----------------------------------------------------------------------------------------------------vEth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9216 inet 121.168.1.12 netmask 255.255.255.0 broadcast 121.168.1.255 inet6 fe80::b0c4:a3ff:feba:2ddf prefixlen 64 scopeid 0x20<link> ether b2:c4:a3:ba:2d:df txqueuelen 1000 (Ethernet) RX packets 8 bytes 708 (708.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 16 bytes 1364 (1.3 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0vpp# show int addrTenGigabitEthernet0 (up): L3 192.168.8.25/16local0 (dn):----------------------------------------------------------------------------------------------------vEth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9216 inet 121.168.1.12 netmask 255.255.255.0 broadcast 121.168.1.255 inet6 fe80::b0c4:a3ff:feba:2ddf prefixlen 64 scopeid 0x20<link> ether b2:c4:a3:ba:2d:df txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 10 bytes 796 (796.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0分流分流是指须要决定一个报文是该送往kni经内核协议栈处理,还是该送往vpp由用户态协议栈处理。当前默认分流原则为GTPU报文送往用户态协议栈,非GTPU报文送往内核协议栈。因当前无其他分流策略,暂时不支持分流策略配置,均采取默认分流策略。须要特殊把稳的是,当前kni和vpp可以配置相同的ip,也可以配置不同的ip。但kni和vpp的网口物理地址必须相同。