前言
从2013开始,NVMe的SSD开始在数据中心部署,之前由Fusionio, Virident, OCZ等200多个vendor混战的PCIE SSD市场最终被NVMe 协议进行了统一。大家可以看一下【1】,了解一下211家SSD Maker当年的盛况。
数据中心行业对于部件的互操作性要求很高,不像通信行业可以自己从做芯片开始,一直到板卡,系统和方案,毕竟他们的客户数量是相对固定。数据中心的大部分供应商需要关注在自己最强的领域,因此整个系统被天然地分成了计算、网络和存储三个方向。
和传统的存储一样,当NVMe 协议标准统一了单机配置,大家自然对于网络存储提出了要求。作为早期的PCIE SSD的头部厂家Fusion-io展示了ioSAN【2】这样的产品,使用10G Ethernet, 40G InfiniBand对外输出存储资源。
同样在NVMe 协议标准发展的过程中,益思芯科技的创始人黄益人先生出于对于技术方向的敏锐感在2013年发明了NVMoE专利,并且设计了全球第一颗支持NVMe over Ethernet的NVMe SSD控制器。
《NVM Express Controller for Remote Access of Memory and I/O Over Ethernet-Type Networks》【3】
第一次浪潮
在牛人辈出的美国加州硅谷,Andy Bechtolsheim【4】作为SUN Micro公司的第一位员工和首席硬件工程师,Google的天使投资人,是投资人的风向标。他同时投资的DSSD【5】和Annapurna Lab【6】无疑是NVMe协议标准出台之后两个亮眼的新星。
在DSSD被EMC收购之后推出的DSSD的系统,使用NVMe over PCIE架构。【7】【8】
在存储的控制系统端使用定制的PCIE 线缆和客户端连接。使用了NVMe over PCIE的策略,提供了高带宽和大容量。在DSSD的超算客户的声明中:【9】
整个DSSD D5系统提供10P的存储容量,提供1TB/s的带宽。无疑在2015年是最快的存储系统了。
而同样被收购的Annapurna Lab的架构使用了当时比较主流的10G Ethernet,来传输NVMe的协议。【10】
在NVMe over Fabric还没有成为标准之前,使用NVMe over Ethernet的技术来提供低延时,高带宽的存储资源。
Annapurna公司被AWS在2015年收购之后,更是推出了一系列Nitro数据中心芯片【11】,目前成为各个数据中心大佬效仿的对象。
DSSD和Annapurna Lab 都是在工业协议的标准没出来之前,就实现了NVMe over Ethernet 的功能,这个可以理解成一种传输协议。因此可以看到在NVMe Express协议组织在2016年7月发布NVMe over Fabric 的协议之后,越来越多的厂商开始提供不同的产品。
NVMe over Fabric
NVMe over PCIE
从NVMe自身的实现来讲,使用PCIE switch 进行扩展和网络化的确是改动最小的方案。Dolphin 【12】基于PCIE switch和NTB Host Adapter的方案就是DSSD方案的延续。但是因为PCIE的协议需要在连接线中传输时钟信号,注定不能像Ethernet一样具有数据中心范围内的扩展性,基于RACK级别的方案肯定可以实现,但是存在扩展性的问题。
PCIE设备的hot plug也是目前主板上支持不完备的功能,基于物理设备的AIC热插拔要比基于热插拔背板的方案相对复杂,而且对于系统的冲击比较大。但是因为这个方案基本不需要任何额外的软件,因此可以算是最原生的NVMe over PCIE了。
NVMe over RDMA
目前大家所称的NVMe over Fabric,主流主要是RoCEv2。RoCEv2实现了RDMA over IP,在部署上就没有之前PCIE的限制。
在RDMA的承载上目前主要分两个流派。RoCEv2 和iWARP,都有代表性的厂商。目前RoCEv2 是基于UDP的,因此需要在数据中心实现无损的网络,这个对于网络的运维和稳定性都是挑战。而基于TCP的iWARP的使用门槛相对比较低。
NVMe over TCP
Over TCP是2018年之后,NVMe 协议组织新增加的标准,主要是因为基于RDMA的方案的使用成本比较高。而基于TCP的方案的部署成本很低。但是这个也带来了Over TCP的性能,特别是延时和Over RDMA的差别。因为RDMA是one side 操作,I/O处理的接收端不需要操作系统和kernel的参与,通过HCA直接对接应用程序。
NVMe over FC
传统的存储厂商最欢迎的就是NVMe over FC【13】了,IBM,NetApp,Dell/EMC等等都推出了这样的产品,利用FC网络的可靠性,在一定范围实现了高可用的存储方案。
这个方案和原来的FC最大的一个差别就是,传统的基于SCSI协议的方案都有I/O Fence的保留设备ID的方式实现设备的共享,但是NVMe over Fabric 协议没有定义这个功能,因此大家更多是使用镜像来实现数据可靠性。
NVMe over Ethernet
益思芯科技的创始人黄益人先生在之前创业的公司CNEX Labs 也推出了具有NVMe over Ethernet功能的产品,在硬件级别实现了NVMe的I/O queue和SSD I/O queue的对接。CNEX Labs的Westlake SSD控制器上提供了40Gbps网络带宽的NVMe over Ethernet的功能。
上图为CNEX Labs开发的基于Westlake控制器芯片的NVMe over Ethernet卡【14】。
NVMe over InfiniBand
随着AI training的普及,InfiniBand从传统的高性能计算进入更多的客户,为了能够让昂贵的GPU全速运转,基于NVMe over InfiniBand的方案应运而生了。
益思芯科技的NVMe 端到端方案
上面可以看到NVMe over Fabric的种类繁杂,作为用户来讲,很难有一个比较清晰的选择。大部分的NVMe over Fabric的方案和传统的存储厂商一样,只关心服务器端,对于用户如何使用并没有太大投入,寄希望开源社区会提供方案。目前市场上用户使用普通网卡或者定制硬件实现的NVMe over Fabric initiator端,在数据的可靠性和系统的安全性上有潜在隐患。
益思芯科技看到这个问题,让用户同时去操控RDMA的HBA和NVMe的SSD的确是一个挑战。用户更加倾向使用NVMe的存储容量,至于这个NVMe SSD在哪里并不是他们需要关心,他们希望自己的网络不需要为NVMe over Fabric做任何额外的修改。
益思芯科技提供的客户端设备,让用户直接看到一个NVMe的设备,而不用关心NVMe SSD的物理位置。对于支持的网络,益思芯科技利用自主开发的P4 网络引擎无缝支持各种底层的Fabric,从而实现了对于NVMe over Fabric的完美统一。在支持标准的NVMe 协议的基础,通过端到端的联动,实现了共享存储的功能。
目前国际上的大厂,Intel【15】和Nvidia【16】也看到了同样的需求,在IPU/DPU中也添加了对于NVMe 客户端的实现。
云原生从Hyperscale开始普及到企业用户,下面是一个对于云原生的SDI(Software-defined Infrastructure)的调查,结果毫无悬念的显示AWS提供的基于NVMe接口的EBS是市场的主导者。
因此可以预见,随着云计算技术的发展,NVMe的接口和Virtio-blk一样会成为云原生的接口,用户不需要再关心自己的存储的物理位置,NVMe 协议无处不在,从而会出现NVMe over Fabric 的再次高潮。益思芯科技的云原生DPU 也势必会成为行业的领导者。
【1】https://www.storagenewsletter.com/2011/06/14/91-ssd-manufacturers-in-the-world-document/
【2】https://thefutureofthings.com/6193-iosan-ssd/
【3】https://patents.google.com/patent/US20150006663
【4】https://en.wikipedia.org/wiki/Andy_Bechtolsheim
【5】https://gigaom.com/2013/04/04/meet-dssd-andy-bechtolsheims-secret-chip-startup-for-big-data/
【6】https://globalny.biz/catalog/id/966
【7】https://virtualgeek.typepad.com/virtual_geek/2015/05/emc-world-day-3-dssd-tech-preview.html
【9】https://virtualgeek.typepad.com/virtual_geek/2015/05/emc-world-day-3-dssd-tech-preview.html
【10】https://community.cadence.com/cadence_blogs_8/b/breakfast-bytes/posts/the-aws-nitro-project
【11】https://en.wikipedia.org/wiki/Annapurna_Labs
【12】https://www.dolphinics.com/download/WHITEPAPERS/nvme_over_pcie_fabrics_device_lending.pdf
【15】https://www.intel.cn/content/www/cn/zh/products/network-io/smartnic.html
【16】https://www.mellanox.com/related-docs/solutions/SB_Mellanox_NVMe_SNAP.pdf