【DPDK+PcapPlusPlus】配置踩坑记录

最近项目需要高性能的抓包工具,找到了Intel开发的DPDK框架以及开源项目PcapPlusPlus,以下记录一下从源码编译到运行例子的踩坑之路

环境:vmware15 + ubuntu16.04 + DPDK18.02 + PcapPlusPlus

DPDK配置与编译

下载DPDK

由于截止本文写作的时候,PcapPlusPlus的抓包功能最高只支持DPDK18.02版本,更高的版本在编译时会报错找不到头文件。DPDK18.02.2

配置libpcap

由于DPDK抓包需要libpcap,下载并解压libpcap。

按照文档安装后,需要将/usr/lib/usr/local/lib加入/etc/ld.so.conf文件中,并用ldconfig命令重置链接库的缓存,否则后续编译可能会发生找不到pcap.h文件的错误。

配置编译环境

配置大内存页

用root用户执行以预留大内存页,此处分配的是2M的大内存页

hugepages=1024
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

让DPDK使用大内存页,同样用root用户执行

mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

配置DPDK编译目标

DPDK支持多种平台(x86、x64、ARM),编译的目标由ARCH-MACHINE-EXECENV-TOOLCHAIN给出

ARCH can be: i686, x86_64, ppc_64, arm64
MACHINE can be: native, power8, armv8a
EXECENV can be: linuxapp,bsdapp
TOOLCHAIN can be: gcc, icc

在我的环境下,选择x86_64-native-linuxapp-gcc

# 配置编译目标
make config T=x86_64-native-linuxapp-gcc
# 编译
make

配置PcapPlusPlus

下载PcapPlusPlus

https://github.com/seladb/PcapPlusPlus

编译配置

运行PcapPlusPlus根目录下的configure-linux.sh,配置抓包方式为DPDK

配置抓包方式

运行setup-dpdk.sh绑定网卡设备到DPDK驱动,这会使linux内核丧失对该网卡的驱动,单网卡的情况下会断网

配置DPDK环境

编译

make all就好

运行PcapPlusPlus的样例程序

https://github.com/seladb/PcapPlusPlus/tree/master/Examples/DpdkExample-FilterTraffic

该样例程序使用DPDK抓包,并设置了基本的过滤选项

在虚拟机环境下,可能会出现EAL: Error reading from file descriptor 9: Input/output error错误,这是由于VMWare的虚拟网卡的问题。参考这里解决。

样例程序运行成功

你可能感兴趣的:(【DPDK+PcapPlusPlus】配置踩坑记录)