如何使用tcpdump工具(ConnectX-4)dump RDMA流量

如何使用tcpdump工具(ConnectX-4)dump RDMA流量 这是有关如何使用ConnectX-4适配器的tcpdump转储RDMA / RoCE通信的初学者指南。 MLNX_OFED 3.2中引入的重要功能之一是通过适配器(ethtool)的标准配置来支持嗅探功能,该功能使嗅探流量绕过内核。 新机制的流量转移,包括RoCE和原始以太网都是支持的。 该工具也可用于非内核绕过的流量。

应用介绍

如何使用tcpdump工具(ConnectX-4)dump RDMA流量

这是有关如何使用ConnectX-4适配器的tcpdump转储RDMA / RoCE通信的初学者指南。

MLNX_OFED 3.2中引入的重要功能之一是通过适配器(ethtool)的标准配置来支持嗅探功能,该功能使嗅探流量绕过内核。

新机制的流量转移,包括RoCE和原始以太网都是支持的。

该工具也可用于非内核绕过的流量。

注意:如果使用ConnectX-3 / Pro适配器,请使用ibdump工具,有关更多详细信息,请参考《 MLNX_OFED用户手册》。

注意:从MLNX_OFED v3.2起可以支持tcpdump。

步骤如下:

在此示例中,我们将使用通过ConnectX-4适配器背对背连接的两台服务器

 

配置

 

     链路层:以太网

     流量:RoCE

 1.      配置两个适配器端口的IP地址,并确保在服务器之间运行ping。

2.使用ethtool启用嗅探器。

在此示例中,接口名称为ens785f0:

# ethtool --set-priv-flags ens785f0 snifferon

3.运行tcpdump捕获数据包并在Linux(例如vi)中将其打开。

     #tcpdump -iens785f0 -XXvv>〜/ rdma_traffic.txt

 

要查看wireshark中解析的文件,请运行:

     #tcpdump -iens785f0 -s 65535 -w rdma_traffic.pcap

 测试完成后,在wireshark中打开文件。

4.运行RDMA流量:

在一台服务器上运行:

# ib_send_bw

************************************

* Waiting for client to connect... *

************************************

 

在另一台服务器运行:

# ib_send_bw 99.99.99.5 --report_gbits -F

---------------------------------------------------------------------------------------

Send BW Test

Dual-port : OFF Device : mlx5_1

Number of qps : 1 Transport type : IB

Connection type : RC Using SRQ : OFF

TX depth : 128

CQ Moderation : 100

Mtu : 4096[B]

Link type : Ethernet

Gid index : 0

Max inline data : 0[B]

rdma_cm QPs : OFF

Data ex. method : Ethernet

---------------------------------------------------------------------------------------

local address: LID 0000 QPN 0x01ae PSN0x31a206

GID:00:00:00:00:00:00:00:00:00:00:255:255:12:12:12:06

remote address: LID 0000 QPN 0x020a PSN0xa2824e

GID:00:00:00:00:00:00:00:00:00:00:255:255:12:12:12:05

---------------------------------------------------------------------------------------

#bytes #iterations BW peak[Gb/sec] BWaverage[Gb/sec] MsgRate[Mpps]

65536 1000 95.16 95.16 0.181502

---------------------------------------------------------------------------------------

5.检查输出文件:

在此示例中,UDP端口4791用于RoCEv2通信。

# cat ~/rdma_traffic.txt

 

...

14:48:23.007280 IP (tos 0x0, ttl 64, id5066, offset 0, flags [DF], proto UDP (17), length 308)

1.1.6.2.49153 > 1.1.5.2.4791: [no cksum]UDP, length 280

0x0000: 248a 0780 5401 e41d 2df2 a45c 81000006 $...T...-..\....

0x0010: 0800 4500 0134 13ca 4000 4011 18ea0101 ..E..4..@.@.....

0x0020: 0602 0101 0502 c001 12b7 0120 00006440 ..............d@

0x0030: ffff 0000 0001 0000 002a 8001 00000000 .........*......

