作者 唐杰
和大部分技术一样,通往罗马的路不止一条。我们来看看目前市场的竞争态势。NVMeoF作为新型存储介质的互联协议,在一开始就不同的厂商使用不同的方案。在我去年的NVMeoF系列中,讨论了NVMeoF支持的多种网络传输协议,目前来看,基本上都聚焦在了ROCEV2上。目前在全球的Hyper-Scale数据中心,Microsoft已经实现了规模部署。
在过去的两三年中,发生在大型数据中心的网络侧一个重大的事件就是25G Ethernet的出现和部署。
在大部分的Hyper-Scale数据中心中都部署了25G,因为25G目前最大的供应上Mellanox可以支持RDMA,因此将RDMA变成了数据中心的硬性需求。和前面讲的一样,因为有了微软的大规模部署,因此RoCEv2目前是最有竞争力的网络协议之一,它能够在Ethernet的数据链路层上提供低延时,低CPU利用率的网络传输。
但是, RDMA并不是所有的故事。Intel作为一直没有RDMA的网卡厂家,走上了CPU Polling的这条路,于是有了DPDK,SPDK,TCP on DPDK等等。使用大页内存和CPU的Polling,从而在网络上bypass OS的kernel,在用户态实现和用户的应用的对接。在25G的RDMA时代,阿里云最近发布的神龙服务器也是一个代表。
对于xPDK家族的未来,可以看到很好的延续了Intel的X86传统,通过CPU和DRAM的升级来像升级PC一样升级服务器的I/O系统。在用户态实现I/O的功能,从而避免Kernel I/O堆栈带来的延时。但是因为I/O路径,以及目前CPU的NUMA架构的原因,xPDK之类的方案的延时有明显的下降,但是还在要比硬件加速方案高一些。
对于NVMeoF来讲,目前除了FPGA方案之外,还有两个不同的方向:
-
Intel 的SPDK,以及基于X86 CPU的Polling 方案。
通过SPDK的框架,大家可以看到,Intel计划在CPU Polling的基础上使用用户态的存储服务,为了更好的支持Flash存储介质,并增加了对于硬件压缩的支持( Intel QAT)。
-
Mellanox, Broadcom,Marvell 等芯片公司的ASIC 方案。
这个方向的厂商基本上都是采用众核+NIC的集成方案,在众核上使用多个内存通道,甚至可以在ARM core上实现内部的SPDK方案(如果Intel支持的话)。
目前三种方案的对比如下,