【问题标题】:Wireshark does not capture dpdk interface packetsWireshark 不捕获 dpdk 接口数据包
【发布时间】:2019-03-14 01:35:00
【问题描述】:

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

高度赞赏任何建议。谢谢

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

【问题讨论】:

  • 更新了查询的答案,希望对您有所帮助。如果是,您能否接受并投票结束该问题?

标签: wireshark dpdk mellanox


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    如果你想使用 Wireshark 的端口,很遗憾你必须bind it back to the kernel。您也可以使用 DPDK 将数据包捕获到 .pcap 文件中,然后使用 Wireshark 离线分析它 - 如果这符合您的需求。

    [EDIT-1] UIO DPDK绑定有2种抓包方式

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多