注:本文是参照了一些其他文章,原文地址点击这里

dpdk-pdump


DPDK 16.07开始引入了pdump的库来进行网口的抓包。终于可以解决我们一直以来比较纠结的一个debug方式。
我们现在配合openvswitch来看一下dpdk-pdump如何进行抓包。

配置编译

DPDK是需要编译OVS之前就已经编译好的,如果编译rpm的话,我们的库需要编译成动态库,注意:这个时候坑就来了

配置文件修改如下:

CONFIG_RTE_LIBRTE_PMD_PCAP=y
CONFIG_RTE_LIBRTE_PDUMP=y

顺便说一下如果编译成动态库的话,所有的驱动也都是动态库,这个时候编译的pdump没有链接驱动的动态库的话,抓包也会失败,这里需要将pdump的Makefile添加rte_pmd_pcap动态库的链接。

抓包简单原理


请输入图片描述

测试方法


启动ovs

systemctl start openvswitch

给ovs添加dpdk端口

ovs-vsctl add-br br0
ovs-vsctl set Bridge br0 datapath_type=netdev
ovs-vsctl add-port br0 dpdk0
ovs-vsctl set Interface dpdk0 type=dpdk

启动抓包命令

dpdk-pdump -- --pdump port=0,queue=*,rx-dev=/tmp/pkts.pcap --server-socket-path=/var/run/openvswitch

查看抓包

$ tcpdump -r pkts.pcap
reading from file /tmp/pkts.pcap, link-type EN10MB (Ethernet)
13:14:42.4270163 IP 2.2.2.2.0 > 1.1.1.1.0: Flags [none], seq 0:6, win 0, length 6
13:14:44.126555 IP 2.2.2.2.0 > 1.1.1.1.0: Flags [none], seq 0:6, win 0, length 6
最后修改:2021 年 08 月 20 日 03 : 53 PM