1、dump工具介绍
Dpdk提供了一套抓取端口数据报文的方法,example名为pdump。本文介绍的抓包工具就是根据此example进行改造,提供一系列的抓包参数,以适配云内场景下的抓包需求。
如根据此抓包工具提供的参数可完成对相应报文的抓取。
抓包工具主要分为两个部分,client端和server端;server端主要负责业务流量处理,抓包流量过滤。Client端主要负责命令行参数解析和数据传送。Server端属于primary进程,client端属于secondary进程。Server端的流量过滤功能通过编写相应的bpf实现。
关键流程(图片源于csdn)
抓包工具client端主要功能介绍:
1 命令行参数解析:
可配置的过滤参数如underlay和overlay sip、dip、ip pair、sport、dport等,其它需求可自行扩展参数解析后通过通信接口传递server端,由server端进行报文过滤。
2 报文存储:
Server端把过滤后的报文传递到client端,client端根据相关配置生成pcap文件。
抓包工具Server端主要功能介绍:
1 bpf过滤配置加载:
把编写好的bpf文件加载到程序中,执行真正的过滤动作。过滤条件由client端配置
2 报文过滤:
把报文按照bpf文件中编写的规则进行解析,并按照过滤条件进行匹配过滤。
3 报文复制传递:
命中过滤条件的报文通过复制接口进行复制,并把复制后的报文通过ring队列传递到client端。
2、dump工具使用方法
具体参数:
--ethtype <ETH> :以太网协议类型 L2
--protol <PROTOCOL> :按协议类型过滤 L3
--inner-ip :过滤内层IP,无此参数则过滤外层
--ip-pair <sip-dip> :过滤源IP为sip且目的IP为dip的数据
--ip <ip> :过滤源IP为ip或目的IP为ip的数据
--sip <sip> :过滤源IP
--dip <sip> :过滤目的IP
--ip6-pair <sip-dip> :过滤源IP为ip且目的IP为ip的数据
--ip6 <sip|dip> :过滤源IP为sip或目的IP为dip的数据
--sip6 <ip> :过滤源IP
--dip6 <ip> :过滤目的IP
--inner-port :过滤内层PORT,无此参数则过滤外层
--port-pair <sport-dport>:过滤源PORT为sport且目的PORT为dport的数据
--port <port> :过滤源PORT为sport或目的PORT为dport的数据
--sport <sport> :过滤SPORT
--dport <dport> :过滤DPORT
--pktlen <min-max> :过滤特定包长
--pktcnt <COUNT> :过滤数据条数
--size <SIZE> :单个pcap data部分大小,除第一个包外每个pcap会自动带当前时间。
例:
1 指定抓以太网协议为0800的包
pdump -p 0 -w dump.pcap --ethtype 0x0800
2 指定抓l3层协议号为 0x11(udp)
pdump -p 0 -w dump.pcap --protol 0x11