SierraNet协议分析使用指导[RDMA]| 如何设置 NVMe QP 端口以进行正确解码

在解码RoCEv2数据包(包括TCP RDMA和RoCE RDMA)时,若捕获的跟踪数据无法正确解码,通常需要执行特定的解码步骤。对于RoCE RDMA跟踪数据的处理,分析器主要采用两种方式获取必要信息以实现数据包解码:

首先,分析器通过NVMe QP端口获取所需信息。这些带有RoCEv2的NVMe QP端口可在启动器与目标建立连接时被"自然"读取,分析器利用这些信息来识别QP端口,从而解码NVMe数据包。此外,在连接建立后,有时需要手动输入这些QP端口信息。

对于TCP RDMA跟踪数据的处理,唯一必要的信息是"NVMe/TCP端口",这些端口通常已预先存在于解码器中,我们将在后续详细讨论。

值得注意的是,从4.40版本开始,我们简化了NVMe解码流程,确保跟踪数据能够被解码为NVMe类型,或使分析器能够预先将跟踪数据记录为NVMe类型,而无需了解具体的NVMe QP端口信息。本文将首先介绍4.40版本新增的解码便捷性,然后阐述4.40版本之前必须执行的NVMe解码步骤。

G.1.1 从版本4.40开始设置NVMe解码

由于确保每次客户想要解码NVMe跟踪或确保解码设置正确(无论是否捕获了RoCE_V2-MAD数据包,这是我们之前加载解码表的唯一方式)的复杂性,现在可以在开始“录制”之前通过进入设置首选项软件设置解码分配页面激活NVMe解码。在该页面(图G.1)下,有一个“QP协议:”设置,其中有一个NVMe的下拉选项。设置后,新录制的跟踪或加载的旧跟踪都将被正确解码为NVMe跟踪。这处理了所有NVMe QP端口设置,因此客户无需记住任何帧目标QP端口的十六进制设置,这使得操作更加简便。

Figure G.1: Decoding Preferences

如果您已经执行了“记录”操作,并且您有一个想要解码为NVMe跟踪的RoCE跟踪(并且您尚未执行上述步骤将分析器设置为NVMe模式):1. 转到“分析”选项卡并选择解码分配。将显示一个列表,如图G.2所示。2. 您必须在QP端口协议字段中仅选择NVMe(如下所示),并选择“应用更改到首选项”选项卡。这将显示一条最终消息,说明快速查看跟踪将被保存。3. 选择“是”。该跟踪(以及所有后续的RoCE跟踪)将被解码为NVMe跟踪。从4.40版本开始,这就是让您的分析器解码NVMe所需的全部操作,无论是在记录之前还是之后。

Figure G.2: Decoding Assignments List

G.1.2 使用RoCE RDMA捕获解码跟踪 – 4.40版本之前

如果在连接到目标之前开始录制,此时会交换某些数据包,这些数据包会自动加载解码表。这使得整个过程变得更加容易,因为所有解码已经完成,如图G.3所示。

Figure G.3: Decoding Table

如您所见,NVMe数据包已被翻译并正确识别。这是因为解码表已预先填充了“NVMe/QP端口”,这些端口是翻译所有数据包所必需的。图G.4中所示的解码表在自动填充后包含了“NVMe QP端口”。解码表将在以下部分进一步讨论。

Figure G.4: Decoding Table with NVMe QP Ports

G.1.3 使用RoCE RDMA捕获未解码的跟踪记录 – 4.40版本之前

如果您刚刚记录了一个类似于图G.5中表格的跟踪记录,并且RDMA设置为RoCE,您可以采取一些步骤使该跟踪记录以解码状态显示。由于此跟踪记录是在启动器和目标之间的连接序列之后捕获的(缺少自动NVMe端口设置数据包),如果需要数据包解码,则必须手动修复解码。

Figure G.5: Example Recorded Trace

手动更改解码:

  1. 转到“分析”选项卡并点击“解码分配”。在“NVMe QP端口(十六进制)”被学习或添加之前,表格可能看起来像图G.6中的示例。

Figure G.6: Decoding Assignments Table

 

  1. 为了正确解码每个数据包,请检查(打开并使用帧检查器视图)每个数据包中“Base Transport Header”主字段下的“Destination QP”字段,如图G.7所示。

Figure G.7: Frame Inspector View

  1. 记下这个数字,然后返回到“分析”选项卡下的“解码分配”窗口。

  2. 将十六进制数348添加到“NVMe QP端口(十六进制)”字段中,如图G.8所示。

Figure G.8: Decoding Assignments Window

5.在解码器上按下“应用更改到偏好”按钮,然后点击关闭。分析器将您的更改添加到跟踪中。图G.9展示了带有更改的新跟踪示例。

Figure G.9: Example of New Trace with Changes

请注意,它仅解码了具有特定 NVMe QP 端口的部分数据包。不过,NVMe QP 端口将进行一些分组,以便您可以一次性添加大量 NVMe QP 端口。

