0

我正在尝试从 dpdk 接口捕获数据包。使用pdump+testpmd,可以抓到数据包。但是,如果将 Wireshark 与 testpmd 一起使用,则上述操作会失败。

任何建议高度赞赏。谢谢

在 Ubuntu v 18+、DPDK v 19+ 上工作 Wireshark v 3+

4

2 回答 2

0

解决方案是使用pdump应用程序。正如其他人提到的,一旦您的 DPDK 应用程序获得了网卡的所有权,内核将看不到数据包,并且不会触发 tcpdump 挂钩。该文档解释了如何 i) 在支持 pdump 和 pcap 的情况下编译 dpdk ii) 使您的主要进程 - 您的应用程序 - 将数据包信息提供给辅助进程 - pdump 示例应用程序

然后,您可以将生成的 pcap 与 wireshark 一起使用。

于 2019-12-20T17:49:22.187 回答
0

一旦将物理接口从内核绑定到 DPDK 驱动程序(igb_uio、uio_pci_generic、vfio-pci),它就会从内核 netdev 中删除,用于物理功能和虚拟功能。这些 NIC 端口可通过 UIO 驱动程序访问,并且具有 PMD 的 DPDK 等应用程序可以探测和初始化设备(有一些例外)。

如果你想将端口与 Wireshark 一起使用,不幸的是你必须将它绑定回内核。您也可以使用 DPDK 将数据包捕获到 .pcap 文件中,然后使用 Wireshark 离线分析它——如果这符合您的需要。

[EDIT-1] 在 UIO DPDK 绑定上捕获数据包有 2 种方法

  1. rte_pdump_init在主要(所需)DPDK 应用程序中使用API,并使用 DPDK 示例dpdk-pdump为所需队列捕获 RX 或 TX 数据包。
  2. 从 UIO 中取消绑定设备并将其绑定回 netdev 接口的内核驱动程序。rte_eal_init使用特殊参数启动 DPDK--vdev=net_pcap0,iface=[kernel nic interface instance]

注意:在选项 2 中,也可以运行 Wireshark 并捕获数据包。但会失去性能和 DPDK 特定功能。

于 2019-03-21T10:34:10.110 回答