RDMA中的数据包捕获?

时间:2012-09-26 18:00:32

标签: tcpdump infiniband rdma

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

5 个答案:

答案 0 :(得分:7)

旧线程,但仍然:

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

如果您有Mellanox HCA,you can use the "ibdump" tool。该工具也是Mellanox OFED软件包的一部分。

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

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

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

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

对于 Infiniband,有 ibdump,但是,取决于您使用的 Infiniband 软件(开源 OFED 与专有的 Mellanox OFED)和您可能能够使用的主机通道适配器 (HCA) { {3}},也一样。