例如,这个数据包的 NVMe 目标 QP 端口为十六进制的 348,但另一个数据包的目标 QP 端口为十六进制的 304。因此,通常最好通过添加一系列“NVMe 目标 QP 端口”来一次性翻译多个数据包。如图 G.10 所示,添加了 2FF-2000 以适应大量的 NVMe QP 端口,从而在此跟踪中翻译更多的数据包。

Figure G.10: Large Sequence of NVMe Destination QP Ports Added

6.点击解码器上的“应用更改到偏好”,然后点击“关闭”。分析器将更改添加到跟踪中。 见图G.11以查看带有更改的新跟踪示例。

Figure G.11: Example of New Trace with Changes

请注意,大多数(如果不是全部)RoCEv2数据包已转换为NVMe,分析器显示正确的解码。

G.1.4 使用TCP RDMA捕获解码跟踪 – 4.40版本之前

在使用TCP与RoCEv2时,解码过程要简单得多,因为大部分解码依赖于“NVMe/TCP端口”(见图G.12),这些端口通常是一个标准值,大多数人在连接到目标时使用4420。因此,当在TCP头下看到源端口或目标端口为4420的NVMe时,解码会自动进行。

 Figure G.12: Table Showing NVMe/TCP Ports

图G.13显示了一个RoCEv2 TCP跟踪,其目标端口和源端口均为4420,因此所有端口都被正确解码。

Figure G.13: Example Trace with Destination and Source Ports of 4420

G.1.5 退出NVMe解码模式

有几种方法可以退出NVMe解码模式,有些是偶然的,有些是故意的。

 偶然的方式通常发生在降级或解码信息因某种原因被手动覆盖时。在4.40之前的版本中,更改或删除解码器(分析解码分配页面)中的HEX数字将不允许分析器中进行NVMe解码,从而偶然或故意地移除NVMe解码。当降级到旧版本时,该版本可能不支持较新的4.40设置,或者可能完全擦除所有解码设置。

 故意退出NVMe模式的方法是在设置首选项软件设置

解码分配窗口中将4.40的NVMe设置更改为其他设置,例如“用户定义”、“iSER”或“SMB”。在4.40版本之前,必须从“分析

解码分配”窗口(解码器)中删除NVMe QP端口,这些端口对每个跟踪都很重要。NVMe解码将不再正常进行。

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

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

相关文章

JavaScript基础-局部作用域

在JavaScript中,理解不同种类的作用域是掌握这门语言的关键之一。作用域决定了变量和函数的可访问性(即可见性和生命周期)。与全局作用域相对应的是局部作用域,它限制了变量和函数只能在其定义的特定范围内被访问。本文将深入探讨…

李沐动手深度学习(pycharm中运行笔记)——09.softmax回归+图像分类数据集+从零实现+简洁实现

09.softmax回归图像分类数据集从零实现简洁实现(与课程对应) 目录 一、softmax回归 1、回归 vs 分类 2、经典分类数据集: 3、从回归到分类——均方损失 4、从回归到多类分类——无校验比例 5、从回归到多类分类——校验比例 6、softmax和…

C++八股——内存分配

文章目录 1. 虚拟内存空间2. malloc和free3. new和delete4. 内存池 1. 虚拟内存空间 程序进程的虚拟内存空间是操作系统为每个进程提供的独立、连续的逻辑地址空间,与物理内存解耦。其核心目的是隔离进程、简化内存管理,并提供灵活的内存访问控制。 &am…

【Linux基础】网络相关命令

目录 netstat命令 1.1 命令介绍 1.2 命令格式 1.3 常用选项 1.4 常用命令实例 1.4.1 显示所有TCP连接 1.4.2 查看路由表 1.4.3 实时监控网络接口流量 1.4.4 查看监听中的端口以及关联进程 ping命令 2.1 命令介绍 2.2 命令格式 2.3 常用选项 2.4 常用示例 ifconfi…

adb 实用命令汇总

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 基础adb命令 # 重启adb adb kill-server# 查看已连接的设备 adb devices# 进入命令行 adb shell# 使用 -s 参数来指定设备 adb -s <设备序列号> shell…

C#管道通讯及传输信息丢失的原因

以下是C#管道通讯客户端/服务端共用类 namespace PipeCommunication { /// <summary> /// 管道信息回调通知 /// </summary> /// <param name"msg"></param> public delegate void PipeMessageEventHandler(string msg…

MixTeX - 支持CPU推理的多模态LaTeX OCR

文章目录 一、项目概览相关资源核心特性技术特点 二、安装三、使用说明环境要求 四、版本更新五、当前限制 一、项目概览 MixTeX是一款创新的多模态LaTeX识别小程序&#xff0c;支持本地离线环境下的高效CPU推理。 无论是LaTeX公式、表格还是混合文本&#xff0c;MixTeX都能轻…

简单 Linux 字符设备驱动程序

