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

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

Blog Author

在第 4 章《Message Servicing Model(消息服务模型)》中,NVMe-MI 规范为管理命令的传输与处理定义了清晰的结构体系。我们将逐步解析 第 4 节第 47 页 的内容,并图解总结,帮助你系统性理解 NVMe-MI 的消息分类和交互机制。


📘 一、消息服务模型概述(Message Servicing Model)

NVMe-MI 支持三种消息处理模型:

类型 简介 小节
a) Out-of-Band Request 管理控制器(如 BMC)通过 MCTP 向管理端点发送命令 §4.2
b) In-Band Tunneling Request 主机软件通过 NVMe Admin Command 传递 NVMe-MI 消息 §4.3
c) AEM Servicing 管理端点检测到异步事件后,向控制器主动报告 §4.4

所有这些机制都使用 NVMe-MI Message(见 §4.1)作为传输格式。


📂 二、NVMe-MI 消息分类(Message Taxonomy)

Figure 26 展示了 NVMe-MI 消息类型的完整分类结构,大致可以分为三大类:

1. 📨 Request Message(请求消息)→ 发起方

由 Requester 发起,包括两种类型:

  • Control Primitive(控制原语):仅用于 Out-of-Band
  • 用于影响先前命令处理,如暂停、重播或状态查询
  • Command Message(命令消息):包括三类命令
  • NVMe-MI Command(管理命令)
  • NVMe Admin Command(标准 NVMe 管理命令)
  • PCIe Command(访问配置空间的命令)

2. 📩 Response Message(响应消息)→ 接收方响应

由 Responder 返回,用于回应请求消息:

  • Success Response(成功响应)
  • Error Response(错误响应)

3. 📡 Asynchronous Event Message(AEM 异步事件消息)

  • 当某些 Asynchronous Events(AEs) 被触发(如温度报警、健康变化等),
  • Management Endpoint 会通过 Out-of-Band 主动向 Management Controller 发送 AEM
  • AEM 是不支持 In-Band 模式的!

🔁 三、请求响应交互模型

Out-of-Band 交互路径:

  • 管理控制器(BMC) → 管理端点
  • 通过 MCTP 传输命令(通常是 I2C 或 PCIe VDM)

In-Band Tunneling 交互路径:

  • 主机驱动 → NVMe Controller
  • 使用 Admin Command Queue 发送 NVMe-MI Send / Receive

🧩 四、图解分类结构(Figure 26 解构)

NVMe-MI Message
├── Request Message
│   ├── Control Primitive         ←(仅 Out-of-Band 支持)
│   └── Command Message
│       ├── NVMe-MI Command       ← 专属管理命令集
│       ├── NVMe Admin Command    ← 标准 NVMe 管理命令
│       └── PCIe Command          ← 配置访问命令
├── Response Message
│   ├── Success Response
│   └── Error Response
└── Asynchronous Event Message (AEM)

✅ 小结

  • 控制原语是 Out-of-Band 独有的机制,用于管理命令通道状态;
  • Command Message 统一了多种命令通道(NVMe-MI / Admin / PCIe);
  • AEM 是设备主动触发的异步警告机制,仅在 Out-of-Band 中使用;
  • 所有消息在格式上共用 NVMe-MI Message 结构,但根据机制(带内/出带)差异会有不同约束。

如果你想深入某一类消息的结构(如 AEM、NVMe-MI Command),或者对控制原语如何暂停/重放命令感兴趣,我可以继续展开对应小节内容。需要我深入哪部分?