依赖安装与重新编译
若初次安装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'
|