注&#xff1a;本文为 “Linux 字符设备驱动” 相关文章合辑。 英文引文&#xff0c;机翻未校。 中文引文&#xff0c;略作重排。 未整理去重&#xff0c;如有内容异常&#xff0c;请看原文。 Simple Linux character device driver 简单 Linux 字符设备驱动程序 Oleg Kutko…

NX949NX952美光科技闪存NX961NX964

NX949NX952美光科技闪存NX961NX964 在半导体存储领域&#xff0c;美光科技始终扮演着技术引领者的角色。其NX系列闪存产品线凭借卓越的性能与创新设计&#xff0c;成为数据中心、人工智能、高端消费电子等场景的核心组件。本文将围绕NX949、NX952、NX961及NX964四款代表性产品…

协议路由与路由协议

协议路由”和“路由协议”听起来相似&#xff0c;但其实是两个完全不同的网络概念。下面我来分别解释&#xff1a; 一、协议路由&#xff08;Policy-Based Routing&#xff0c;PBR&#xff09; ✅ 定义&#xff1a; 协议路由是指 根据预设策略&#xff08;策略路由&#xff0…

Linux510 ssh服务 ssh连接

arning: Permanently added ‘11.1.1.100’ (ECDSA) to the list of known hosts. rooot11.1.1.100’s password: Permission denied, please try again. rooot11.1.1.100’s password: Permission denied, please try again 还没生效 登不上了 失效了 sshcaozx26成功登录 …

金融学知识笔记

金融学知识笔记 一、引言 金融学它结合了数学、概率论、统计学、经济学和计算机科学等多学科的知识&#xff0c;用于解决金融领域中的各种问题&#xff0c;如金融衍生品定价、投资组合优化、风险管理和固定收益证券分析等。通过对金融学的学习&#xff0c;我们可以更好地理解…

AB测试面试题

AB测试面试题 常考AB测试问答题(1)AB测试的优缺点是什么?(2)AB测试的一般流程/介绍一下日常工作中你是如何做A/B实验的?(3)第一类错误 vs 第二类错误 vs 你怎么理解AB测试中的第一、二类错误?(4)统计显著=实际显著?(5)AB测试效果统计上不显著?(6)实验组优于对…

USR-M100采集数据并提交MQTT服务器

本文为记录备忘&#xff0c;不做过多解释。 模块自身带有2路数字量输入&#xff0c;2路模拟量输入&#xff0c;2路485接口 数字量接报警输入&#xff0c;模拟量接压力传感器&#xff0c;液位传感器&#xff0c;485接口分别接流量计&#xff0c;温湿度传感器。 正确接线&…

Octave 绘图快速入门指南

目录 1. 基本的 2D 绘图 2. 自定义图形样式 3. 绘制散点图 4. 绘制柱状图 5. 绘制直方图 6. 3D 绘图 6.6.1 3D 曲面图 6.6.2 3D 散点图 7. 绘制极坐标 8. 多子图绘制 总结 Octave 是一个类似于 MATLAB 的开源数学软件&#xff0c;广泛用于数值计算和数据分析。它提供…

RabbitMQ--基础篇

RabbitMQ 简介&#xff1a;RabbitMQ 是一种开源的消息队列中间件&#xff0c;你可以把它想象成一个高效的“邮局”。它专门负责在不同应用程序之间传递消息&#xff0c;让系统各部分能松耦合地协作 优势&#xff1a; 异步处理&#xff1a;比如用户注册后&#xff0c;主程序将发…

【MySQL】事务(重点)

目录 一、什么是事务&#xff1a; 二、事务的前置知识了解 引擎是否支持事务 事务的提交方式 事务操作的前置准备&#xff1a; 三、事务回滚&#xff1a; 四、事务崩溃&#xff1a; 原子性&#xff1a; 持久性&#xff1a; 五、自动提交和手动提交&#xff1a; 六、…

C++STL——stack,queue

stack与queue 前言容器适配器deque 前言 本篇主要讲解stack与queue的底层&#xff0c;但并不会进行实现&#xff0c;stack的接口 queue的接口 &#xff0c;关于stack与queue的接口在这里不做讲解&#xff0c;因为通过前面的对STL的学习&#xff0c;这些接口都是大同小异的。 …

STM32智能手表:基于FreeRTOS

引言 随着物联网和可穿戴设备的快速发展&#xff0c;智能手表作为典型代表&#xff0c;集成了传感器数据采集、实时显示、无线通信等多项功能。本文将深入剖析一个基于STM32和FreeRTOS的智能手表项目&#xff0c;从硬件架构到软件设计&#xff0c;逐步讲解如何构建一个完整的嵌…

leetcode504.七进制数

标签&#xff1a;进制转换 机试真题 给定一个整数 num&#xff0c;将其转化为 7 进制&#xff0c;并以字符串形式输出。 示例 1: 输入: num 100 输出: "202" 示例 2: 输入: num -7 输出: "-10" 思路&#xff1a;求n进制就是循环取余数&#xff0c;…