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端口设置数据包),如果需要数据包解码,则必须手动修复解码。
手动更改解码:
- 转到“分析”选项卡并点击“解码分配”。在“NVMe QP端口(十六进制)”被学习或添加之前,表格可能看起来像图G.6中的示例。
- 为了正确解码每个数据包,请检查(打开并使用帧检查器视图)每个数据包中“Base Transport Header”主字段下的“Destination QP”字段,如图G.7所示。
-
记下这个数字,然后返回到“分析”选项卡下的“解码分配”窗口。
-
将十六进制数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解码将不再正常进行。