详谈RDMA技术原理和三种实现方式

详谈RDMA技术原理和三种实现方式


详谈RDMA技术原理和三种实现方式

导读:远程直接内存访问(即RDMA)是一种直接内存访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。RDMA最早在Infiniband传输网络上实现,后来业界厂家把RDMA移植到传统Ethernet以太网上,降低了RDMA的使用成本,推动RDMA技术普及。


然而,在Ethernet以太网上,根据协议栈融合度的差异,分为iWARP和RoCE两种技术,而RoCE又包括RoCEv1和RoCEv2两个版本(RoCEv2的最大改进是支持IP路由)。


随着高性能计算、大数据分析、人工智能以及物联网等技术的飞速发展,集中式存储、分布式存储以及云数据库的普及等原因,业务应用有越来越多的数据需要从网络中获取,这对数据中心网络的交换速度和性能要求越来越高。


传统的 TCP/IP 软硬件架构及应用存在着网络传输和数据处理的延迟过大、存在多次数据拷贝和中断处理、复杂的 TCP/IP 协议处理等问题。RDMA(Remote Direct Memory Access,远程直接内存访问)是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。


RDMA 将用户应用中的数据直接传入服务器的存储区,通过网络将数据从一个系统快速传输到远程系统的存储器中,消除了传输过程中多次数据复制和文本交换的操作,降低了 CPU 的负载。RDMA技术的原理及其与TCP/IP架构的对比如下图所示。


详谈RDMA技术原理和三种实现方式


RDMA 技术实现了在网络传输过程中两个节点之间数据缓冲区数据的直接传递,在本节点可以直接将数据通过网络传送到远程节点的内存中,绕过操作系统内的多次内存拷贝,相比于传统的网络传输,RDMA 无需操作系统和 TCP/IP 协议的介入,可以轻易的实现超低延时的数据处理、超高吞吐量传输,不需要远程节点 CPU 等资源的介入,不必因为数据的处理和迁移耗费过多的资源。


RDMA 技术主要包括:


IB(InfiniBand):基于 InfiniBand 架构的RDMA 技术,由 IBTA(InfiniBand Trade Association)提出。搭建基于 IB 技术的 RDMA 网络需要专用的 IB 网卡和 IB 交换机。


iWARP(Internet Wide Area RDMA Protocal):基于 TCP/IP 协议的 RDMA 技术,由 IETF标 准定义。iWARP 支持在标准以太网基础设施上使用RDMA 技术,但服务器需要使用支持iWARP 的网卡。


RoCE(RDMA over Converged Ethernet):基于以太网的 RDMA 技术,也是由 IBTA 提出。RoCE支持在标准以太网基础设施上使用RDMA技术,但是需要交换机支持无损以太网传输,需要服务器使用 RoCE 网卡。


InfiniBand技术简介

InfiniBand 是一种基于 InfiniBand 架构的 RDMA技术,它提供了一种基于通道的点对点消息队列转发模型,每个应用都可通过创建的虚拟通道直接获取本应用的数据消息,无需其他操作系统及协议栈的介入。InfiniBand 架构的应用层采用了 RDMA 技术,可以提供远程节点间 RDMA 读写访问,完全卸载 CPU 工作负载;网络传输采用了高带宽的传输;链路层设置特定的重传机制保证服务质量,不需要数据缓冲。


详谈RDMA技术原理和三种实现方式


InfiniBand 必须运行在 InfiniBand 网络环境下,必须使用 IB 交换机及 IB 网卡才可实现。


InfiniBand 技术具有以下特点:

• 应用层采用 RDMA 技术,降低了在主机侧数据处理的延迟。 

• 消息转发控制由子网管理器完成,没有类似以太网复杂的协议交互计算。 

• 链路层通过重传机制保证服务质量,不需要数据缓冲,无丢包。 

• 具有低延迟、高带宽、低处理开销的特点。


iWARP 技术简介

iWARP 是基于以太网和 TCP/IP 协议的 RDMA 技术,可以运行在标准的以太网基础设施上。


iWARP并没有指定物理层信息,所以能够工作在任何使用TCP/IP协议的网络上层。iWARP允许很多传输类型来共享相同的物理连接,如网络、I/O、文件系统、块存储处理器之间的消息通讯。


详谈RDMA技术原理和三种实现方式iWARP协议栈

iWARP 由 MPA、DDP、RDMAP 三层子协议组成: 


RDMAP层协议负责 RDMA 读、写操作和 RDMA 消息的转换,并将 RDMA 消息转发到 DDP层。


 DDP层协议负责将过长的 RDMA 消息分片分装成DDP数据包继续转发到 MPA 层。 


MPA层在 DDP 数据段的固定标识位置增加转发后向标识、数据报文的长度以及 CRC 校验数据等字段构成MPA 数据段交由 TCP 传输。


iWARP 技术特点

iWARP 从以下几个方面降低了主机侧网络负载:


• TCP/IP 处理流程从 CPU 卸载到 RDMA 网卡处理,降低了 CPU 负载。

• 消除内存拷贝:应用程序可以直接将数据传输到对端应用程序内存中,显著降低 CPU 负载。

• 减少应用程序上、下文切换:应用程序可以绕过操作系统,直接在用户空间对 RDMA 网卡下发命令,降低了开销,显著降低了应用程序上、下文切换造成的延迟。


由于 TCP 协议能够提供流量控制和拥塞管理,因此iWARP 不需要以太网支持无损传输,仅通过普通以太网交换机和 iWARP 网卡即可实现,因此能够在广域网上应用,具有较好的扩展性。


RoCE技术简介

RoCE 技术支持在以太网上承载 IB 协议,实现RDMA over Ethernet。RoCE 与 InfiniBand 技术有相同的软件应用层及传输控制层,仅网络层及以太网链路层存在差异。


详谈RDMA技术原理和三种实现方式

RoCE 协议分为两个版本:


RoCE v1协议:基于以太网承载 RDMA,只能部署于二层网络,它的报文结构是在原有的 IB架构的报文上增加二层以太网的报文头,通过 Ethertype 0x8915 标识RoCE 报文。 


RoCE v2协议:基于 UDP/IP 协议承载 RDMA,可部署于三层网络,它的报文结构是在原有的 IB 架构的报文上增加 UDP 头、IP 头和二层以太网报文头,通过UDP 目的端口号 4791 标 识 RoCE 报文。RoCE v2 支持基于源端口号 hash,采用 ECMP 实现负载分担,提高了网络的利用率。


RoCE 使得基于以太网的数据传输能够:

• 提高数据传输吞吐量。

• 减少网络延时。

• 降低 CPU 负载。


RoCE 技术可通过普通以太网交换机实现,但服务器需要支持 RoCE 网卡,网络侧需要支持无损以太网络,这是由于 IB 的丢包处理机制中,任意一个报文的丢失都会造成大量的重传,严重影响数据传输性能。


在 RoCE 网络中,需要构建无损以太网用于保证网络传输过程中不丢包,关于无损以太网技术参考文章:FCoE全解系列”之增强型以太网技术。构建无损以太网需支持以下关键特性:


必选)PFC(Priority-based Flow Control,基于优先级的流量控制):逐跳提供基于优先级的流量控制,能够实现在以太网链路上运行多种类型的流量而互不影响。


必选)ECN(Explicit Congestion Notification,显示拥塞通知):设备发生拥塞时,通过对报文 IP 头中 ECN 域的标识,由接收端向发送端发出降低发送速率的 CNP(Congestion Notification Packet,拥塞通知报文),实现端到端的拥塞管理,减缓拥塞扩散恶化。 


建议)DCBX(Data Center Bridging Exchange Protocol,数据中心桥能力交换协议):使用 LLDP 自动协商 DCB 能力参数,包括 PFC 和 ETS 等。一般用在接入交换机连接服务器的端口,与服务器网卡进行能力协商。


可选)ETS(Enhanced Transmission Selection,增强传输选择):将流量按服务类型分组,在提供不同流量的最小带宽保证的同时提高链路利用率,保证重要流量的带宽百分比。需要逐跳提供。


在 RoCE 环境中,PFC与ECN 需要同时使用,以在无丢包情况下带宽得到保证。二者的功能对比如下:


详谈RDMA技术原理和三种实现方式

虽然IB、以太网RoCE、以太网iWARP这三种RDMA技术使用统一的API,但它们有着不同的物理层和链路层。在以太网解决方案中,RoCE相对于iWARP来说有着明显的优势,这些优势体现在延时、吞吐率和 CPU负载。RoCE被很多主流的方案所支持,并且被包含在Windows服务软件中。



详谈RDMA技术原理和三种实现方式



RDMA技术基于传统网络的概念,但与IP网络又有些不同。最关键的不同是RDMA提供了一种消息服务, 利用这种服务,应用程序可以直接访问远程计算机上的虚拟内存。消息服务可以用来进行网络中进程间通信(IPC)远程服务器通信和在一些上层协议的协助下与存储设备进行数据传递。


上层应用协议ULPs(Upper Layer Protocols)有很多,例如iSCSI的RDMA扩展(iSER)、SCSI RDMA协议(SRP)等,主流的SMB、Samba 、Lustre、ZFS等也支持RDMA。


      RoCE和InfiniBand,一个定义了如何在以太网上运行RDMA,而另一个则定义了如何在IB网络中运行RDMA。RoCE期望能够将IB的应用(主要是基于集群的应用)迁移到融合以太网中,而在其他应用中,IB网络仍将能够提供比RoCE更高的带宽和更低的时延。RoCE和IB协议的技术区别:

  • 拥塞控制:RoCE所依赖的无丢包网络基于以太网流控或PFC(Priority Flow Control)来实现。RoCEv2 则是定义了拥塞控制协议,使用ECN做标记和CNP帧来做确认。而IB则是使用基于信用的算法来保证HCA-HCA之间的无丢包通信。
  • 时延:当前IB交换机普遍要比以太交换机拥有更低的时延,以太网交换机一般的Port-to-Port时延在230ns,相比IB交换机在同样端口数的情况下100ns的时延,以太交换机还是要高出不少。
  • 配置:配置一个DCB以太网络要远比配置一个IB网络要复杂的多,同理,运维也要复杂的多。


      RoCE和iWARP,一个是基于无连接协议UDP,一个是基于面向连接的协议(如TCP)。RoCEv1只能局限在一个二层广播域内,而RoCEv2和iWARP都能够支持三层路由。相比RoCE,在大型组网的情况下,iWARP的大量TCP连接会占用大量的额内存资源,对系统规格要求更高。另外,RoCE支持组播,而iWARP还没有相关的标准定义。


上一篇:docker安装phpipam


下一篇:[剑指offer专项突击版-Java解法]剑指 Offer II 002. 二进制加法