DPDK数据包捕获框架
本文介绍了如何使用 DPDK 数据包捕获框架在DPDK端口捕获数据包,以供那些希望更多了解其特性或能够监控DPDK控制设备的流量的用户作为参考。
DPDK数据包捕获框架由DPDK pdump库和DPDK pdump工具组成,在DPDK v16.07中被初次引入。
DPDK pdump库和pdump工具
(http://dpdk.org/doc/guides/prog_guide/pdump_lib.html?highlight=librte_pdump)
librte_pdump 库服务于那些被要求能够允许用户初始化数据包捕获框架,启用或禁用数据包捕获功能的API。该库适用于客户端/服务器模式,并推荐用于debug。
“dpdk-pdump” 是基于librte_pdump库开发的工具,作为DPDK次级进程运行,并且能够启用或禁用DPDK端口上的数据包捕获功能。dpdk-pdump工具提供了命令行选项,用户可以通过该选项请求启用或禁用DPDK端口上的数据包捕获功能。dpdk-pdump工具只能与数据包捕获框架已初始化的主应用程序配合使用。
初始化数据包捕获框架的应用程序作为服务器,启用或禁用数据包捕获功能的应用程序作为客户端。服务器将Rx和Tx数据包从DPDK端口发送到客户端。
修改了 DPDK 'testpmd' 应用以初始化数据包捕获框架,作为服务器,dpdk-pdump工具作为客户端。 如果要查看testpmd的Rx或Tx数据包,首先应启动应用程序,然后再启动dpdk-pdump工具。 testpmd的数据包先被发送到pdump工具,然后再从pdump工具发送到pcap pmd设备,最终该设备根据命令行选项将数据包写入pcap文件或外部接口。
测试环境
图1演示了dpdk-pdump工具在DPDK端口上进行数据包捕获的方式。
图1 :使用dpdk-pdump工具在DPDK端口上进行数据包捕获
配置步骤
以下步骤演示了如何运行dpdk-pdump工具来捕获dpdk_port0的Rx端数据包,并使用tcpdump进行监控。
1. 根据安装文件构建DPDK,确保DPDK符合以下配置选项集:
CONFIG_RTE_LIBRTE_PMD_PCAP=y
CONFIG_RTE_LIBRTE_PDUMP=y
2. 启动testpmd作为主要应用程序:
sudo ./app/testpmd -c 0xf0 -n 4 -- -i --port-topology=chained
3. 根据以下说明启动pdump工具:
sudo ./build/app/dpdk-pdump -- --pdump 'port=0,queue=*,rx-dev=/tmp/capture.pcap'
4. 通过流量生成器向dpdk_port0发送流量
5. 使用可以解析pcap文件的工具查看capture.pcap的内容,例如tcpdump :
$tcpdump -nr /tmp/capture.pcap
reading from file /tmp/capture.pcap, link-type EN10MB (Ethernet)
11:11:36.891404 IP 4.4.4.4.whois++ > 3.3.3.3.whois++: UDP, length 18
11:11:36.891442 IP 4.4.4.4.whois++ > 3.3.3.3.whois++: UDP, length 18
11:11:36.891445 IP 4.4.4.4.whois++ > 3.3.3.3.whois++: UDP, length 18
结论
在本文中,我们介绍了DPDK pdump库和pdump工具,以及如何使用它们来捕获在DPDK端口上传输的流量。
其他信息:
关于librte_pdump库和dpdk-pdump工具的更多信息,请参见以下链接。
《DPDK程序员指南》(http://dpdk.org/doc/guides-16.07/prog_guide/pdump_lib.html)有专门章节详细介绍librte_pdump库的运作方式。
《示例应用程序使用者指南(http://dpdk.org/doc/guides16.07/sample_app_ug/pdump.html)有专门章节介绍dpdk-pdump应用。
-
Use the DPDK pdump feature with open vSwitch*(https://software.intel.com/en-us/articles/dpdk-pdump-in-open-vswitch-with-dpdk)这篇文章介绍了dpdk-pdump在OvS-DPDK配置中的使用。
任何疑问,欢迎发送邮件到[email protected]咨询。
本文翻译自 Intel Developer Zone,点击下方阅读原文可查看英文版原文~
作者简介
Reshma Pattan是英特尔公司的网络软件工程师,其主要工作领域为DPDK数据平面库的开发。对DPDK的贡献包括添加了数据包重新排序库,数据包排序示例应用程序,pdump库和dpdk-pdump工具。
DPDK开源社区
往期精选
DPDK开源社区
长按二维码关注我们