附录 - 实例与示例 - 页码206
你已经进入 Appendix D(附录 D) 的 AEM 时序图分析第二个案例(Figure 202),这是非常关键的部分,特别是对 AE 丢失检测与 AEM Transmission Failure 状态管理的理解至关重要。
下面为你详细梳理 Figure 202 的流程逻辑,结合状态转换图 + 行为解释,帮助你深入掌握:
🧭 Figure 202:AEM 多次重试失败后的处理流程
🧩 事件序列详解:
1️⃣ AE 功能启用
- 控制器通过
Configuration Set
启用 AE 机制。 - 设置:
- AEM Delay Interval(延迟发送间隔)
- AEM Retry Delay(重发前延迟)
- Endpoint 进入 AE Armed State
- AEM Delay Interval 启动 ✅
2️⃣ AE #1 事件发生(AEM Delay 已结束)
- 由于 AEM Delay 已结束,立即进入 AEM Transmission Interval
- Endpoint 状态切换为 AE Disarmed
- 准备发送第一个 AEM
3️⃣ 第一次 AEM 发送
- AEM 包含 AE #1(唯一事件)
- Generation Number = 0h,Retry Count = 0h
- Endpoint 等待 Ack,进入 AEM Retry Delay 等待周期
4️⃣~6️⃣ 多次重试过程
- 未收到 Ack,执行 7 次 Retry:
- 每次:
- Retry Count 递增(1h~7h)
- Generation Number 保持 0h
- AEM 包含的 AE 仍然是 AE #1
- 每次 Retry 后都进入 Retry Delay 等待 Ack
7️⃣ 第 8 次重试后仍未收到 Ack(最大重试次数)
- Endpoint 宣告当前 AEM 失败,结束 Transmission Interval
- 设置 Health 状态中的:
- AEM Transmission Failure 位 = 1
- Endpoint 保持 AE Disarmed 状态
- 不再尝试发送 AEM,需外部干预
8️⃣ AE #2 事件发生(AE Disarmed)
- AEM 不会被发送!
- AE #2 被丢弃(⚠️ 严重影响 AE 可观测性)
- Endpoint 不再自动尝试传输 AEM,直到重新配置 AE 功能
🔁 管理端如何恢复?
管理端此时应该:
- 使用 NVM Subsystem Health Poll 命令 查询 AEM Transmission Failure 状态
- 若发现失败位被置位,说明之前有 AE 未能成功通知
- 可重新发起
Configuration Set
启用 AE 功能,进入 AE Armed 状态 - 之后的新 AE 才能重新触发 AEM
🔍 小结:AEM 失败处理的三大核心点
机制 | 描述 |
---|---|
Retry 限制 | 最多重发 8 次,每次等待 AEM Retry Delay |
失败标记 | AEM Transmission Failure 位(Health Poll 可读) |
AE 丢弃机制 | AE 发生于 AE Disarmed 时,不再产生 AEM,必须重新配置 |
🎯 实用建议
- BMC/MC 实现方: 定期轮询 Health Status(即使未收到 AEM),可发现 AEM Transmission Failure。
- NVMe-MI 协议实现方: 应注意在 AE Disarmed 时忽略 AE 的处理,以避免误报。
- 测试建议: 模拟 Ack 丢失、Management Controller Reset 等情况,观察是否正确进入失败流程。
如果你愿意,我可以帮你画出整个 Figure 202 的状态时序图(AE Armed/Disarmed + Delay/Retry/Failure 的交替关系)用于总结回顾或者制作讲义。
你是否想继续深入后续关于 AEM Retry Failure 清除机制?比如怎样重新恢复 AE 通知?