3. 使用tcpdump抓取rdma数据包

系列文章

  • 第1章 多机多卡运行nccl-tests 和channel获取
  • 第2章 多机多卡nccl-tests 对比分析
  • 第3章 使用tcpdump抓取rdma数据包

目录

  • 系列文章
  • 一、准备工作
    • 1. 源码编译tcpdump
    • 2. 安装wireshark
  • 二、Tcpdump抓包
  • 三、Wireshark分析


一、准备工作

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重传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

判断经纬度是否在某个城市内

一、从高德获取指定城市边界经纬度信息 通过apifox操作&#xff1a; 二、引入第三方jar包&#xff1a; maven地址&#xff1a;https://mvnrepository.com/ maven依赖&#xff1a; <dependency><groupId>org.locationtech.jts</groupId><artifactId>…

Xcode中给UIView在xib中添加可视化的属性

给UIView在xib中添加可视化的属性 效果如下图&#xff1a; 可以直接设置view 的 borderColor 、borderWidth、cornerRadius&#xff0c;也可以单独指定view的某个角是圆角。减少了代码中的属性。 完整代码&#xff1a; UIViewBorder.h #import <UIKit/UIKit.h>inter…

NLP(1)-TF-IDF算法介绍

一、TF-IDF算法介绍 TF-IDF&#xff08;term frequency–inverse document frequency&#xff0c;词频-逆向文件频率&#xff09;是一种用于信息检索&#xff08;information retrieval&#xff09;与文本挖掘&#xff08;text mining&#xff09;的常用加权技术。 TF-IDF是一…

(十六)统计学基础练习题十(选择题T451-478)

本文整理了统计学基础知识相关的练习题&#xff0c;共50道&#xff0c;适用于想巩固统计学基础或备考的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-统计学三&#xff09;。序号之前的题请看往期文章。 451&#xff09; 452&#xff09; 453&#xff09; 4…

Ubuntu安装cuda

文章目录 前言一、安装NVIDIA驱动1.1 过程中的问题1.2 解决方法1.3 重启后出现 perform MOK management 二、安装Cuda2.1 检查是否安装显卡驱动2.2 安装Cuda2.3 验证CUDA是否安装成功 三、配置环境变量---未完2.4 图片居中加调整大学 总结 #pic_center 前言 只是为方便学习&…

如何将本地项目上传到GitHub

在软件开发过程中&#xff0c;将本地项目上传到GitHub是一个非常重要的步骤。它不仅可以帮助你备份代码&#xff0c;还可以让你与团队成员共享和协作开发。本文将详细介绍如何将本地项目上传到GitHub。 前提条件 已安装Git。如果还没有安装&#xff0c;请参考Git官网进行下载…

机器学习_模型评估与选择

在机器学习中&#xff0c;模型评估与选择是至关重要的步骤。这一过程包括评估模型的性能、选择最适合的模型&#xff0c;以及对模型进行优化&#xff0c;以确保在实际应用中达到最佳效果。以下是详细的讲解&#xff1a; 一、模型评估 模型评估的目的是衡量模型在数据上的表现…

递归书写树形图示例

大叫好&#xff0c;今天书写了一个扁型转换为树型的例子&#xff0c;使用的是递归&#xff0c;请大家食用&#xff0c;无毒 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" conte…

【Python数据类型的奥秘】:构建程序基石,驾驭信息之海

文章目录 &#x1f680;Python数据类型&#x1f308;1. 基本概念⭐2. 转化&#x1f44a;3. 数值运算&#x1f4a5;4. 数值运算扩展(math库常用函数) &#x1f680;Python数据类型 &#x1f308;1. 基本概念 整数&#xff08;int&#xff09;&#xff1a;整数是没有小数部分的数…

MMKV源码详解

