Capsule字面意思是胶囊,它在是 NVMe-oF扮演什么角色呢?实际上它从协议层与传输层解耦,就是NVMe oF标准消息容器,并且它是 NVMe-oF 跨网络通信的最小逻辑单元,其用于在网络上传输NVMe命令。它的架构定位如图1所示:

图1 Capsule 的架构定位
Capsule本质上是一个封装结构,其中包含NVMe命令以及相关控制信息。通过Capsule机制,NVMe-oF可以在网络上传输NVMe命令,同时保持NVMe协议原有的命令格式。
在 NVMe-oF中,每个NVMe命令都被封装为一个Capsule。Capsule中通常包含NVMe命令描述符以及必要的控制信息,例如命令标识符、数据长度以及传输方向等。当Initiator需要发送命令时,会将NVMe命令封装为Capsule,并通过网络发送至Target。
Capsule主要分为两类:Command Capsule和Response Capsule。Command Capsule用于发送NVMe命令,而Response Capsule用于返回命令执行结果。在数据读写操作中,Capsule 通常只包含命令信息,而实际数据则通过RDMA或TCP数据通道进行传输。
Capsule机制的优势在于其结构简单且易于扩展。由于Capsule仅负责传输命令信息,因此可以在不同的网络传输协议上实现,例如RDMA、TCP或Fibre Channel。这样NVMe-oF就能够适应不同网络环境,并在保持协议一致性的同时提供灵活的部署方式。
Capsule 与 PCIe NVMe 核心区别如下表:

B站已给出之前的相关性能演示视频,如想进一步了解,请搜索B站用户:专注与守望