写点什么

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

作者:C++后台开发
  • 2022 年 8 月 03 日
  • 本文字数:3865 字

    阅读完需:约 13 分钟

导读:远程直接内存访问(即 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 无需操作系统和 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 网卡。

【文章福利】另外小编还整理了一些 C/C++后台开发教学视频,相关面试题,后台学习路线图免费分享,需要的可以自行添加:Q群:720209036 点击加入~ 群文件共享

小编强力推荐 C++后台开发免费学习地址:C/C++Linux服务器开发高级架构师/C++后台开发架构师​

InfiniBand 技术简介

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

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

InfiniBand 技术具有以下特点:

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

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

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

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

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 网卡即可实现,因此能够在广域网上应用,具有较好的扩展性。

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 的丢包处理机制中,任意一个报文的丢失都会造成大量的重传,严重影响数据传输性能。

在 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 需要同时使用,以在无丢包情况下带宽得到保证。二者的功能对比如下:

​虽然 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 所依赖的无丢包网络基于以太网流控或 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 还没有相关的标准定义。

参考资料

推荐一个零声教育 C/C++后台开发的免费公开课程,个人觉得老师讲得不错,分享给大家:C/C++后台开发高级架构师,内容包括Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习


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

用户头像

还未添加个人签名 2022.05.06 加入

还未添加个人简介

评论

发布
暂无评论
详谈RDMA技术原理和三种实现方式_网络协议_C++后台开发_InfoQ写作社区