持久内存与安全机制 - 第385页
NVME2.0协议解读 1 min read

持久内存与安全机制 - 第385页

Blog Author

我们继续深入讲解 NVMe Base Specification 2.0b 第 8.13 节 的最后一部分,聚焦于 NVMe In-band Authentication(带内认证) 的具体实现方式,特别是图 433 所示的实际认证事务过程与命令字段设置方式。


📘 图 433:NVMe/TCP 的认证事务示意(Authentication Transaction)

🔁 整体流程简析:

步骤 操作 主体 说明
1 建立 TCP 会话 主机与控制器 使用 TCP 完成三次握手,建立基本传输通道
2 Connect 命令交换 主机发起,控制器响应 建立 NVMe queue,并将主机与控制器绑定
3 启动认证事务 主机 → 控制器 使用 Authentication Send / Receive 命令进行身份验证
4 认证成功后 双方 Queue 准备就绪,可开始正式 I/O 操作

这个图的流程强调:

使用 NVMe over Fabrics(特别是 TCP 绑定)时,身份认证作为一个完整事务插入在 Connect 成功后,控制器才允许进行后续操作。


🔐 8.13.2.1:带内认证协议的协议字段要求解析

在该部分中,协议明确了认证命令如何通过 Authentication SendAuthentication Receive 命令格式传输认证报文。


🧾 安全协议标识符(SECP)

  • 使用 SECP = E9h 来标识“NVMe专用认证协议”
  • E9h 是由 SCSI SPC-5 标准专门分配给 NVMe 的认证协议 ID

🔁 报文字段说明

以下两张图表展示了认证命令中关键字段的设置方式:


📤 Authentication Send 命令字段设置(图 434)

字段名 说明
SPSP0 01h 子协议选择器字段(Subprotocol Selector),表示“NVMe认证协议”
SPSP1 01h 子协议子选择器(通常为 01h)
SECP E9h 表示使用“NVMe 带内认证协议”
TL 数据长度 表示要传输的认证数据的字节数

📌 TL(Transfer Length)即表示认证报文的长度(单位:字节),由主机决定每次传输多少数据。


📥 Authentication Receive 命令字段设置(图 435)

字段名 说明
SPSP0 01h 同样是子协议选择器
SPSP1 01h 子选择器
SECP E9h NVMe 认证协议

📌 注:虽然表格没有完全展开,但与 Send 命令类似,这些字段的含义保持一致。


🕑 控制器处理延迟说明

控制器处理 Authentication Receive 命令时,可能存在延迟,例如:

  • 调用 TPM(受信平台模块)或外部安全引擎
  • 执行复杂的加密计算或证书验证

因此:

主机应容忍并预期 Authentication Receive 命令响应时间可能较长,不要随意超时或中断。


✅ 小结:你该记住的核心要点

内容 解释
认证协议 ID(SECP) E9h,专门用于 NVMe 认证
子协议选择器 SPSP0/SPSP1 通常均为 01h
Send vs. Receive Send 用于主机发起认证报文,Receive 用于控制器返回认证报文
可组合认证协议 当前规范允许未来添加不同子协议,通过 SPSP 区分
认证延迟处理 Receive 命令可能被控制器“阻塞处理”,主机要容忍时间

接下来,如果你想我继续讲解:

  • 8.13.3 ~ 8.13.4:认证流程的各类消息定义(如 AUTH_Success、AUTH_Failure)
  • 或者深入到 TLS/IPsec 与 NVMe 认证策略的结合使用场景
  • 以及 认证失败、超时、断连等错误处理机制

只需要说一声“继续”或指定小节编号,我会立刻接上详细解析。