9

Linux 中有没有像 tcpdump 这样的实用程序来捕获通过 RDMA 通道的流量?(Infiniband/RoCE/iWARP)

4

5 回答 5

10

旧线程,但仍然:

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

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

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

于 2012-11-19T15:22:41.870 回答
4

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

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

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

于 2012-09-27T07:09:54.737 回答
3

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

于 2012-09-27T14:17:55.930 回答
0

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

于 2017-10-19T11:08:24.690 回答
0

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

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

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

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

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

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

于 2021-01-22T21:45:32.227 回答