赵占旭的博客

OVS-DPDK 使用DPDK的pdump

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

dpdk-pdump


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

配置编译

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

配置文件修改如下:

1
2
CONFIG_RTE_LIBRTE_PMD_PCAP=y
CONFIG_RTE_LIBRTE_PDUMP=y

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

抓包简单原理


avatar

测试方法


启动ovs

1
systemctl start openvswitch

给ovs添加dpdk端口

1
2
3
4
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

启动抓包命令

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

查看抓包

1
2
3
4
$ 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

注意:所有文章非特别说明皆为原创。为保证信息与源同步,转载时请务必注明文章出处!谢谢合作 :-)

原始链接:http://zhaozhanxu.com/2016/08/24/DPDK/2016-08-24-pdump/

许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。