随着数据中心向智算中心演进,数据传输网络对高带宽、低时延的需求日益增加。传统网络数据传输遇到瓶颈,RDMA(远程直接内存访问)作为一种旨在实现高性能和低延迟数据传输的数据中心网络技术,应用需求日益增长。同时,伴随着大模型的迅速迭代,AI网络互联面临拥塞、乱序、网络拓扑优化等一系列的挑战,这对于下一代的RDMA技术的发展提出了创新需求。
作为专注于AI网络全栈式互联产品和解决方案提供商,奇异摩尔依托高性能RDMA和Chiplet技术,开发了统一互联架构Kiwi Fabric,满足超大规模AI计算平台的高性能需求。这家公司成立于2021年,目前产品涵盖智能网卡、GPU片间互联芯粒、芯片内算力扩展的IO Die和UCIe Die2Die IP等,构成全链路互联解决方案。
奇异摩尔核心团队来自NXP、Intel、Broadcom等行业巨头,拥有丰富的AI互联产品开发、量产和管理经验。近日,益企研究院技术专家对话奇异摩尔研发团队王艳,一起探究从Why、What、How多维度介绍RDMA技术并探讨下一代RDMA技术需要关注的技术革新点。
Why RDMA?
首先,聊聊Why这个话题。为什么需要RDMA技术,它的核心作用、它要解决的本质问题是什么?
在HPC计算网络中通用处理单元、计算单元、存储单元、IO接口单元作为网络节点通过交换机和路由器相连组成数据中心网络,各节点之间需要大量的实时数据交互。
在传统数据传输方案中,内存数据访问和网络数据传输分属两套语义集合。数据传输中CPU承担了大量工作。应用程序先申请资源,再通知Socket,内核态驱动程序完成TCP/IP报文封装,最后由NIC的网络接口发送到对端。数据在发送节点需要依次经过Application Buffer、Socket Buffer、Transport Protocol buffer。到达接收节点后同样需经过多次反向内存拷贝,内核态驱动程序完成TCP/IP报文解封装,应用程序最终将数据写入系统物理内存。
上述传统传输方式存在以下问题:
完成数据访问需多次内存拷贝,传输时延大;
由驱动软件运行TCP/IP协议栈完成报文封装,导致CPU负载重且CPU性能成为传输带宽、时延等关键性能指标的瓶颈;
软件在应用程序和内核态频繁切换,进一步导致数据传输时延高且抖动大,影响网络传输性能;
RDMA(远程直接内存访问)技术为解决上述问题应运而生。RDMA使用主机卸载和内核旁路技术,使两个应用程序之间能够在网络上进行可靠的直接内存到内存的数据通信。下图中右侧所示的RDMA操作中应用程序发起数据传输后,由RNIC硬件直接访问内存并发送数据到网络接口,接收节点NIC可将数据直接写到应用程序内存。
对比传统方案RDMA技术的特点和优势如下:
零拷贝(Zero-copy),数据可直接在两个节点的Application Buffer中传输;
硬件完成数据报文封装和传输,且可支持多个并发通信,因此传输带宽高、时延低、抖动小;
硬件完成数据报文封装和传输,无需传统通信方式所带来的CPU开销,大大降低CPU负载。
内核旁路(Kernel bypass),应用程序可以直接在用户态执行数据传输,不需要频繁在内核态与用户态之间做上下文切换,使软件程序运行更灵活高效。
基于上述优点 RDMA已成为在高性能计算、大数据存储、机器学习等需要降低延迟、提高带宽和减少CPU利用率的应用领域中实现数据传输的关键互联技术之一。
What is RDMA?
RDMA(Remote Direct Memory Access)是一种以实现远程内存访问为目的网络传输技术,旨在实现网络节点间高带宽、低延迟且安全可靠的数据传输。本章将以自顶向下的方式从RDMA网络架构、关键组件、核心元素等方面介绍RDMA技术细节。
RDMA网络架构
RDMA网络架构定义了一种交换式通信结构,用于连接多个独立的处理器节点、计算节点、存储节点、I/O节点,允许多节点在有保护的、支持远程管理的环境中以高带宽和低延迟并发通信。
RDMA网络系统可以从具有一个处理器和少量I/O设备的小型服务器,到拥有数百个处理器和成千上万个I/O设备的大规模并行计算机系统。此外,可通过Internet协议(IP)连接到Internet、Intranet或远程计算机系统构成超级计算集群。
如图所示的RDMA架构模型包括以下关键组件与核心元素。
Verbs:
Verbs是RDMA编程接口,允许应用程序直接操作RDMA设备。它包括一组函数用于创建和管理RDMA通信对象,执行数据传输操作以及处理远程操作请求。具体包括六类基本操作,分别是:内存注册(Memory Registration)、创建/销毁队列(Queue Pair Creation and Destruction)、连接管理(Connection Management)、数据传输(Data Transport)、本地和远程键获取(Local and Remote Key Acquisition)以及与共享资源相关的操作(Shared Resource Operations)。Verbs的存在使得RDMA技术具备了更高的灵活性和可编程性,同时也为底层硬件架构提供了更高的并行度和资源利用率。
Verbs Consumer:
Verbs Consumer是建立在RDMA(远程直接内存访问)Verbs API之上的应用程序模型。Verbs Consumer充分利用Verbs API提供的功能,通过执行Verbs API中定义的操作,使应用程序能够实现高效的远程内存访问和数据传输。在使用Verbs Consumer时,开发人员需要了解其与底层RNIC硬件和操作系统的交互方式,以及如何最大程度地利用Verbs API提供的功能。此外,针对不同的硬件环境和网络拓扑结构,开发人员还需要对Verbs Consumer进行适当的配置和优化,以最大程度地发挥其性能优势。
RNIC:
RDMA网络接口控制器(RNIC)卸载了CPU的大部分I/O通信操作,参照RDMA技术方案协议要求完成本节点QP管理、DMA操作、数据/消息报文封装、数据报文传输任务。在节点间提供零处理器拷贝数据传输服务,无需内核参与,并利用硬件提供高度可靠、容错的通信。主要承担网络中传输层、数据链路层和物理层功能。
QP:
QP是“队列对”(Queue Pair)的缩写。QP是RDMA的核心元素之一在RDMA通信中起着重要作用,它由发送队列SQ(Send Queue)和接收队列RQ(Receive Queue)组成,同时还有完成队列CQ(Complete Queue)。每个队列对都由本地端和远程端的队列组成,本地和远程的队列通过网络连接进行通信。QP存放Verbs Consumer生成的RDMA操作请求消息WQE(Work Queue Element),RNIC硬件读取WQE执行RDMA操作,并在操作完成时更CQ。软件和硬件之间常通过doorbell机制交换QP的状态信息,实现高效的数据传输。一个网络节点通常可支持K数量级的QP,其中QP0和QP1通常用于链路管理等特殊用途。
RDMA网络节点支持大量QP的原因主要包括以下几点:
提高并行性:多个QP可以支持并行的数据传输,使得多个数据流可以同时进行,提高了数据传输的并发性和效率。
提供灵活性:不同的QP可以提供不同的服务质量、不同的优化参数和不同的属性,从而满足多样化的应用需求。
降低延迟:多个QP可以分担数据传输和控制管理的工作,避免了单一瓶颈,从而降低了延迟,提高了系统整体的性能。
通过支持大量QP,RDMA NIC 硬件可以更好地适应各种应用场景和需求,提供更高效、更灵活的数据传输和通信支持。QP数量是RNIC关键性能指标之一。
QP Context(QPC):
RDMA每个QP可对应特定的数据流和传输操作。Queue Context用于定义每个QP的属性信息,这些信息通常包括服务类型、访问权限、操作类型、传输参数等。IB协议中定义了每类Queue Context信息的必备项和可选项。QPC由Verbs Consumer配置。
Memory Translation 与 Protection Table:
内存转换表或称为MR(Memory Region)用于定义一组内存区域,该区域允许RNIC通过DMA直接访问,允许网络中的远程节点通过 RDMA 直接访问。MR中包括了虚拟内存地址到物理内存地址的映射转换描述、对内存区域的访问控制、长度和其他属性的描述。不同于MMU应用,MR表是系统专门为RDMA建立的,在初始化阶段建好后会锁定,工作中不再允许系统更新。
Transport Service 与 Transport Function:
RDMA定义了多种传输服务类型和传输功能模式以适应不同的业务需求,常用的传输服务类型有Reliable Connection(RC)和Unreliable Datagram(UD),传输功能模式有SEND,RDAM WRITE, RDMA READ, ATOMIC Operation。其中SEND操作类似message传输,SEND操作本地节点不需要获取对端节点的内存地址信息。RDAM WRITE/READ则类似于面向内存的PUSH,PULL操作,是真正的内存零拷贝。不同服务类型支持的功能模式如下图所示。
RDMA技术协议:
不同于DMA仅面向SoC片上总线架构,RDMA因远程访问还涉及通信网络架构。RDMA技术协议旨在从网络模型、功能架构、设计实现等方面定义RDMA功能要点和技术实现细节,为不同厂家设备间互联互通提供标准,促使RDMA从技术概念落地到可商用产品,推动RDMA技术的广泛应用与快速发展。当前RDMA主流实现方案有以下有三种:
InfiniBand协议:
InfiniBand Trade Association(IBTA)是正统的RDMA方案,该方案在设计之初就考虑了RDMA功能,并重新定义了物理链路层、网络层、传输层,所以要使用专用的IB交换机和网卡做物理隔离的专网,成本较大,但性能表现最优;
iWARP协议:
iWARP将InfiniBand移植到TCP/IP协议栈,使用主流的以太网支持RDMA, 可通过TCP协议保证无丢包,但缺点在于TCP开销较大,在大型组网的情况下,iWARP的大量TCP连接会占用大量内存资源,对系统规格要求更高。
RoCE协议:
RoCE是在InfiniBand Trade Association(IBTA简称IB)标准中定义的网络协议,该方案的目的也是将RDMA技术应用于主流的以太网网络。有RoCEv1和RoCEv2两个版本。RoCEv1方案传输层和网络层支持IB协议,数据链路层支持IEEE 802.3以太网协议,因此仅允许在同一以太网广播域内的两个主机之间进行通信,应用范围有限。
InfiniBand Trade Association(IBTA)标准A17章节中定义了一套IP ROUTABLE ROCE方案,即为RoCEv2方案。RoCEv2可看作一种新的InfiniBand协议变体,该变体使用IP网络层(带有IP头而不是InfiniBand网络层包头GRH),从而允许数据包在以太网网络IP路由。RoCEv2保留了InfiniBand软件接口,在Transport layer遵循IB协议,RoCE v2将IB Transport Layer packet映射到Ethernet UDP中,Network Layer遵循IPv4/IPv6协议,Link Layer和Physical Layer遵循IEEE 802.3以太网协议标准,可通过以太网基础设施实现节点间数据传输,可支持以太网交换设备和路由设备。
下图是基于RoCEv2方案的RDMA网络架构。本文后续内容均基于RoCEv2技术协议。
How RDMA work?
前面介绍了RDMA网络系统架构、RMDA模型关键组件、核心元素以及RDMA技术协议,本章从RDMA的软件配置流程、RNIC硬件设计框架出发,以RDMA Send操作为例介绍Verbs Consumer软件与RNIC硬件如何各司其职又协同交互实现RDMA传输功能,文中RNIC硬件选择RoCEv2技术方案。
完成RDMA数据传输,Verbs Consumer需要以下步骤:
内存注册。内存注册机制允许应用程序将特定内存区域注册到RNIC中,使其可以被本地RNIC和远程节点访问;
创建队列。应用程序通过Verbs API创建队列,包括QP服务类型,Private Domain信息;
两个节点通过上层应用程序建立连接,包括获取MAC地址、P_Key、R_Key等信息;
应用程序通过Verbs API发起Work Request,软件和硬件通过队列机制协同工作完成传输任务和事件,包括发送和接收队列,以及与之相关的处理机制。此外,RNIC也可以通过专用的QP0实现连接管理功能,包括连接的建立、维护和断开。
以上操作1-3步是应用层软件通过上层协议完成与对端设备的交互,RNIC硬件负责数据链路层和物理层基本传输服务。连接建立完成后即可开始RDMA数据传输。
RNIC硬件包括下列核心模块:
QP Manager模块负责QP管理,包含所有QP的Context信息。对发送队列进行仲裁并缓存发送工作队列条目(WQE)。这些WQE将被传递给WQE处理器模块以进行进一步处理。该模块还负责在重传时处理QP指针的更新。
WQE Process Engine从QP Manager模块中读取缓存的WQE并执行以下任务:验证传入的WQE是否存在任何无效操作码,检索MR,创建RDMA数据包的包头,触发内部DMA引擎通过DMA方式从Application Memory读取数据封装成RoCE v2数据包发送到以太网模块。
RX PKT Handler 模块负责接收并校验来自以太网模块的RoCEv2数据包、产生IB Ack/NACK包、处理收到的RDMA READ请求、检索MR、将可接受的数据包推送到相应的内存位置。
DMA Engine负责RNIC对系统内存的DMA访问。
Flow Control Manager 模块负责维护接收缓冲区,并根据这些缓冲区的拥塞情况进行Link PAUSE或PFC控制或ECN处理,通过多种流控方式避免网络拥塞。
Ethernet Sub-system实现IEEE 802.3标准定义的Ethernet MAC layer、PCS sub-layer,、PMA sub-layer功能。目前RNIC Ethernet speed可支持100G/200G/400G/800G以太网速率。
Verbs Consumer软件和RNIC硬件的协同交互如下图所示,下面以RDMA Send操作为例,简单介绍数据传输流程。
System A Consumer建立好本节点MR(上图中MTT),建立与远端节点连接,配置本节点各QP Context、CQ Context、Mkey Context之后准备RDMA数据传输;
当有数据需要传输时,Consumer调用Verbs API提交一个工作请求(WR),生成一条SEND操作相关的WQE写入RNIC Send Queue,Infiniband协议中定义WQE内容;
Consumer通过Doorbell机制通知RNIC硬件Send Queue中有新的WQE下发;
RNIC 硬件通过Doorbell机制获知从QP中读取WQE,根据WQE中的任务描述查询MR、校验操作权限、启动内部DMA引擎从Memory中读取数据;
RNIC硬件依照RoCEv2协议将待传输数据逐层封装,最终封装成RoCEv2 MAC帧格式发送给Ethernet MAC。
RNIC更新CQ,并通过Doorbell机制通知Consumer SEND任务完成。
System B RNIC接收RoCEv2 MAC帧,层层解封装,获取此处访问内容,校验访问权限,从RQ中读取一条WQE,获得System B存储地址,通过内部DMA引擎将接收数据写入System B Memory,同时更新CQ.通过Doorbell机制告知Consumer有新数据收到。
上述1-7步完成一笔RDMA Send操作。对于Reliable Service Type传输操作,支持ACK/NAK机制和Replay机制,确保传输中数据无损。
在HW处理WQE指定的RDMA操作期间,Consumer仍可以继续下发WQE。类似于SoC总线Outstanding操作,实现Pipeline方式的数据传输,提高传输带宽、降低传输时延。
以上是RDMA基本操作简介,传输过程中的MR快速检索、访问权限校验、ACK/NACK和Replay机制、Flow Control、QP发送仲裁调度等细节不在此文描述。
下一代RDMA的技术革新展望
本文仅是一个针对现有RDMA技术简介,希望读者可以从Why,What,How维度对RDMA技术有一定稍具专业度的认识。
网络性能对AI智算集群的性能影响愈发关键。AI智算网络中存在Scale-up和Scale-out两张网络,RoCEv2方案的RDMA技术具备高带宽、低时延的传输性能,同时支持基于以太网传输,网络设备互联兼容性强和适配性好,网络部署灵活、成本低。相比InfiniBand,基于以太网的RDMA是更好的选择,具有低成本、高度可扩展的优势。据最新实例统计,以太网可将TCO节省超过50%,能够扩展100万张GPU。而InfiniBand至多能扩展48000张GPU。
随着AI模型的增长和通信模式的多样化,特别是针对Scale-out万卡集群甚至十万卡以上的规模和特性,需要重新评估现有的RDMA技术。例如Scale-Out万卡集群的规模和特性需求远远超出当初设计Infiniband传输层协议的预期,AI和HPC任务需求也远远超出了IB Verbs API最初的设计预期。
对此新成立的标准组织UEC(Ultra Ethernet Consortium)超以太网联盟提出了一种新的传输协议UET,重新定义了传输层,同时优化了其它层,并定义了基于libfabric v2.0 API的软件接口,提供标准、多供应商支持的一致 AI 和 HPC API,旨在为下一代AI和HPC应用提供所需的性能,同时保留以太网/IP生态系统的优势。
上周AMD在 旧金山举行的Advancing AI2024 大会上,发布了业界首款支持UEC RDMA的 AI网卡Pollara 400。益企研究院现场见证了该款产品的发布,Pollara 400基于 UEC RDMA方案,支持智能数据包喷发和有序消息传递、避免拥塞、选择性重传和快速损失恢复。这种传输方式的消息完成速度是RoCEv2的6倍,整体完成速度是RoCEv2的5倍。
面向未来Scale-Out网络互联的挑战,以下是RDMA需要关注的几个技术点:
1. 可扩展的RDMA控制器
大规模集群的挑战:在万卡集群中,RDMA的控制器(如RDMA CM)需要管理成千上万个连接,这要求控制器具有极高的可扩展性。研究和开发可扩展的RDMA控制器,采用分布式架构,通过分区和负载均衡技术来管理大规模集群中的RDMA连接。
2. 高效的QP(Queue Pair)管理
QP数量问题:在万卡集群中,每个计算节点可能需要与成百上千个其他节点通信,这要求极高的QP数量,而现有的硬件和软件如何支持如此大规模的QP。如何实现QP的动态分配和回收机制,如何动态管理各QP的带宽、优先级,QP的智能调度策略是研究的重点之一。
3. 网络拥塞和流量控制
在万卡集群中,网络拥塞是不可避免的问题。拥塞导致丢包,再触发重传,重传消耗带宽,进一步导致拥塞,这一系列连锁反应严重影响传输带宽和时延性能。因此需要开发适用于RDMA的拥塞控制和流量管理算法,如基于机器学习的预测性拥塞控制、端对端遥测技术,以减少丢包和提高网络利用率。同时提高更灵活的服务类型,可针对不同业务类型支持有损传输和无损传输,优化重传机制,可针对不同业务支持接收数据包严格保序或随机乱序。
4. 网络拓扑的优化
万卡集群通常采用多层次的网络拓扑,如叶脊架构,这要求RDMA能够有效地在不同层次间进行数据传输。需要优化RDMA在多层次网络中的路由和转发策略,减少跨层次通信的延迟和开销,提高网络传输性能。针对这一点,UEC在网络层支持传统生成树协议的同时提出支持多路径和数据包喷洒功能,利用所有可用的 AI 网络路径,避免网络拥塞。消除对集中式负载平衡算法和路由控制器的需求。
5. 安全性和隐私保护
在万卡集群中,数据安全和隐私保护是至关重要的,尤其是在跨多个节点的RDMA通信中。需要研究和实现RDMA通信的端到端加密和认证机制,确保数据在传输过程中的安全性和完整性。
未来,益企研究院将继续关注RDMA的技术革新和落地应用,欢迎更多生态伙伴、用户参与探讨!
关注我们获取更多精彩内容