VPP平台是一个可扩展的框架,可提供开箱即用的生产质量交换机/路由器功能,对数据进行一些处理。
从git上拉取,这里选择1801的版本
git clone -b stable/1801 https://github.com/FDio/vpp.git
下载完成后,进行编译
./extras/vagrant/build.sh && make
编译完成后,会在build-root目录下,生成一些deb文件
执行以下命令进行安装
dpkg –i vpp-lib_18.01.2-1~g9b554f3_amd64.deb
dpkg –i vpp_18.01.2-1~g9b554f3_amd64.deb
dpkg –i vpp-dev_18.01.2-1~g9b554f3_amd64.deb
dpkg –i vpp-plugins_18.01.2-1~g9b554f3_amd64.deb
执行完成以后,查看/etc/vpp/startup.conf,如果生成了这个配置文件,并且在/usr/lib/vpp_plugins/下生成了一些.so文件,说明安装成功。
需要先查看自己网卡相关pci地址
lspci |grep Eth
02:04.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
03:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
0b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
13:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
其中,VMXNET3是之前做的多队列网卡,可以使用。
修改配置文件/etc/vpp/startup.conf
cpu {
main-core 0
}
unix {
# 如果需要使用 vppctl,需要 cli-listen /run/vpp/cli.sock
interactive cli-listen 127.0.0.1:5002
log /tmp/vpp.log
full-coredump
}
dpdk {
uio-driver igb_uio
dev 0000:03:00.0
dev 0000:0b:00.0
dev 0000:13:00.0
}
#这里vpp的测试运行依赖于uio 和igb_uio模块,igb_uio模块依赖于dpdk
export RTE_SDK=/home/hlp/dpdk/dpdk-stable-19.08.2
export RTE_TARGET=x86_64-native-linux-gcc
./usertools/dpdk-setup.sh #选择43
#配置内存
modprobe uio
#modprobe igb_uio
echo 4 >/sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages
echo 1024 >/sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
# 三个多队列网卡供dpdk vpp用,先将 eth0/eth1/eth2 关闭
ifconfig eth0 down
ifconfig eth1 down
ifconfig eth2 down
启动vpp进行测试
vpp -c /etc/vpp/startup.conf
如果启动成功,会出现以下画面
停止vpp
service vpp stop
通过添加一个插件,来熟悉vpp的命令与操作
添加插件之前,需要先运行进入vpp,配置好网卡的设置。
# 可以通过vppctl进入,操作vpp配置
vppctl
# 查看网络接口
vpp# show int
Name Idx State Counter Count
GigabitEthernet13/0/0 3 down
GigabitEthernet3/0/0 1 down
GigabitEthernetb/0/0 2 down
local0 0 down
#配置网卡和ip
vpp# set interface state GigabitEthernet13/0/0 up
vpp# set interface ip address GigabitEthernet13/0/0 192.168.0.119/24
# 再查看一次,有变化
vpp# show int
Name Idx State Counter Count
GigabitEthernet13/0/0 3 up rx packets 6
rx bytes 469
drops 6
ip4 4
ip6 1
GigabitEthernet3/0/0 1 down
GigabitEthernetb/0/0 2 down
local0 0 down
#配置vlan
vpp# create bridge-domain 10
bridge-domain 10
vpp# set interface l2 bridge GigabitEthernet3/0/0 10
vpp# create sub-interfaces GigabitEthernet3/0/0 10 dot1q 10
GigabitEthernet3/0/0.10
# 设置ip
ip addr add 192.168.3.128/24 dev vpp1host
ip addr show vpp1host
接下来是加入插件
# 拷贝插件代码,到./src/plugins目录下
```shell
ls pktdump
pktdump.c pktdump.h pktdump_node.c
第一步,在./src目录下,新增一个.am文件,是多线程的makefile,添加相应的头文件和源文件进行编译,可以拷贝已有.am文件进行修改。
vi pktdump.am
第二步,修改./src/configure.ac,增加编译选项
# 增加一句
PLUGIN_ENABLED(pktdump)
第三步,修改./src/plugins/Makefile.am,增加相应插件
if ENABLE_PKTDUMP_PLUGIN
include pktdump.am
endif
最后重新编译再运行
make wipe
make build
make run
注意要打开插件的“开关”
vpp# pktdump
这样即可运行。