当前位置: 首页 > news >正文

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.xdnf.cn/news/371539.html

相关文章:

  • 画立方体软件开发笔记 js three 投影 参数建模 旋转相机 @tarikjabiri/dxf导出dxf
  • 代码随想录第41天:图论2(岛屿系列)
  • Git简介和发展
  • 代码复用与分层
  • 双目视觉系统中,极线校正(Epipolar Rectification)与单应性矩阵/多平面单应性模型
  • 通过推测搜索加速大型语言模型推理 (SpecSearch) 论文总结
  • 零基础入门MySQL:10分钟搞定数据库基本操作
  • tryhackme——Enumerating Active Directory
  • 【Linux】冯诺依曼体系结构和操作系统的理解
  • Webug4.0通关笔记25- 第30关SSRF
  • JS较底层的用法,几类简单介绍
  • 计算机网络基础科普
  • C语言复习--柔性数组
  • 如何在mac上使用便利贴
  • 青少年编程与数学 02-019 Rust 编程基础 06课题、容器类型
  • Docker镜像搬运工:save与load命令的实战指南
  • 【Android】文件分块上传尝试
  • 【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路
  • 基于GF域的多进制QC-LDPC误码率matlab仿真,译码采用EMS算法
  • Spring之AOP
  • 信息检索(包含源码)
  • 服务预热原理
  • 动态路由EIGRP的配置
  • AutoGen+Deepseek+chainlit的简单使用
  • iOS瀑布流布局的实现(swift)
  • HNUST湖南科技大学-软件测试期中复习考点(保命版)
  • Kubernetes应用发布方式完整流程指南
  • Dia浏览器:AI驱动浏览网页,究竟怎么样?(含注册申请体验流程)
  • Harness: 全流程 DevOps 解决方案,让持续集成如吃饭般简单
  • 【字节拥抱开源】字节豆包团队开源首发 Seed-Coder 大模型