企业存储技术 · 2021年05月31日

NVMe-oF三种协议(FC、RDMA、TCP)对比:成败不只看性能

作者: Winnie shao
来源:企业存储技术

今天的分享/学习笔记主要围绕下面这份资料,跟大家聊聊存储网络方面。

image.png

SNIA Webcast__《NVMe-oF: Looking Beyond Performance Here Numbers__》

扩展阅读:《_NVMe-oF 1.1__规范:多路径、非对称命名空间和NVMe/TCP

背景杂谈:FC 没死、EBOF 叫好不叫座

image.png

从一个异构的“世界”转变为另一个

NVMe-oF的目标是未来存储Fabric互连的霸主,想替代现有的Fibre Channel(光纤通道)、iSCSI、FCoE(实际上没普及就淡出了)三种SAN块存储协议。

-FC-NVMe可以跑在当前主流的FC网络基础设施(交换机和HBA卡)上,与传统FCP(即SCSI协议)共存。设计用于存储阵列的前端主机连接协议,更多针对关键业务应用。

-NVMe/TCP我在《_NVMe over TCP:iSCSI的接班人?_》曾有过介绍;NVMe/RoCE或者IB则是跑在无损的RDMA网络上,已经有一部分全闪存阵列开始支持,它当前的应用范围更广一些。

-RoCE、TCP和iWARP也能用在HCI超融合系统中,比如VMware vSAN和微软的AzureStack(其存储技术曾命名为S2D)。特别是后者较早支持RDMA以太网,在性能上有较大获益(参见Sean高翔老师在2017年支持的项目_《_4__节点近160__万IOPS__:SDS/__超融合测试不能只看数字》)。

image.png

关于“FC已死”的言论很早就有人提过,以太网阵营的iSCSI没能成为“掘墓人”是因为性能和稳定性方面还有些达不到关键业务的要求;FCoE的问题我想留在下文中讨论;如今NVMe/RoCE和IB的性能已经不是问题,而我们也看到FC-NVMe正在延续光纤通道的生命力。

image.png

上图引用自Cavium(收购了QLogic,后来又被Marvell收购)一份几年前的资料。FC-NVMe能够使用SCST和SPDK分别支持内核态和用户态驱动,目前我听到用SPDK来连接“新FC协议”存储阵列的实例还不多。

image.png

三种新的NVMe-oF协议在应用中存在一些重叠的地方。右半边偏向关键业务应用,左边则针对高性能用例;FC-NVMe和NVMe/TCP主要针对通用场景,而NVMe/RoCE or IB则有一部分针对特定场景——比如互联网/云计算服务商、HPC(高性能计算)、机器学习,用于HCI的互连或者连接EBOF(以太网BOF)扩展SSD访问等。

像Oracle数据库这样的关键业务还是青睐稳健的FC-NVMe。

我在NVMe/TCP的应用中也看到了EBOF——从当前来看EBOF在商业市场中有些叫好不叫座,目前主要有Pure  Storage等存储阵列用于后端SSD扩展,比如《NVMeF__的另一种用法:连接AFA__控制器和JBOF》里面写的就是EBOF。而几年前Facebook OCP提到过Marvell转接SSD方案,也只是说找了Accton和Foxconn两家ODM合作之后就没更多公开消息了。

image.png

转接NVMe SSD__到25Gb__以太网的NVMe-oF__——EFOF__究竟适合通用市场还是定制需求呢?

《_NVMe-oF E-JBOF设计解析:WD RapidFlex网卡 & OpenFlex Data24_》我曾经觉得不错,但听说这款产品没能继续做下去。

除此之外EBOF只看到几家小厂公开在做。像《NVMe over Ethernet__:又一家FPGA__互连闪存的Apeiron》这家5年前还在使用私有协议的先行者,如今也不知情况怎样了。

性能篇:NVMe/TCP 软硬Offload 差别明显

image.png

在SNIA这份资料中,将分别从性能、成本、操作简化性、应用、扩展性和安全角度来讨论NVMe over Fabric。首先从性能谈起:

