Featured image of post DPDK的pdump抓包

DPDK的pdump抓包

使用DPDK自带的pdump工具抓取DPDK流量

依赖安装与重新编译

若初次安装DPDK时没有安装依赖包libpcap,会导致编译安装后没有pdump工具,需要安装依赖包libpcap后重新编译安装DPDK

安装依赖包libpcap:

1
2
sudo apt install libpcap-dev
sudo apt install libpcap0.8

随后需进行重新编译DPDK:

1
2
3
sudo ninja uninstall
cd ..
rm -rf build

清理完成后即可重新编译安装DPDK:

1
2
3
4
5
meson build
cd build
ninja
sudo ninja install
sudo ldconfig

修改主运行程序

需注意DPDK自带程序中,仅testpmd支持pdump,抓包的实现方式可以参考testpmd。具体而言,可以在主运行程序(需要被抓取数据的DPDK程序)的相应位置添加以下代码,rte_pdump_init函数进行pdump的初始化,而rte_pdump_uninit在主运行程序推出前进行清理

1
2
3
#include <rte_pdump.h>
rte_pdump_init();
rte_pdump_uninit();

启动pdump

DPDK Tools User Guides – dpdk-pdump Application

dumpcap报错EAL init failed: is primary process running?解决办法

pdump程序作为第二运行程序,需与主运行程序采用一致的编译选项与配置。而主运行程序一般采用make编译,而DPDK自带的pdump程序采用meson编译。因此可以直接复制pdump程序至个人程序目录,并确保与主运行程序一致的make选项与脚本

需先启动主运行程序,随后启动pdump,支持以下运行命令

1
2
sudo ./build/pdump -- \
  --pdump 'device_id=0000:13:00.0,queue=*,rx-dev=/home/hedwig/rx_0.pcap'
1
2
3
4
sudo ./build/pdump -l 10,11,12 -- --multi \
  --pdump 'port=0,queue=*,rx-dev=/home/hedwig/pcap/rx_0.pcap' \
  --pdump 'port=1,queue=*,rx-dev=/home/hedwig/pcap/rx_1.pcap' \
  --pdump 'port=2,queue=*,rx-dev=/home/hedwig/pcap/rx_3.pcap'
1
2
3
4
sudo ./build/pdump -l 10,11,12 -- --multi \
  --pdump 'device_id=0000:13:00.0,queue=*,rx-dev=/home/hedwig/pcap/rx_0.pcap' \
  --pdump 'device_id=0000:13:00.1,queue=*,rx-dev=/home/hedwig/pcap/rx_1.pcap' \
  --pdump 'device_id=0000:13:00.2,queue=*,rx-dev=/home/hedwig/pcap/rx_3.pcap'
Licensed under CC BY-NC-SA 4.0
皖ICP备2025083746号-1
公安备案 陕公网安备61019002003315号



使用 Hugo 构建
主题 StackJimmy 设计