AI 网络背景下 RDMA 的 Why, What & How 以及 Next

文摘   2024-10-17 08:19   上海  

引言 — 在如下的两篇文章中介绍了RDMA的外卖模式,以及对于英特尔GPU对于RoCE的优化实现,这篇文章来自奇异摩尔的王艳,介绍RDMA在AI网络背景下的Why,What &How,以及未来的展望。

RDMA与外卖小哥

“E人”外卖小哥的“I人化”:Gaudi的RoCE优化实现


本文分为以下四个部分:

1. Why

2. What

3. How

4. Next




I. Why


随着数据中心向智算中心演进,数据传输网络对高带宽、低时延的需求日益增加。

传统网络数据传输遇到瓶颈, RDMA(远程直接内存访问) 作为一种旨在实现高性能和低延迟数据传输的数据中心网络技术,应用需求日益增长。 同时, 伴随着大模型的迅速迭代, AI网络互联面临拥塞、 乱序、 网络拓扑优化等一系列的挑战, 这对于下一代的 RDMA 技术的发展提出了创新需求。



本文将从 Why、 What、 How 多维度介绍 RDMA 技术并探讨下一代 RDMA 技术需要关注的技术革新点。


Why RDMA?


先聊聊 Why 这个话题。

为什么需要 RDMA 技术,它的核心作用、 它要解决的本质问题是什么?


在 HPC 计算网络中通用处理单元、计算单元、存储单元、 IO 接口单元作为网络节点通过交换机和路由器相连组成数据中心网络,各节点之间需要大量的实时数据交互。

在传统数据传输方案中,内存数据访问和网络数据传输分属两套语义集合。

数据传输中 CPU 承担了大量工作。

应用程序先申请资源,再通知 Socket,内核态驱动程序完成TCP/IP 报文封装,最后由 NIC 的网络接口发送到对端。

数据在发送节点需要依次经过Application Buffer、 Socket Buffer、 Transfer Protocol buffer。

到达接收节点后同样需经过多次反向内存拷贝,内核态驱动程序完成 TCP/IP 报文解封装,应用程序最终将数据写入系统物理内存。




上述传统传输方式存在以下问题:


1. 完成数据访问需多次内存拷贝,传输时延大;


2. 由驱动软件运行 TCP/IP 协议栈完成报文封装, 导致 CPU 负载重且 CPU 性能成为传输带宽、 时延等关键性能指标的瓶颈;


3. 软件在应用程序和内核态频繁切换, 进一步导致数据传输时延高且抖动大,影响网络传输性能;


RDMA(远程直接内存访问) 技术为解决上述问题应运而生。

RDMA 使用主机卸载和内核旁路技术,使两个应用程序之间能够在网络上进行可靠的直接内存到内存的数据通信。

下图中右侧所示的 RDMA 操作中应用程序发起数据传输后,由 RNIC 硬件直接访问内存并发送数据到网络接口,接收节点 NIC 可将数据直接写到应用程序内存。

对比传统方案 RDMA 技术的特点和优势如下:


1.零拷贝(Zero-copy),数据可直接在两个节点的 Application Buffer 中传输;

2.硬件完成数据报文封装和传输, 且可支持多个并发通信, 因此传输带宽高、时延低、 抖动小;


3. 硬件完成数据报文封装和传输, 无需传统通信方式所带来的 CPU 开销, 大大降低 CPU 负载。


4.内核旁路(Kernel bypass),应用程序可以直接在用户态执行数据传输,不需要频繁在内核态与用户态之间做上下文切换,使软件程序运行更灵活高效。


基于上述优点 RDMA 已成为在高性能计算、大数据存储、机器学习等需要降低延迟、提高带宽和减少 CPU 利用率的应用领域中实现数据传输的关键互联技术之一。