image.png

上面图表对比的是单链路32GbFC与25GbE TCP和RoCE(_这里写的可能不全面,更多见下图_)。我们看到随着并发线程的增加,传统光纤通道4KB随机写IOPS只能达到20万,这应该与SCSI协议有关;而NVMe-oF则跑到了接近80万,这个效率可以匹配PCIe 3.0 x4 NVMe SSD的最高性能了。

image.png

并发线程数10-100__这个区间,是被重点关注的部分

这时把多种NVMe-oF协议加进来才有意思。我们看到纯软件实现的NVMe/TCP表现相对较差,128并发线程才跑到最大性能;FC-NVMe的峰值IOPS更高一些是因为32G对比25G的网络优势;硬件卸载的TCP-Offload和RoCE则互有胜负。

image.png

对比延时,传统FC存储网络从理论上也是完败。比如在单一链路并发线程达到100时会超过500µs,而实际应用中大多是多路径,对业务性能影响又是另一种情况了吧。

image.png

不同NVMe-oF协议的延时对比主要看低并发/队列深度时。纯软件NVMe/TCP接近100微秒了;而RoCE只有大约30微秒;FC-NVMe在50微秒左右,TCP-Offload甚至比它还要稍好一些。

image.png

上面图表对比的是:发起端主机平均每个百分比CPU开销能跑出的I/O数。NVMe/RDMA RoCE在并发线程10以内时表现较好;而NVMe/TCP Offload反而是在16线程以后效率不断提高;软件实现NVMe/TCP在超过128线程以后效率显著下降。

如果按照每1% CPU能跑1000 IOPS计算,那么100%就是10万IOPS,我理解这是单个Core在内核态的表现。

成本和易用性:NVMe/TCP 完胜了?

image.png

如上表:传统意义上认为FC-NVMe针对集中化闪存阵列而不是软件定义存储,不过也有些存储系统加入了NVMe/RoCE的支持,而NVMe/TCP则有着替代iSCSI的前景。

从成本上来看,FC-NVMe可能没有优势。不过我们不应只对比硬件成本,而不考虑SDS的软件和运维开销。

不知这份资料是否站在对NVMe/TCP有利的立场?“边缘/分布式系统扩展”和“云运维模型/自动化”这2项都被列为它的优势所在,这大概是因为TCP协议的优势(其实同时也有劣势),更适合跨数据中心广域传输,并且容错方面比UDP以太网和FC网络要强。

image.png

这里只是对比RoCE和TCP/IP。

-性能:还是RoCE更胜一筹;

-互操作性:TCP/IP最好,因为对交换机几乎没有要求,而RoCE正在改善;

-交互测试成本:TCP/IP评价为“中等”;而RoCE像FC一样高昂;

-网络拥塞影响:TCP/IP中等,可预期;RoCE可见,但不可预期;

-网络管理影响:TCP/IP只是常规操作的一部分;RoCE作为新协议,失去了一些端到端功能。

image.png
初始配置步骤,NVMe/RoCE__总体上相对最复杂

上表是对比不同类型Fabric互连的初始化配置步骤。

-主机端步骤:FC和FC-NVMe只有2步,我理解就是把HBA卡驱动装好,多路径在这里不知算不算必需步骤;NVMe/TCP和NVMe/RoCE以前要麻烦一些,而现在也简化了。

-网络步骤:FC和FC-NVMe为5步(居中),划Zone啥的都是基本操作;NVMe/TCP只要3,对以太网交换机的改动较少;而RoCE在这里要7步,牵涉到RDMA和DCB无损以太网会麻烦一些。

-存储端步骤:FC和FC-NVMe都是7,NVMe/TCP和NVMe/RoCE要增加一点。

image.png

额外附加这个图表算是怀旧吧:)FCoE就是输在了对网络的要求和操作复杂性上。不过我觉得从iSCSI部分来看可能有点夸张——Windows下用Initiator连接存储不算难吧?

应用和扩展性:RDMA还是TCP看场景

