DPDK数据包捕获框架

DPDK数据包捕获框架

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端口上进行数据包捕获的方式。

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开源社区

DPDK数据包捕获框架

长按二维码关注我们

相关文章: