一文彻底搞懂:什么是RDMA技术及其三个协议
一文彻底搞懂:什么是RDMA技术及其三个协议
RDMA(Remote Direct Memory Access)技术是一种高效的网络通信协议,它允许一台计算机的内存直接访问另外一台计算机的内存,而无需经过操作系统内核(即CPU)的介入。这种技术在高性能计算和数据中心领域具有重要应用价值。本文将详细介绍RDMA技术及其三种主要协议。
DMA技术
在了解RDMA技术之前,我们先来了解一下DMA技术。DMA(Direct Memory Access)即直接内存访问技术,是指计算机主板上的外设(如网卡、硬盘、I/O等设备)对内存的数据读写过程可以不用CPU参与而直接进行,不需要绕过CPU。
无DMA控制器时的数据访问模式
假设I/O设备为一个普通网卡,为了从内存拿到需要发送的数据,然后组装数据包发送到物理链路上,网卡需要通过总线告知CPU自己的数据请求。然后CPU将会把内存缓冲区中的数据复制到自己内部的寄存器中,再复制到I/O设备的存储空间中。如果数据量比较大,那么很长一段时间内CPU都会忙于搬移数据,而无法投入到其他工作中去。
有DMA控制器时的数据访问模式
有了DMA控制器以后,当我们的网卡想要从内存中拷贝数据时,除了一些必要的控制命令需要通过CPU参与外,整个数据传输过程都是由DMA控制器来完成的。CPU除了关注一下这个过程的开始和结束以外,其他时间可以去做其他的事情,释放出CPU很多的资源。
经过技术不断迭代和发展,DMA控制器一般都是和I/O设备集成在一起了,也就是说一块DMA网卡中既有负责数据收发的模块,也有DMA模块。
RDMA技术
RDMA(Remote Direct Memory Access)即远程直接内存访问技术,是一种高效的网络通信协议,它允许一台计算机的内存直接访问另外一台计算机的内存,而无需经过操作系统内核(即CPU)的介入。从而“解放”CPU的工作压力,来提高数据传输速率,减少时延,提高整体计算性能的作用。
为了更加清晰地理解RDMA技术,以及它的优势之处,我们先来了解一下非RDMA技术的传输方式,即传统的网络访问方式:
传统网络数据传输方式
在传统网络中,A计算机给B计算机发送数据,实际上需要做的是“把A计算机内存中的一段数据,通过网络链路搬移到B计算机的内存中”,而这一过程无论是发送端还是接收端,数据都是需要经过CPU,包括CPU对网卡的控制,中断的处理,报文的封装和解析等等。
引入RDMA技术后的数据传输方式
而引入RDMA技术之后呢,数据就可以绕开CPU通过RDMA网卡直接进行内存访问,从而大大提高了数据的传输速率和减少了时延。同时也大大的释放了CPU的工作负载和“压力”,提升了计算的工作效率。
计算机的CPU:除了在建立连接、注册调用、控制管理等之外,在整个RDMA数据传输过程中并不提供服务,因此没有给系统带来任何的“负载”,相反还能释放出较多空闲时间,可以处理很多额外的CPU计算工作。
RDMA技术优缺点
尽管RDMA的技术有很多的优点,但是也存在一些缺点。因此需要根据我们实际的应用场景去选择他的技术应用。
RDMA的三种网络协议
RDMA本身指的是一种技术,具体到协议层面,包括:InfiniBand(IB)、RDMA over Converged Ethernet(RoCE)和Internet Wide Area RDMA Protocol(iWARP)三种协议。它们各有优缺点,适用于不同的应用场景。
Infiniband(IB)
InfiniBand(直译为“无限带宽”技术,缩写为IB)是一个用于高性能计算的计算机网络通信标准,它具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连,是一种RDMA原生的网络协议。InfiniBand也用作服务器与存储系统之间的直接或交换互连,以及存储系统之间的互连。IB网络需要通过专用硬件才能实现最优的性能,但是由于专用硬件的原因(即Infiniband要求从L2到L4到需要自己的专用硬件),设备成本非常高,现在做InfiniBand网络的厂商主要就是Mellanox(为以色列一家芯片制造商,现已被英伟达收购)。
ROCE
ROCE基于以太网链路层的协议,v1版本网络层仍然使用了IB规范,而v2使用了UDP+IP作为网络层和传输层,使得数据包也可以被路由。RoCE可以被认为是IB的“低成本解决方案”,将IB的报文封装成以太网包进行收发。由于RoCE v2可以使用以太网的交换设备,所以现在在企业中应用也比较多,但是相同场景下相比IB性能要有一些损失。
iWARP
iWARP基于TCP/IP协议的RDMA技术,由IETF标准定义。iWARP支持在标准以太网基础设施上使用RDMA技术,而不需要交换机支持无损以太网传输。因为TCP是面向连接的可靠协议,这使得iWARP在面对有损网络场景(可以理解为网络环境中可能经常出现丢包)时相比于RoCE v2和IB具有更好的可靠性,在大规模组网时也有明显的优势。但是大量的TCP连接会耗费很多的内存资源,另外TCP复杂的流控等机制会导致性能问题,所以从性能上看iWARP要比UDP的RoCE v2和IB差。