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端口的十六进制设置,这使得操作更加简便。

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

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

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

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

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

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

手动更改解码:

  1. 转到"分析"选项卡并点击"解码分配"。在"NVMe QP端口(十六进制)"被学习或添加之前,表格可能看起来像图G.6中的示例。
  1. 为了正确解码每个数据包,请检查(打开并使用帧检查器视图)每个数据包中"Base Transport Header"主字段下的"Destination QP"字段,如图G.7所示。
  1. 记下这个数字,然后返回到"分析"选项卡下的"解码分配"窗口。

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

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

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

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

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

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

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

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

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

G.1.5 退出NVMe解码模式

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

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

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

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

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

相关推荐
北海有初拥5 分钟前
【从零实现JsonRpc框架#2】Muduo库介绍
运维·服务器
前进的程序员31 分钟前
ARM 芯片上移植 Ubuntu 操作系统详细步骤
linux·arm开发·ubuntu
程序员JerrySUN32 分钟前
驱动开发硬核特训 · Day 30(下篇): 深入解析 lm48100q I2C 音频编解码器驱动模型(基于 i.MX8MP)
linux·驱动开发·架构·音视频
Jtti34 分钟前
CentOS服务器中如何解决内存泄漏问题?
linux·服务器·centos
firshman_start1 小时前
第十六章,网络型攻击防范技术
网络
楚灵魈1 小时前
[Linux]从零开始的STM32MP157 Busybox根文件系统构建
linux·arm开发·stm32
Caron_xcb1 小时前
大数据基础——Ubuntu 安装
大数据·linux·ubuntu
南暮思鸢2 小时前
应急响应基础模拟靶机-security2
linux·网络安全·write up·应急响应靶机
楠目2 小时前
OSPF综合性实验
网络
寒..2 小时前
OSPF综合实验
网络·智能路由器