II. What


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 Transfer)、本地和远程键获取( 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 的原因主要包括以下几点:


1. 提高并行性:

多个 QP 可以支持并行的数据传输,使得多个数据流可以同时进行,提高了数据传输的并发性和效率。


2. 提供灵活性:

不同的 QP 可以提供不同的服务质量、不同的优化参数和不同的属性,从而满足多样化的应用需求。


3. 降低延迟:

多个 QP 可以分担数据传输和控制管理的工作,避免了单一瓶颈,从而降低了延迟,提高了系统整体的性能。


通过支持大量 QP, RDMA NIC 硬件可以更好地适应各种应用场景和需求,提供更高效、更灵活的数据传输和通信支持。

QP 数量是 RNIC 关键性能指标之一。

QP Context(QPC) :


RDMA 每个 QP 可对应特定的数据流和传输操作。Queue Context 用于定义每个 QP 的属性信息, 这些信息通常包括服务类型、 访问权限、操作类型、传输参数等。IB Spec 中定义了每类 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 软件接口,在 Transfer layer 遵循 IB 协议, RoCE v2将 IB Transfer Layer packet 映射到 Ethernet UDP 中,Network Layer 遵循 IPv4/IPv6 协议, Link Layer 和 Physical Layer 遵循 IEEE 802.3 以太网协议标准,可通过以太网基础设施实现节点间数据传输,可支持以太网交换设备和路由设备。


下图是基于 RoCEv2 方案的 RDMA 网络架构。

本文后续内容均基于 RoCEv2 技术协议。




III. How


How RDMA work?


前面介绍了 RDMA 网络系统架构、 RMDA 模型关键组件、核心元素以及 RDMA 技术协议,本章从 RDMA 的软件配置流程、 RNIC 硬件设计框架出发, 以 RDMA Send 操作为例介绍Verbs Consumer 软件与 RNIC 硬件如何各司其职又协同交互实现 RDMA 传输功能, 文中RNIC 硬件选择 RoCEv2 技术方案。


完成 RDMA 数据传输, Verbs Consumer 需要以下步骤:


1. 内存注册。

内存注册机制允许应用程序将特定内存区域注册到 RNIC 中,使其可以


被本地 RNIC 和远程节点访问;


2. 创建队列。

应用程序通过 Verbs API 创建队列,包括 QP 服务类型, Private


Domain 信息;


3. 两个节点通过上层应用程序建立连接,包括获取 MAC 地址、 P_Key、 R_Key 等信息;


4. 应用程序通过 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 sublayer,、 PMA sub-layer 功能。

目前 RNIC Ethernet speed 可支持 100G/200G/400G/800G以太网速率。


Verbs Consumer 软件和 RNIC 硬件的协同交互如下图所示, 下面以 RDMA Send 操作为例,简单介绍数据传输流程。



1. System A Consumer 建立好本节点 MR(上图中 MTT), 建立与远端节点连接,配置本节点各 QP Context、 CQ Context、 Mkey Context 之后准备 RDMA 数据传输;

2. 当有数据需要传输时, Consumer 调用 Verbs API 提交一个工作请求(WR), 生成一条 SEND 操作相关的 WQE 写入 RNIC Send Queue, Infiniband 协议中定义 WQE 内容;

3. Consumer 通过 Doorbell 机制通知 RNIC 硬件 Send Queue 中有新的 WQE 下发;

4. RNIC 硬件通过 Doorbell 机制获知从 QP 中读取 WQE,根据 WQE 中的任务描述查询MR、 校验操作权限、 启动内部 DMA 引擎从 Memory 中读取数据;

5. RNIC 硬件依照 RoCEv2 协议将待传输数据逐层封装,最终封装成 RoCEv2 MAC 帧格式发送给 Ethernet MAC。RoCEv2 MAC Frame 的帧格式如下。

6. RNIC 更新 CQ,并通过 Doorbell 机制通知 Consumer SEND 任务完成。

7. System B RNIC 接收 RoCEv2 MAC 帧,层层解封装,获取此处访问内容,校验访问权限,从 RQ 中读取一条 WQE,获得 System B 存储地址,通过内部 DMA 引擎将接收数据写入 System B Memory, 同时更新 CQ.通过 Doorbell 机制告知 Consumer 有新数据收到。

8. 上述 1-7 步完成一笔 RDMA Send 操作。对于 Reliable Service Type 传输操作,支持 ACK/NAK 机制和 Replay 机制,确保传输中数据无损。

9. 在 HW 处理 WQE 指定的 RDMA 操作期间, Consumer 仍可以继续下发 WQE。类似于 SoC总线 Outstanding 操作,实现 Pipeline 方式的数据传输,提高传输带宽、降低传输时延。


以上是 RDMA 基本操作简介,传输过程中的 MR 快速检索、访问权限校验、 ACK/NACK和 Replay 机制、 Flow Control、 QP 发送仲裁调度等细节不在此文描述。

IV. Next



下一代 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 发布了业界首款支持 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 通信的端到端加密和认证机制,确保数据在传输过程中的安全性和完整性。


关于奇异摩尔:

奇异摩尔成立于 2021 年,专注于 AI 网络全栈式互联产品和解决方案。公司依托高性能RDMA 和 Chiplet 技术,开发了统一互联架构 Kiwi Fabric,满足超大规模 AI 计算平台的高性能需求。产品涵盖智能网卡、 GPU 片间互联芯粒、芯片内算力扩展的 IO Die 和 UCIe Die2Die IP 等,构成全链路互联解决方案。核心团队来自 NXP、 Intel、 Broadcom 等行业巨头,拥有丰富的 AI 互联产品开发、量产和管理经验。







为感谢支持,已点赞/分享/赞赏10篇/次以上的朋友,请加微信,进入微信群。我将发放免费加入知识星球的链接。

IT奶爸-知识星球





高阅读量文章





IT奶爸
实践是检验“专家”的唯一标准。一群认真执着的IT奶爸的学习和分享。
 最新文章