欢迎user
分布式存储是通过网络将各个独立的存储节点互联组成集群,并通过网络对外提供服务,从前面介绍的分布式存储架构和原理可以很明显的看出,网络是影响集群整体性能的另一个重要因素。数据读写、复制、恢复、再平衡等关键行为,以及各组件间各端口的心跳检测和通信,无一不受到网络的影响。如今,在存储节点单机性能不断提高的背景下,网络的重要性愈发明显,对网络的诉求也越来越高。
随着节点网络带宽的提升,尤其是进入100G+的时代,传统TCP/IP协议栈内核转发的瓶颈尽显,为了解决传统TCP/IP协议在网络传输时过于复杂的数据处理环节,及其所引入的较高时延和对服务器资源的过度消耗等问题,采用RDMA技术则是当下一种理想的选择。
RDMA技术实现了在网络传输过程中两个节点之间数据缓冲区数据的直接传递,在本节点可以直接将数据通过网络传送到远程节点的内存中,具备零拷贝、内核旁路和CPU卸载三个标志性的技术特点。数据平面工作由RDMA硬件网卡完成,同时做到了高带宽、低时延、低CPU开销。
RDMA是基于消息的传输协议,一共有三种队列:SQ(发送队列)、RQ(接收队列)、CQ(完成队列),其中,把一对SQ和RQ称为QP(Queue Pair)。
我们以最能体现RDMA特点的Write、Read操作为例,来介绍一下数据传输的流程:
RDMA Write,本端写入远端内存
(1)将可操作的内存区域注册到RDMA MR(Memory Region)中,用于存放RDMA硬件网卡收发的数据。(2)节点两端QP间建立链接,双方交换用于后续数据读写所需要的关键参数,包括Virtual Address、Key、GID(全局ID,网络层地址)、QPN(QP Number)等。(3)源端上层应用提交工作请求(WR)到工作队列(WQ)的发送队列(SQ)中,工作队列元素(WQE)为Write任务。源端硬件从SQ中取出WQE来解析执行,将虚拟地址(VA)转换为物理地址(PA),根据PA从内存中拿到待发送数据,封装数据包,并通过网络链路发送给目的端。(4)目的端硬件收到数据包并解析,根据目的VA转换成本地PA,根据Key校验权限后将数据放到本地内存的指定位置。(5)目的端回复ACK应答报文给源端,源端硬件收到后生成完成队列元素(CQE)放置到完成队列(CQ)中,源端上层应用从而取得工作完成信息(WC)。
RDMA Read,本端读取远端内存
(1)、(2)与Write过程相同。(3)源端上层应用提交工作请求(WR)到工作队列(WQ)的发送队列(SQ)中,工作队列元素(WQE)为Read任务。源端硬件从SQ中取出WQE来解析执行,将Read请求通过网络链路发送给目的端。(4)目的端硬件收到数据包并解析,根据目的VA转换成本地PA,根据Key校验权限后将指定内存位置的数据取出,封装成数据包,并通过网络链路发送给源端。(5)源端硬件收到数据包并解析,将数据放到指定的内存位置中,生成完成队列元素(CQE)放置到完成队列(CQ)中,源端上层应用从而取得工作完成信息(WC)。
从以上可以看出,RDMA Write、Read都是单端操作,数据传输时不需要远端CPU的感知与参与,非常适合在节点间进行大数据量的高速传输,对吞吐和时延有较高要求的应用场景。
RDMA还可以作为承载NVMe-oF和GPUDirect Storage两种技术的传输通道使用,利用RDMA的技术优势提供高效的节点间网路通信。
NVMe-oF(NVMe over Fabric),使用NVMe协议通过网络将主机连接到存储,将NVMe的应用范围从主机内部扩展到了外部网络,极大地增强了灵活性和扩展性。其中NVMe-oF的传输实现方案之一是NVMe over RDMA,NVMe_RDMA模块连接NVMe Core接口和RDMA Stack,把NVMe的IO队列映射到RDMA QP连接,通过RDMA SEND,RDMA_WRITE,RDMA_READ语义实现IO交互,采用NVMe over RDMA构建的网络其性能和时延可以媲美直连存储。
在计算与存储解耦的存算分离架构中,NVMe-oF能够在尽可能小的损耗下将存储资源提供给计算使用。
GPUDirect Storage,传统方式下需要先将数据从存储设备加载到内存中,再拷贝到GPU显存进行训练,通过GPUDirect Storage可以让GPU直接与存储设备进行通信,在GPU显存与本地或远端存储之间建立直接的数据IO路径,减少了额外的数据副本和CPU开销,降低了时延,其中远端方式由RDMA技术构建。
在AI/ML场景中,随着数据集规模及复杂性的急剧增加,应用程序载入数据花费的时间成为影响整体性能的瓶颈,通过GPUDirect Storage可以大幅提高程序载入数据的速度,提升了端到端应用程序的性能。
由此可见,RDMA在分布式存储领域的应用是非常有价值的一个方向,当前RDMA技术的实现方式主要有InfiniBand、RoCE、iWARP三种。
InfiniBand是专为RDMA设计的网络,主要应用在HPC领域,其有一整套完整的框架和链路层到传输层规范,架构较为封闭,需要用专用的硬件设备搭建一套独立的组网。IB在链路层提供了基于Credit的流量控制机制,可保证数据的可靠有序传输。
RoCE和iWARP都是基于Ethernet网络,其中RoCE主要采用可部署于三层网络上的v2版本。RoCE v2基于UDP协议,它的报文结构是在原有的IB架构的报文上增加UDP头、IP头和二层以太网报文头,通过UDP目的端口号4791来标识RoCE报文,利用源端口号HASH实现负载分担,提高了网络的利用率。
RoCE v2相比采用TCP协议的iWARP的优点是保留了IB传输层,协议栈层数少且实现更简单,有更好的性能和更低的时延,当前在数据中心领域中RoCE v2的应用更为广泛。
未完待续,在后续一篇报道中,我们将继续沿着网络创新和变革的步伐,带你继续领略无损以太网对分布式存储网络的优化,敬请期待!