0x0040: 0001 0107 0203 0000 0000 0000 00117a2f ..............z/

0x0050: ac19 0010 0000 0000 0000 19ac 2f7a0000 ............/z..

0x0060: 0000 0000 0000 0106 4853 e41d 2d0300f2 ........HS..-...

0x0070: a45c 0000 0000 0000 0000 0001 a4000000 .\..............

0x0080: 0000 0000 00b0 28a5 38b7 ffff 37f0ffff ......(.8...7...

0x0090: ffff 0000 0000 0000 0000 0000 ffff0101 ................

0x00a0: 0602 0000 0000 0000 0000 0000 ffff0101 ................

0x00b0: 0502 0000 0007 0040 0098 0000 00000000 .......@........

0x00c0: 0000 0000 0000 0000 0000 0000 00000000 ................

0x00d0: 0000 0000 0000 0000 0000 0000 00000000 ................

0x00e0: 0000 0000 0000 0040 b1ee 0000 00000000 .......@........

0x00f0: 0000 0000 0000 0101 0602 0000 00000000 ................

0x0100: 0000 0000 0000 0101 0502 0000 00000000 ................

0x0110: 0000 0000 0000 0000 0000 0000 00000000 ................

0x0120: 0000 0000 0000 0000 0000 0000 00000000 ................

0x0130: 0000 0000 0000 0000 0000 0000 00000000 ................

0x0140: 0000 5870 f2dd ..Xp..

如果您将文件保存为Wireshark,则会收到以下消息:

“请确保您使用的是最新版本的Wireshark,因为旧版本可能无法很好地解析InfiniBand。”

1.png

文件列表(部分)

名称 大小 修改日期
如何使用tcpdump工具(ConnectX-4)dump RDMA流量.docx102.54 KB2020-10-20

立即下载

相关下载

[RDMA 编译报错] gcc -o rdma-client rdma-common.o rdma-client.o -lrdmacm /usr/bin/ld: rdma-common.o: undefined reference to symbol
[在Linux示例程序上编写RDMA应用程序] 在Linux示例程序上编写RDMA应用程序,Linux示例程序上编写RDMA应用程序。 使用请确保您拥有rdma和libibverbs库。 ## compiler客户端: $ cc -o client client.c -lrdmacm -libverbs 服务器 : $ cc -o服务器server.c -lrdmacm ##运行服务器:
[Mellanox RDMA学习例子] 编译库的需求:libibverbs 编译参数:GCC -o service -libverbs 运行方式: 有IB网络支持: 服务端:./service 客户端:./service 服务端IP 走ROCE: 服务端:./service -g 0 客户端:./service -g 0 服务端IP
[RDMA网络编程用户手册] InfiniBand InfiniBand(IB)是一种服务器和存储器的互联技术,它具有高速、低延迟、低CPU负载、 高效率和可扩展的特性。InfiniBand的关键特性之一是它天然地支持远程直接内存访问(RDMA) 。InfiniBand能够让服务器和服务器之间、服务器和存储设备之间的数据传输不需要主机的CPU 的参与。InfiniBand使用I/O通道进行数据传输,每个I/O通道提供虚拟的NIC或HCA语义
[Mellanox GPUDirect RDMA用户手册] GPUDirect RDMA是IB CORE与对等内存客户端(例如NVIDIA Tesla类GPU)之间的API。 它提供对Mellanox HCA读/写对等内存数据缓冲区的访问权限,因此,它允许基于RDMA的应用程序通过RDMA互连使用对等设备的计算能力,而无需将数据复制到主机内存。
[RDMA Aware Networks编程用户手册] RDMA Aware Networks编程用户手册,RDMA Aware Networks编程用户手册,很棒的文档,它解释了如何使用RDMA verbs 接口函数,例如ib_create_qp(),ib_create_cq(),ib_post_send()等。 远程直接内存访问(RDMA)提供从一台主机的内存(存储或计算)到另一台主机的内存的直接内存访问,而无需涉及远程操作系统和CPU,从而以更低的延迟,更低的CPU负载和更高的

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部