RDMA作为一种host-offload, host-bypass技术,使低延迟、高带宽的直接的内存到内存的数据通信成为了可能。目前支持RDMA的网络协议有:
1、InfiniBand(IB): 从一开始就支持RDMA的新一代网络协议。由于这是一种新的网络技术,因此需要支持该技术的网卡和交换机。
2、RDMA过融合以太网(RoCE): 即RDMA over Ethernet, 允许通过以太网执行RDMA的网络协议。这允许在标准以太网基础架构(交换机)上使用RDMA,只不过网卡必须是支持RoCE的特殊的NIC。
3、互联网广域RDMA协议(iWARP): 即RDMA over TCP, 允许通过TCP执行RDMA的网络协议。这允许在标准以太网基础架构(交换机)上使用RDMA,只不过网卡要求是支持iWARP(如果使用CPU offload的话)的NIC。否则,所有iWARP栈都可以在软件中实现,但是失去了大部分的RDMA性能优势。
在三种主流的RDMA技术中,可以划分为两大阵营。一个是IB技术, 另一个是支持RDMA的以太网技术(RoCE和iWARP)。其中, IBTA力挺的技术自然是IB和RoCE, Mellanox公司(一个以色列人搞的小公司)是这方面的急先锋。而iWARP则是IEEE/IETF力挺的技术,主要是Chelsio公司在推进。RoCE和iWARP的争论,请参考Mellanox和Chelsio这两家公司发布的白皮书。
在存储领域,支持RDMA的技术早就存在,比如SRP(SCSI RDMA Protocol)和iSER(iSCSI Extensions for RDMA)。 如今兴起的NVMe over Fabrics如果使用的不是FC网络的话,本质上就是NVMe over RDMA。 换句话说,NVMe over InfiniBand, NVMe over RoCE和NVMe over iWARP都是NVMe over RDMA。
InfiniBand 是一种基于 InfiniBand 架构的 RDMA 技术,它提供了一种基于通道的点对点消息队列转发模型,每个应用都可通过创建的虚拟通道直接获取本应用的数据消息,无需其他操作系统及协议栈的介入。InfiniBand 架构的应用层采用了 RDMA 技术,可以提供远程节点间 RDMA读写访问,完全卸载 CPU 工作负载;网络传输采用了高带宽的传输;链路层设置特定的重传机制保证服务质量,不需要数据缓冲。
InfiniBand 必须运行在 InfiniBand 网络环境下,必须使用 IB 交换机及 IB 网卡才可实现。
InfiniBand 技术具有以下特点:
• 应用层采用 RDMA 技术,降低了在主机侧数据处理的延迟。
• 消息转发控制由子网管理器完成,没有类似以太网复杂的协议交互计算。
• 链路层通过重传机制保证服务质量,不需要数据缓冲,无丢包。
• 具有低延迟、高带宽、低处理开销的特点。
1.2 iWARP 技术简介
iWARP 是基于以太网和 TCP/IP 协议的 RDMA 技术,可以运行在标准的以太网基础设施上,iWARP并没有指定物理层信息,所以能够工作在任何使用TCP/IP协议的网络上层。iWARP允许很多传输类型来共享相同的物理连接,如网络、I/O、文件系统、块存储和处理器之间的消息通讯。
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 网卡即可实现,因此能够在广域网上应用,具有较好的扩展性。
1.3 RoCE技术简介
RoCE 技术支持在以太网上承载 IB 协议,实现 RDMA over Ethernet。RoCE 与 InfiniBand技术有相同的软件应用层及传输控制层,仅网络层及以太网链路层存在差异。
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 的丢包处理机制中,任意一个报文的丢失都会造成大量的重传,严重影响数据传输性能。
在以太链路层之上用IB网络层代替了TCP/IP网络层,所以不支持IP路由功能。而v2使用了UDP+IP作为网络层,使得数据包也可以被路由。RoCE可以被认为是IB的“低成本解决方案”,将IB的报文封装成以太网包进行收发。由于RoCE v2可以使用以太网的交换设备,所以现在在企业中应用也比较多,但是相同场景下相比IB性能要有一些损失。
在 RoCE 网络中,需要构建无损以太网用于保证网络传输过程中不丢包,关于无损以太网技术参考文章:“FCoE全解系列”之增强型以太网技术。构建无损以太网需支持以下关键特性:
在 RoCE 环境中,PFC与ECN 需要同时使用,以在无丢包情况下带宽得到保证。二者的功能对比如下:
虽然IB、以太网RoCE、以太网iWARP这三种RDMA技术使用统一的API,但它们有着不同的物理层和链路层。在以太网解决方案中,RoCE相对于iWARP来说有着明显的优势,这些优势体现在延时、吞吐率和 CPU负载。RoCE被很多主流的方案所支持,并且被包含在Windows服务软件中。
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和iWARP,一个是基于无连接协议UDP,一个是基于面向连接的协议(如TCP)。RoCEv1只能局限在一个二层广播域内,而RoCEv2和iWARP都能够支持三层路由。相比RoCE,在大型组网的情况下,iWARP的大量TCP连接会占用大量的额内存资源,对系统规格要求更高。另外,RoCE支持组播,而iWARP还没有相关的标准定义。