原理剖析 | 基于以太网的超高速存储技术实践

发布时间:2023-03-03 | 信息来源: | 发布作者:沃趣科技

前言

随着互联网的不断发展,数据的规模爆发式增长,根据《2021-2025年中国大数据行业竞争分析及发展前景预测报告》研究表明,中国数据增量年均增速超过30%,2018年中国新增数据量为7.6ZB,成为世界第一数据生产国。预计2025年将达到48.6ZB。

为了满足日益增长的存储需求,数据存储技术从介质、架构、协议、模式方面都存在巨大转变。由原本的机械硬盘存储、易失型内存演变为了全闪存储、非易失性内存。架构从集中式存储演变为了软件定义存储、超融合架构。协议从AHCI、SCSI协议演变为了NVMe协议。

NVMe和NVMe Over Fabric的出现,打破了传统SCSI协议对性能的限制,多队列模型能更好的发挥高性能存储介质的性能。在如今的存储网络当中,NVMe及NVME Over Fabric已经成为高性能存储架构的标杆。

 

RDMA

为了解决数据中心内爆炸式增长的数据存储和读取效率问题、应用业务对延迟的要求日益增高,对数据中心网络的要求是:更低的时延、更高的带宽。为了解决此问题,RDMA(Remote Direct Memory Access)技术应运而生。

在传统的TCP/IP中,从网卡收到数据包,到应用层接收,需要经过网卡ring buffer ——>内核空间——>用户空间,带来大量CPU、内存的开销,且增加了时延。RDMA技术可以实现kernel bypass,在网卡当中就完成数据包的解析,直接将数据包传输至应用层,不需要额外的CPU开销,降低了时延。

 

因为包的解析都下沉到了网卡中,所以RDMA特性需要网卡的支持。

目前RDMA主流实现方式有以下三种

  • Infiniband
  • RoCE(基于UDP)
  • iWRAP(基于TCP)

RDMA起初只是在InfiniBand上实现,由于Infiniband在设计之初从硬件层面保证了数据包不丢,所以RDMA重传机制设计的非常简单:go-back-N重传。简单来说就是当有一个数据包丢失时,后续所有的数据包都需要重传。

相对来说,在TCP协议上则只需要将丢失的包重传即可,所以在RDMA网络当中丢包,对传输性能有非常大的影响。

Infiniband天然就保证了不丢包,iWRAP以及RoCE是基于以太网实现的,而以太网是一个尽力而为的网络,iWRAP使用了TCP协议保证无丢包,相对来说时延会略高。而RoCE(v2)则使用了UDP,延迟会比较低,但是对于网络有更高的要求,需要底层网络来保证无损。

 

RoCE的实现

无损网络

在上文的介绍中,明确了RDMA如果产生丢包,对性能会有很大的影响。那么如何做到以太网中没有丢包?

第一个能想到的就是将所有交换机当中的buffer都加大。假如buffer够大,碰到速率不匹配时,会将包先放在缓存中。

但是包放在缓存中会导致时延上升,缓存过大会导致时延很高,本身使用RDMA主要就是为了保证低时延,只能采用小buffer。在这种前提下,能够实现无损网络的方式为PFC以及ECN。

  • PFC

PFC全称Priority-based Flow Control。顾名思议,它是Flow Control的升级版本。Flow Control是基于端口做的检测,当网络出现拥塞时,会将整个端口的流量都停止掉,也就是说可能会由于一些不重要的数据流,影响到非常重要的数据流。这显然不是我们想看到的结果。

PFC会将网络流量分为8个优先级,可以针对不同的优先级设置流控的策略。在队列中的buffer消耗达到水位线时,会通过发送Pause帧通知上游设备暂停发包,防止缓存溢出丢包。如下图,队列7的buffer使用达到水位线,则本端交换机会向上游交换机发送Pause帧,同时不影响其它队列的正常发送。

 

  • ECN

ECN:Explicit Congestion Notification,为显示拥塞通知。ECN是报文在网络设备传输过程中,发生拥塞并触发ECN水线时,会使用IP报文头的ECN字段标记数据包,表明该报文遇到网络拥塞。当接收端接收到带ECN的报文时,则会马上向源端发送一个CNP报文。CNP消息里包含了导致拥塞的Flow信息。源端服务器收到后,通过降低相应流发送速率,缓解网络设备拥塞,从而避免发生丢包。

CNP报文在传输回源端时,也有可能发生拥塞,导致源端收到的不及时。所以可以让CNP报文走单独的PFC队列,保证优先转发ECN不是必须配置的(但是建议配置),ECN能够进一步减缓拥塞。从充分发挥网络高性能转发的角度,我们需要通过调整ECN和PFC的buffer水线,让ECN快于PFC触发,即网络还是持续全速进行数据转发,让服务器主动降低发包速率。如果还不能解决问题,再通过PFC让上游交换机暂停报文发送,虽然整网吞吐性能降低,但是不会产生丢包。

  • 交换机

