RDMA 中的数据包捕获?

问题描述 投票:0回答:6

Linux 中是否有类似 tcpdump 的实用程序来捕获通过 RDMA 通道的流量? (Infiniband/RoCE/iWARP)

tcpdump infiniband rdma
6个回答
10
投票

旧线程,但仍然:

正如 Roland 指出的那样,嗅探 RDMA 流量非常棘手,因为一旦端点进行初始握手,流量就会通过网卡 (HCA) 直接到达内存。 无需在线路上放置专用硬件嗅探器即可嗅探此流量的唯一方法是在网卡中使用特定于供应商的挂钩以及使用这些挂钩的软件工具。

如果您有 Mellanox HCA,您可以使用“ibdump”工具。该工具也是 Mellanox OFED 软件包的一部分。

如果您有其他供应商的硬件,则需要与该供应商核实 - 抱歉,您找不到适用于所有支持 RDMA 的设备的任何开源数据包嗅探器。


4
投票

一般来说,不会。 RDMA的主要特点之一是所有网络处理都在适配器上完成,完全不涉及CPU。通常,工作请求直接从用户空间排队到适配器,无需任何系统调用。因此嗅探器无处可挂以获取流量。

话虽如此,对于以太网协议、iWARP 或 IBoE(又名 RoCE),您可以在连接中间挂接系统并将其设置为在软件(例如 Linux 桥模块)中进行转发,然后运行 tcpdump 或wireshark 来捕获通过该系统的 RDMA 流量。 Wireshark 甚至还有 iWARP 和 IBoE 的解析器。

对于本机 InfiniBand,理论上可以构建类似的东西(设置适配器来捕获和转发流量),但据我所知,甚至没有人完成基本数据包嗅探所需的固件或驱动程序工作。


3
投票

Chelsio 的 T4 设备支持数据包跟踪功能,允许其将入口/出口卸载数据包复制到设备的 NIC 队列之一。然后您可以在 ethX 接口上使用 tcpdump 或其他任何工具来查看 RDMA 或 TOE 数据包。


0
投票

Wireshark 就是其中之一。但问题是你需要一个观察服务器。启用镜像功能后,您应该能够在观察者处收到 ROCE 口袋。


0
投票

捕获此类流量的可靠方法是将其复制到专用捕获端口。这些端口可能是开发计算机中的附加以太网/IB 端口(附加适配器),或者它们可能位于附加捕获计算机中。

复制流量基本上有两种方法:

  1. 在交换机中配置端口镜像。对端口镜像的支持在托管以太网交换机中非常常见,即使是在廉价交换机中也是如此。某些 Mellanox Infiniband 交换机也提供此功能。您可以配置将一个端口的两个方向镜像到另一个端口,但如果镜像端口同时以线速(全双工)接收和发送,这会导致接收器超额订阅。在这种情况下,某些帧无法转发到捕获端口,从而被丢弃。为了避免这一限制,需要将每个方向镜像到单独的捕获端口。

  2. 将网络电缆连接到复制或分离信号的TAP(目标接入点)设备。对于光网络,这些 TAP 通常以完全无源的方式构建,因此不会增加太多复杂性,而且生产成本相对较低(示例)。每根光纤需要一个 TAP,即如果您想捕获两个方向,则始终占用 2 个捕获端口。 TAP 设备可用于以太网中常用的光纤和连接器。如果您的 Infiniband 硬件使用相同的硬件,那么您也应该能够使用相同的 TAP 设备。至少是被动的。

一旦镜像/分流的流量到达您的捕获端口,您就可以使用标准捕获工具,例如 tcpdump。

对于 Infiniband,有 ibdump,但是,根据您使用的 Infiniband 软件(开源 OFED 与专有的 Mellanox OFED)和主机通道适配器 (HCA),您可能能够使用 tcpdump 来捕获 Infiniband交通也


0
投票

在我写这个答案时,现在可以使用 tcpdump 和最新的 Linux 内核来嗅探网络,或者通过为旧版本安装 Mellanox OFED (Nvidia) 来嗅探网络。

如何使用收件箱 TCPDUMP 工具(CONNECTX-4 及以上)转储 RDMA 流量

安装 Mellanox OFED(如果需要)后,您可以生成一个

pcap
文件,并稍后通过在 Wireshark 中打开 pcap 文件来分析它。

tcpdump -i mlx5_1 -s 65535 -w rdma_traffic.pcap

确保使用 mlx5_X 可用接口。

© www.soinside.com 2019 - 2024. All rights reserved.