image.png

上图所指的“Scale Out后端”,就是RoCE或IB网络连接的JBOF(EBOF),右边机框里面的CPU应该只是管理用途而不在数据路径上。

左边可以是服务器(软件定义存储)或者阵列控制器,这个架构类似我在前面提到过的PureStorage。其实25GbE的带宽并不比12Gb SAS(Multilane x4)更快,只是以太网有更高速率的潜力(只要不惜成本),另一方面就是NVMe SSD后端也没法像SAS盘那样使用JBOD了。其实还是PowerMax高端阵列那样的PCIe Switch直连SSD性能效率最高,但局部扩展性和灵活性不如以太网,还是要看场景。

image.png

这个图表是2种RDMA网络的延时对比,InfiniBand效率高是正常的,不过左边没有交换机直连情况下这个差距相对较小,而右边加入交换机则会增大。除了HPC以及高端存储的控制器间互连之外,对IB有强依赖的应用不多。
image.png
经典SAN__架构

还记得在网络磁盘阵列刚开始流行那些年,我觉得能做FC双控的厂商就挺厉害的,那时还没听说过SSD。时过境迁,如今传统存储价值更多体现在R.A.S.(可靠性、可用性、可服务性)和成熟度上。

image.png

上面图表是iSCSI和NVMe-oF在25GbE网络下的对比。吞吐量方面,iSCSI甚至不太容易充分发挥25G网络了;而延时显然也是RoCE处于优势。可惜iSER没有大规模标准化。

image.png

这里讲的故事是计算存储解耦合。在Rack Scale层面,NVMe-oF/RoCE可以达到接近本地磁盘(SSD)的性能;而是否使用NVMe/TCP则依赖于对性能的需求。

image.png
关于超融合和Scale-Out存储,我在本文开头聊过了。

image.png

GPUDirectStorage(GPU直连存储)也需要RDMA网络,这样才能从绕过Receive和Transmit端的CPU,以远程直接内存访问的方式,读写操作EBOF中SSD的CMB缓存。

image.png
从Fabric互连的扩展性来看:

-左边的机架内部/小规模扩展,GPU节点和存储阵列(通常是NAS)之间,NVMe/RoCE or IB就挺好;

-中间和右边为跨机架互连/较大的集群,计算节点和存储控制器之间可以是NVMe/TCP/RoCE/FC,有一处区别就是阵列直连JBOF还是通过NVMe-oF网络连接“EBOF”;

-最上面到远程数据中心的连接,只有NVMe/TCP支持了。

image.png

举个例子吧,Dell EMC在PowerStoreOS 2.0存储控制器软件更新中,加入了NVMe over FC支持。看来端到端NVMe支持应该是未来新型全闪存阵列的标配了。

安全性:FC-SP-2、TLS和IPsec

image.png
由于潜在的数据中心安全威胁,支持对静态和传输中的NVMe数据加固(加密保护)十分重要。

image.png

如上图,为了身份验证、数据完整性和安全加密,有几种针对不同协议的保护技术:

-FC-SP-2:在传统FC协议2112 byte数据包Payload的头部拿出32字节用于ESP Header,尾部16字节+Pad用于ESP Trailer;

-TLS(TransportLayer Security):NVMe/TCP已经支持,许多网卡能提供完整卸载加速;

-IPsec:NVMe/TCP和NVMe-oF RoCE已经支持,许多网卡能提供完整卸载加速。

就写到这里吧,看来安全性部分还是FC-NVMe更胜一筹。

参考资料  https://www.snia.org/sites/de...



推荐阅读

注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。 进一步交流技术可以加我的微信/QQ:490834312。
尊重知识,转载时请保留全文,并包括本行及如下二维码。感谢您的阅读和支持!《企业存储技术》微信公众号:HL_Storage,也欢迎关注企业存储技术极术专栏,定期更新。
42.jpg
推荐阅读
关注数
5555
内容数
236
关注存储、服务器、图形工作站、AI硬件等方面技术。WeChat:490834312
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息