想实现无损网络就得让网络设备支持PFC/ECN功能。当然,并不是所有的交换机都支持这些功能。目前各大产商都有支持此功能(DCB)的交换机。

无损网络配置完成后,可以制造一些拥塞场景进行测试,比如使用RDMA二打一流量进行测试,假如性能损失严重,则说明无损网络配置存在问题。部分交换机也可以在命令行提供丢包信息查看。

 

NVMe-oF

NVMe是一个逻辑设备接口规范,与SCSI和SATA协议相比,NVMe标准将访问时间缩短了几个数量级。

NVMe Over Fabric(简称NVMe-oF)基于NVMe技术发展而来。NVMe适用于服务器内部或直接连接存储设备。NVMe-oF使用基于消息的模型通过网络在主机和目标存储设备之间发送请求和响应,简单来说,NVMe-oF可以将存储设备通过网络传输到另一个节点。

相比之前存在的iSCSI、FC存储协议,NVMe-oF在性能、时延、并行度、可扩展性上都存在巨大优势 。

NVMe-oF可以在TCP/RDMA上实现,基于RDMA的实现中,由于RDMA低延迟、低抖动和低CPU使用率的特性,性能和时延表现都会会优于基于TCP的实现。综上所述,NVMe over RDMA总体会更好一些。


落地实现及实际性能

了解了RoCE的实现方式以及NVMe-oF这款基于RDMA的应用后,就可以开始进行测试了!

首先构建一个简单的环境测试一下基于RoCE环境的NVMe-oF的性能,搭建了一个环境如下图所示。两台服务器各使用一张支持RDMA的100GB网卡,连接至支持DCB功能的交换机,存储节点插10块P4610 NVMe SSD(确保存储节点性能足够优秀)。

 

对环境进行简单的配置以支持RDMA

  1. 在服务器上开启ECN功能、PFC队列。并设置流量的TOS值(TOS值是IP报头的一个字段,为了区分流量是进入哪个PFC队列)。基于当前环境,只需要一个队列。
  2. 在交换机上配置ECN功能、PFC功能。参数需要与服务器侧适配。对于水位线配置可先采取各产商建议值。

配置完无损网络后,需要配置NVMe-oF协议,将存储节点的盘输送到计算节点上,配置完成后,使用FIO工具,对输送上来的块设备性能进行测试。

基于此环境,性能如下

 

由于是100GB的网卡,吞吐理论最佳在12GB左右,可以看到顺序读写的吞吐已经接近极限值。随机读写也达到了100w左右,并且延迟也处于较低的水平。

由于性能基本已经达到网卡的极限,现在采用scale-out方式再新增几个节点。

将架构改成2台应用节点,3台存储节点,为每台节点插上两块100GB RDMA网卡。

同时优化PFC配置,让ECN回复的CNP报文单独走到一个队列,并使用严格优先级保证最优先转发。

基于此环境,测试性能结果如下

 

可以看到远端应用节点性能也已经达到了网卡的极限值,基于目前的测试,在传输的过程当中,性能基本没有损耗。

那么与InfiniBand性能对比测试结果如何呢?

基于当前环境进行一个对比测试

 

通过测试发现,RoCE的性能略低于IB。

测试完了FIO,基于数据库表现对RoCE与InfiniBand做一个简单的对比测试。基于上述环境搭建Oracle RAC,全用HammerDB对数据库进行压测。

基于当前环境,测试RoCE与InfiniBand环境下数据库性能,结果为RoCE与InfiniBand性能持平。

总体来说,NVMe-oF情况下IB略优于RoCE,数据库情况下IB与RoCE持平。


选择

从配置上说,InfiniBand的使用较为简单,RoCE的使用方式较难,但成本相对较低。并且由于RoCE是基于以太网的,在对外以及和传统网络的兼容性上有极大的优势。具体的选择还需要根据业务场景。

 

总结

本文简单的描述了基于以太网RDMA的实现方式,并使用FIO工具对NVMe-oF进行了简单的测试,横向对比了Infiniband性能。通过实验,对NVMe-oF以及RDMA的性能有了一些了解,相比传统存储架构,NVMe-oF性能有了极大的提升。在底层存储性能越来越高的情况下,NVMe-oF或许是越来越不可或缺的一环。RoCE是目前大环境下一个不错的选择。

 

参考资料

六年间全球数据总量爆发式增长 中国数据增量年均增速超过30%:

https://www.chinairn.com/hyzx/20210527/100320817.shtml

下一代数据存储技术研究报告(2021年)

浅析RDMA网络下MMU水线设置 浅析RDMA网络下MMU水线设置:

https://www.ruijie.com.cn/fa/xw-hlw/61714/

详解:什么是NVMe over Fabrics?:

https://3d83611d.wiz06.com/wapp/pages/view/share/s/0ZwS4t1uXQPY2SmgZY2xRrOB3ZDb9q1AZkkG2KdeoX1lWHX8




沃趣科技,让客户用上更好的数据库技术!