持久内存 - 🧩 图 432:TLS 安全通道建立示例分析(Figure 432) (第384页)
NVME2.0协议解读 1 min read

持久内存 - 🧩 图 432:TLS 安全通道建立示例分析(Figure 432) (第384页)

Blog Author

我们现在继续深入讲解 NVMe Base Specification 2.0b 第 8.13 节:NVMe over Fabrics 的安全机制,本页聚焦于 图 432:TLS 安全通道建立流程NVMe In-band Authentication(带内认证)细节


🧩 图 432:TLS 安全通道建立示例分析(Figure 432)

该图简化展示了主机与控制器之间使用 TLS 安全通道 建立连接并设置 NVMe 传输队列 的流程:

🔁 流程步骤解析:

步骤 操作 主体 说明
1 TCP/TLS 会话协商 主机与控制器 双方通过 TLS 完成认证、加密参数协商,建立“结构安全通道”(Secure Channel)
2 Connect 命令交换 主机发起 → 控制器响应 设置 NVMe queue 并将主机与控制器关联起来
3 队列建立完成 双方 安全通道 + NVMe 传输队列均已准备完毕,可开始数据交换

🔐 NVMe 带内认证机制解析(In-band Authentication)

建立安全通道和队列之后,下一步就可能进入协议内部的“身份认证流程”,即所谓的 NVMe In-band Authentication


🎯 认证的触发条件:Connect 响应中的 AUTHREQ 字段

  • AUTHREQ 位字段(位于 Connect 响应 Capsule 中)决定了是否需要认证。
AUTHREQ 状态 控制器行为 说明
全部为 0 无需认证 主机可立即发送所有命令
任意位为 1 需认证 控制器要求主机通过带内认证后,才允许执行 Fabrics / Admin / I/O 命令

📌 认证成功前的命令限制:

若认证未完成,控制器将拒绝除下列命令外的所有命令:

  • Connect
  • Authentication Send
  • Authentication Receive

若主机提前发送其他命令,控制器将返回:

Authentication Required(需要认证)状态码。


✅ 认证成功后:

  • 主机可使用与该队列类型相匹配的所有命令(如 Fabrics Admin 命令、I/O 命令等)

🔄 重新认证(Re-authentication)

主机可以随时重新发起认证事务(例如:更换凭据、刷新会话)。

  • 若控制器返回 AUTH_Failure1
  • 控制器应终止所有命令并断开连接,状态码为 Operation Denied
  • 若主机返回 AUTH_Failure2
  • 主机应主动断开连接

🕓 超时处理机制(Authentication Transaction Timeout)

如果认证过程中由于长时间无响应,发生“认证事务超时”,控制器应终止该事务。

⏳ 判断依据:

条件 判断方式
Keep Alive Timer 启用 使用 Keep Alive Timeout 字段设定的时间(参见 Figure 380)
Keep Alive Timer 未启用 默认超时为 2 分钟

🧱 不同超时场景的处理方式:

场景 控制器行为
初次认证时超时 视为认证失败,终止 NVMe Fabrics 连接
重新认证时超时 不视为认证失败,但主机若继续发送认证命令,控制器应返回 Command Sequence Error

📝 小结:Connect 后的认证行为总览

动作 是否允许 说明
Connect 成功后立即发命令 ❌(若 AUTHREQ ≠ 0) 需完成认证才能继续
Authentication Send/Receive 用于交换身份验证协议报文
Fabrics / Admin / I/O 命令 ❌(若未认证) 会被控制器拒绝
认证成功后 所有支持的命令均可使用
重新认证失败(由控制器通知) 控制器断开连接
认证事务超时 ⚠️ 初次视为失败;再次则不判失败但命令失败

如果你需要我继续解释: - 图 433 开始的 Authentication Send/Receive 命令结构 - 或者具体的状态码、错误处理策略 - 亦或想以中文案例场景方式理解认证机制

都可以继续告诉我,我可以继续带你深入解读第 8.13 节剩余部分!