翻译自:http://dpdk.org/doc/guides/tools/pdump.html
pdump故名思意:就是packet dump的意思。是DPDK提供给我们意secondary方式运行程序捕获dpdkport报文的app;一句话就是dpdk抓包的工具;
注意:
pdump只能是主dpdk程序准备OK了;
pdump依赖基于PMD的libpcap。这个选项默认在编译的配置文件是disable的;由于libpcap必须实现被安装在板子上,并且开发文件libpcap-dev这种也要安装;同时把build的配置文件。config修改 CONFIG_RTE_LIBRTE_PMD_PCAP=y
运行程序,下面是程序的运行参数
./build/app/dpdk-pdump -- --pdump '(port=<port id> | device_id=<pci id or vdev name>), (queue=<queue_id>), (rx-dev=<iface or pcap file> | tx-dev=<iface or pcap file>), [ring-size=<ring size>], [mbuf-size=<mbuf data size>], [total-num-mbufs=<number of mbufs>]' [--server-socket-path=<server socket dir>] [--client-socket-path=<client socket dir>]
注意:
--pdump是必须强制指定的,其子参数将在下面部分描素
()是强制指定的
【】是可选的
多个--pdump可以用于捕获不同的接口和队列
--server-socket-path这个选项是可选的。用于指定server socket的目录。如果这个参数没有被指定,root用户就默认是: /var/run/.dpdk/非root用户就是 ~/.dpdk/
--client-socket-path 这个也是可选的。指的是client 的socket目录。如果这个参数没有被指定,root用户就默认是: /var/run/.dpdk/非root用户就是 ~/.dpdk/
--pdump的子参数
port :需要被抓包的以太网的portid;
device_id :需要被抓包的以太网的pci地址或者名字;
注意:因为一个bug。现在的pdump并不能抓虚拟设备的报文;
queue:以太网设备的queue id;如果queue是*则抓所有的队列;(多队列的情况)
rx-dev:应该是一个pcap文件名或者linux 的接口
tx-dev:应该是一个pcap的文件名或者是linux的接口
注意:
rx-dev只是入口方向的
tx-dev只是出口方向的
如果两个方向都分别要。tx-dev与rx-dev应该被同时制定两个不同的文件或者接口
两个方向都同时要,tx-dev与rx-dev应该指定相同的接口或者文件
ring-size:ring的大小。创建内部使用的ring;这个ring讲用于主程序向抓包程序入队了用的。默认是16384。
mbuf-sizze:mbuf data的大小。用于mempool的创建。用于入队列的mbuf用的。主要用于主程序向抓包程序传数据用的。默认是2176;应该与主server的mbuf一样
total-num-mbufs:这个指创建mbug的个数。默认值是65535
使用例子:
$ sudo ./build/app/dpdk-pdump -- --pdump 'port=0,queue=*,rx-dev=/tmp/rx.pcap'
转载请注明bestboyxie原创