DPDK抓包工具dpdk-dumpcap的使用

        在进行网络开发中,我们经常会通过抓包来定位分析问题,在不使用DPDK的情况下,Linux系统通常用tcpdump,windows用wireshark,但是如果我们使用了DPDK来收包,就无法用这两个工具来抓包了。

        这个时候我们需要用DPDK对应的抓包工具,DPDK自带有两个抓包工具,分别是dpdk-pdump和dpdk-dumpcap,dpdk-pdump功能太简单,不支持按条件过滤报文,所以这里我们重点讲一下dpdk-dumpcap的用法。

        前面的文章DPDK的源码编译安装已经讲过DPDK的源码安装方法,DPDK安装好后,dpdk-dumpcap也在系统上安装好了。

        需要说明的是,DPDK有primary和second进程的说法,dpdk-dumpcap属于second进程,在抓包之前,必须先启动一个primary进程进行收包才行,primary进程可以使用前面提到过的dpdk-testpmd。

        可以先使用dpdk-dumpcap -h查看帮助信息:

        业务口抓包工具使用dpdk-dumpcap,参数说明如下:

选项

说明

示例

-i

指定抓包网口,使用网口的pcie地址

'*': 表示所有业务网口

0000:01:00.1: 某个网口的pcie地址

可以用过指定多个-i参数来抓取多个网口的报文,例如:-i 0000:01:00.0 -i 0000:02:00.0

-f

指定ip、port和协议等过滤条件

支持条件或或者条件与

源ip:   src host 1.1.1.1 或 src host 1111::1

源端口: src port 5000

目的ip:   dst host 2.2.2.2 或 dst host 2222::2

目的端口:dst port 80

协议: 如果是all,不用指定;如果是ipv6,ip,tcp和udp,分别指定ip6, ip,tcp,udp

条件与: and

条件或: ||

-D

列出所有网卡的pcie地址

0. 0000:0b:00.0

1. 0000:13:00.0

-c

指定抓包个数

-a

自动结束条件

duration:10, 抓包10秒钟后自动结束抓包

filesize:100, 抓包文件达到100KB后自动结束抓包

packets: 1000, 抓包1000个报文后自动结束抓包

-w

指定抓包的文件名称

例如1.pcap

-v

显示版本号

dpdk-dumpcap 1.0 (DPDK 21.11.0)

-n

使用pcapng格式保存抓包文件

pcapng格式的文件可以看到每个报文的网口id和队列id

        例如,抓取所有网卡上源ip为1.1.1.1,目的ip为2.2.2.2,源端口为5000,目的端口为80,协议为udp的1000个报文保存到1.pcap文件中,抓包命令为:

        dpdk-dumpcap -i '*' -f "src host 1.1.1.1 and src port 5000 and dst host 2.2.2.2 and dst port 80 and udp" -c 1000 -w 1.pcap

        需要说明的是,如果想要按方向来抓包,需要修改dumpcap的源码,在抓包的时候指定是抓收包方向还是发包方向的报文。

        好了,关于dumpcap抓包工具的使用方法就讲到这里了。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值