文章目录 前言一、MMKV简介1.mmap2.protobuf 二、MMKV 源码详解1.MMKV初始化2.MMKV对象获取3.文件摘要的映射4.loadFromFile 从文件加载数据5.encode 数据写入 总结 前言 谈到轻量级的数据持久化&#xff0c;在 Android 开发过程中&#xff0c;大家首先想到的应该就是 SharedP…

题号:BC19 题目:反向输出一个四位数

题号&#xff1a;BC19 题目&#xff1a;反向输出一个四位数 废话不多说&#xff0c;上题目&#xff1a; 解题思路&#xff1a; 我们发现可以用%和/两个操作符就可以解决。 代码如下: int main() {int a 0;scanf("%d ",& a);while (a){printf("%d "…

【Vue】普通组件的注册使用-全局注册

文章目录 一、使用步骤二、练习 一、使用步骤 步骤 创建.vue组件&#xff08;三个组成部分&#xff09;main.js中进行全局注册 使用方式 当成HTML标签直接使用 <组件名></组件名> 注意 组件名规范 —> 大驼峰命名法&#xff0c; 如 HmHeader 技巧&#xf…

华安保险:核心系统分布式升级,提升保费规模处理能力2-3倍 | OceanBase企业案例

在3月20日的2024 OceanBase数据库城市行的活动中&#xff0c;安保险信息科技部总经理王在平发表了以“保险行业核心业务系统分布式架构实践”为主题的演讲。本文为该演讲的精彩回顾。 早在2019年&#xff0c;华安保险便开始与OceanBase接触&#xff0c;并着手进行数据库的升级…

雅欣控制HALL IC 产品选型手册,选择您的专属霍尔芯片(霍尔产品主要包括远翔FD,FS全系列,MST全系列霍尔)

HALLICs 应用领域 Applications 应用案例 雅欣为各个应用场景匹配专属HALL元器件 合作伙伴 Partners

专属编程笔记

Utils目录作用 在软件开发中&#xff0c;Utils&#xff08;或 Utilities&#xff09;目录通常用于存放一些通用的、不特定于任何模块的工具类或辅助函数。这些工具类或函数为整个应用程序或多个模块提供便利的功能支持&#xff0c;使得代码更加模块化、易于维护和重用。Utils目…

Echarts 柱状图中每个柱状图如何自定义展示内容

文章目录 需求分析需求 分析 要自定义柱状图中每个柱子的展示内容,您可以通过设置 label 的 formatter 属性来实现。formatter 是一个回调函数,可以用来自定义 label 的显示内容。以下是一个示例代码,演示了如何实现这一点: <!DOCTYPE html> <html lang="e…

【quarks系列】基于Dockerfile构建native镜像

目录 Dockerfile构建代码测试 Dockerfile FROM quay.io/quarkus/ubi-quarkus-native-image:22.3-java11 AS buildWORKDIR /workspace COPY . .RUN ./mvnw -DskipTeststrue clean package -Dnative -U# Stage 2: Create the minimal runtime image FROM registry.access.redhat…

AWS的EC2之间ping不通,服务之间不通,怎么办

AWS启动的两个EC2实例&#xff0c;互相访问不了 修改安全组规则&#xff0c;添加ICMP 流量的入站规则 参考&#xff1a;AWS的EC2之间ping不通,服务之间不通,怎么办_aws ec2同一个区域的服务器-CSDN博客

RabbitMQ支持的消息模型

RabbitMQ基础RabbitMQ支持的消息模型 一、第一种模型(直连) 我们将用Java编写两个程序&#xff0c;发送单个消息的生成者和接收消息并打印出来的消费者。 在下图&#xff0c;“P”是生成者&#xff0c;“C”消费者。中间框是一个队列RabbitMQ保留的消息缓冲区 。 首先构建一个…

思维,1209G1 - Into Blocks (easy version)

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1209G1 - Codeforces 二、解题报告 1、思路分析 考虑&#xff1a; 最终状态为若干段相同数字&#xff0c;且任意两段数字不同 每个数字出现的最左下标和最右下标构成一个区间 连锁反应—…