3. 使用tcpdump抓取rdma数据包

系列文章



一、准备工作

1. 源码编译tcpdump

使用 tcpdump 需要对源码进行编译,才可以抓取 RDMA 网卡数据包

参考tcpdump提供的安装说明:https://github.com/the-tcpdump-group/tcpdump/blob/master/INSTALL.md

tcpdump依赖于libpcap,因此首先需要对 libpcap 进行编译安装:

git clone https://github.com/the-tcpdump-group/libpcap.git
cd libpcap

./autogen.sh 
./configure 
sudo make install

对 tcpdump 使用同样的命令编译

git clone https://github.com/the-tcpdump-group/tcpdump.git
cd tcpdump

./autogen.sh 
./configure 
sudo make install

查看版本信息
在这里插入图片描述

2. 安装wireshark

sudo apt-get update
sudo apt-get install wireshark

二、Tcpdump抓包

使用 tcpdump 抓取 RDMA 数据包-tcpdump需要sudo权限

sudo tcpdump -i mlx5_0 -s 0 -w rdma.pcap 
//使用 tcpdump 抓取 mlx5_0 设备数据包并保存在 rdma.pcap 中,使用 wireshark 进行数据包分析
  • -i mlx5_0: 指定了要监听的网络接口。mlx5_0代表使用的是Mellanox ConnectX系列适配器的一个InfiniBand或RoCE (RDMA over Converged Ethernet) 接口。

  • -s 0: 设置抓取数据包时的snaplen(抓包长度)为0,意味着捕获整个数据包的内容,不受默认限制。这样可以确保即使是非常长的数据包也能被完整捕获。

  • -w rdma.pcap: 使用-w选项将捕获的数据保存到名为rdma.pcap的文件中。.pcap是Packet Capture的缩写,是一种标准的网络数据包捕获格式,可以被多种网络分析工具(如Wireshark)打开和分析。

接下来可以执行perftest测试 ,或者使用roce进行分布式训练或者执行nccl-test,都会有RoCE报文传输了。

以perftest为例:

ib_send_bw是用来测试SEND操作的带宽的程序(infiniband_sendbandwidth),其中<server_ip>表示对端的IP,对于我的环境来说,本节点mlx5_0对应的ip是10.110.0.21,另外一个机器mlx5-0对应的是10.110.0.25,两台机器的网卡连接交换机。

#server端
ib_send_bw -d mlx5_0

#client端 - 10.110.0.21为server ip
ib_send_bw -d mlx5_0 10.110.0.21

在这里插入图片描述
在这里插入图片描述

执行之后关闭tcpdump即可.

三、Wireshark分析

wieshark 打开 tcpdump 保存的pcap文件,即可看到RoCE报文。
其中RRoCE是Routable RoCE的意思,即可以被路由的RoCE,即RoCE v2。我们随便选中一个条目,下面的窗口中我们就可以看到每一层报文的内容了,非常清晰:
在这里插入图片描述
上图从上到下分别是:物理层–>以太网链路层–>IPv4网络层–>UDP传输层–>IB传输层(BTH头和iCRC校验)–>数据。

由于我自己对RDMA不是很了解,只是知道如何查看设备信息以及如何在分布式训练中使用他们。在别的文章评论区看到以下内容,感到很受用,记录一下!

RoCE v2协议栈是包括从物理层到传输层以及在此之上的IB传输层。

RoCEv2的外层报文是基于UDP的,它并不具备应答确认与重传机制。假设网络出现了丢包,那么发送端需要怎么把被丢弃的报文再发送给接收端呢?

  • RoCEv2协议里面有ack确认机制。重传机制有go back N
  • 这个是在UDP上层的IB传输层协议保证的,如果是RC,会有ACK和Go-Back-N重传

相关推荐

  1. tcpdump工具使用

    2024-06-06 07:38:04       21 阅读
  2. wireshark与tcpdump使用

    2024-06-06 07:38:04       26 阅读
  3. tcpdump

    2024-06-06 07:38:04       61 阅读
  4. tcpdump

    2024-06-06 07:38:04       43 阅读
  5. tcpdump

    2024-06-06 07:38:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 07:38:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 07:38:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 07:38:04       82 阅读
  4. Python语言-面向对象

    2024-06-06 07:38:04       91 阅读

热门阅读

  1. 【Vue3】shallowReactive() and shallowReadonly()

    2024-06-06 07:38:04       24 阅读
  2. rust之cargo install cargo-binstall 是什么

    2024-06-06 07:38:04       25 阅读
  3. maxwell同步mysql到kafka(一个服务器启动多个)

    2024-06-06 07:38:04       20 阅读
  4. TCP/IP 接收发送缓存大小的自动调优 Auto Tuning

    2024-06-06 07:38:04       27 阅读
  5. 《解锁创意无限:Stable Diffusion 详细教程指南》

    2024-06-06 07:38:04       28 阅读
  6. 洛谷 P8740 [蓝桥杯 2021 省 A] 填空问题 题解

    2024-06-06 07:38:04       26 阅读
  7. folyd算法求最短路径

    2024-06-06 07:38:04       43 阅读
  8. AudioSet 本体与声音实体对象

    2024-06-06 07:38:04       29 阅读
  9. Android AAudio——C API创建AudioTrack(六)

    2024-06-06 07:38:04       27 阅读
  10. 力扣2831.找出最长等值子数组

    2024-06-06 07:38:04       30 阅读