NVMe2.0三种传输模型

以下内容基于NVMe2.0协议规范,第2章NVMe Base Specification – NVM Expresshttps://nvmexpress.org/developers/nvme-specification/

 

NVMe三种传输模型:

包括内存模型、消息模型、消息/内存模型(图片来自NVMe官方文档)

命名空间:

一个NVMe控制器可以支持多个命名空间,每个命名空间有一个namespace ID。

一个命名空间只对应一种I/O命令集。

命名空间通过Namespace Management和Capacity Management命令被创建和删除。

一个命名空间的capability和设置通过Identify Namespace结构体、IO命令集中的Identify Namespace结构体和Independent Identify Namespace结构体来表示。

基于内存的传输模型

与NVMe1.x一致,用于PCIe,不详细解释。

可参考(12条消息) NVMe 协议详解(一)_IFappy的博客-CSDN博客_nvme协议

基于消息的传输模型

用于NVMe-oF。与内存模型有以下不同:

1,I/O SQ和CQ之间是1对1的关系,不支持多个SQ对1个CQ。

2,没有定义Controller对host的中断,需要主机网络接口做这个中断的工作。

3,对于I/O SQ和CQ的创建与删除采用不同的机制。

4,不支持位于分离的缓冲区中的meta data,即不支持Metadata Pointer字段。

5,不支持PRP,支持SGL。Admin, I/O, Fabrics命令集都支持SGL。

6,不支持CQ流控。

7,只要host和controller约定好,可以禁用SQ流控。

NVM 子系统端口

一个NVM子系统可包含1至(64Ki-16)个controllers。

一个NVM子系统可包含一个或多个NVM子系统port。

一个NVM子系统port是子系统与网络之间的协议接口。1至多个物理网络接口可以形成一个协议接口,也就是一个NVM子系统port。

每个子系统port有一个16-bit标识符Port ID。每个子系统port由NQN和Port ID来唯一标识。

NQN是NVM Subsystem NVMe Qualified Name。

一个NVM子系统中的不同ports可以支持不同的NVMe传输。

一个NVM子系统port可以支持多个NVMe传输,前提是more than one NVMe Transport binding specifications exist for the underlying fabric,例如,一个port可以同时支持iWARP和RoCE。

在子系统中,controller和port之间可以自由分配。但是一旦建立连接,一个controller就和这个port建立了绑定。(一个controller只能绑定一个port,一个port可以和多个controller绑定)

一个controller一次只能关联一个host。

多个hosts可以通过同一个port连接不同的controllers。

NVMe-oF在多路径I/O和共享命名空间方面,与基于内存的传输模型相同。

探索服务(Discovery)

Discovery Service提供以下服务:

(1)为host发现NVM子系统及其命名空间;

(2)发现到一个NVM子系统的多条路径;

(3)发现静态配置的控制器;

(4)建立到Discovery controller的永久连接;(????)

(5)接收来自Discovery controller的异步事件通知。

Discovery Service是一个只能包含Discovery controller的NVM子系统,不支持其他类型的控制器。

Authentication

包括fabric secure channel和NVMe in-band authentication.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值