第3章 物理层与MCTP传输 - 页码45
NVMe-MI 1 min read

第3章 物理层与MCTP传输 - 页码45

Blog Author

深入分析:NVMe-MI 消息的出带外与带内隧道传输机制


📦 Out-of-Band 消息传输的错误处理

Out-of-Band 传输机制中,错误处理机制非常重要,确保数据的可靠性和传输的正确性。如下是关键的处理步骤和要求:

  1. 错误包丢弃
  2. 丢弃包:在遇到错误情况时,Management Endpoint 会丢弃数据包。这些错误通常包括:

    • 意外的中间包:在预期的数据流中,如果接收到不符合顺序的包,系统会丢弃。
    • 意外的结束包:如果数据流的结束包位置不符合预期,系统也会丢弃包。
  3. 响应字段更新

  4. 丢弃的包会触发 Get State Control Primitive Success Response 字段的更新,丢弃的包的对应位被设置为 ‘1’。这表明存在错误并且需要对接收到的状态进行调整。

🔁 带内隧道传输机制

带内隧道机制则是通过 NVMe 管理命令(如 NVMe-MI SendNVMe-MI Receive)来进行消息传输。以下是该机制的基本流程和要求:

  1. 传输方式
  2. 通过 NVMe Admin Queue 中的 NVMe-MI SendNVMe-MI Receive 命令,主机软件与 NVMe 存储设备的管理端点进行直接通信。

  3. 命令的具体细节

  4. 参考 NVM Express Base Specification 和本规范第 4.3 节,进一步了解这些命令如何支持带内隧道机制。

  5. 带内传输的消息格式

  6. Out-of-Band 机制不同,在带内隧道中,消息不会被拆分成多个 MCTP 包。消息直接通过命令传输,消息的最大大小由 NVMe 基础规范 中定义的 最大数据传输大小 来限制。

  7. 对比两种传输机制

  8. Out-of-Band:通过 MCTP 协议传输,可以处理较大的消息并支持 CRC 校验,确保消息的完整性。
  9. In-Band:直接通过 NVMe 命令进行传输,更加依赖硬件和操作系统的支持,适合在不使用额外物理通道时传输消息。

📚 总结:出带外与带内隧道的差异

  1. 出带外机制
  2. 使用 MCTP 协议传输数据,能够处理较大的消息,并且消息的完整性通过 Message Integrity Check (MIC) 进行校验。
  3. 包含复杂的错误处理机制,在发生错误时,系统会丢弃错误的包并在响应中进行标记。

  4. 带内隧道机制

  5. 直接通过 NVMe 命令进行数据传输,消息的大小受限于 最大数据传输大小,而不需要拆分成多个 MCTP 包。
  6. 主要用于主机与设备之间的高效通信,但在消息的完整性和错误恢复方面相对较少依赖外部协议。

🔧 建议的进一步阅读

  1. NVM Express Base Specification:深入了解如何通过 NVMe 命令管理存储设备,特别是关于 NVMe-MI SendNVMe-MI Receive 命令。
  2. MCTP Base Specification:了解 MCTP 协议的详细内容,特别是如何在硬件层面进行数据传输和消息完整性校验。
  3. Message Integrity Check:进一步了解 CRC-32C 校验 及其如何确保消息在传输中的完整性,避免数据损坏或篡改。

如果有任何问题或需要详细解释某一部分,请随时提问!