在AI大模型训练的赛道上,“算力不够,多集群来凑”已经成为行业共识。OpenAI在《Pre-Training GPT-4.5》中提到,单数据中心的算力早已无法满足超大规模模型需求,必须依赖多数据中心协同训练。而支撑这种协同的核心技术之一,就是RDMA(远程直接内存访问)。它能让不同服务器的内存直接交互,跳过CPU,实现毫秒级低延迟通信,是分布式训练的“通信 backbone”。
但当RDMA从数据中心内部走向跨数据中心(甚至跨洲),问题突然变得棘手,长距离链路的高延迟、波动的丢包率,让传统RDMA的可靠性机制“水土不服”。最近,来自苏黎世联邦理工学院、英伟达、微软等机构的研究人员提出了SDR-RDMA(软件定义可靠性RDMA架构),为这个难题给出了一份亮眼的解决方案。今天我们就来拆解这项技术,看看它是如何让跨数据中心的RDMA通信既可靠又能跑满速度的。
跨数据中心的RDMA,难在哪?
要理解SDR-RDMA的价值,得先明白传统RDMA在长距离场景下的痛点。
首先,跨数据中心的链路和数据中心内部完全不同。数据中心内的链路通常是“短、快、稳”:距离几十米到几公里,延迟微秒级,丢包率低至10^-8;但跨数据中心的链路可能是“长、慢、波动”:比如3750公里的跨洲光纤,单程延迟就有25毫秒,丢包率还可能从10^-6飙升到10^-1,甚至随数据包大小变化。
而传统RDMA的可靠性,全靠网卡(NIC)里的ASIC芯片硬编码实现,能选的方案只有重传类算法,比如Go-BackN和Selective Repeat(SR,选择性重传)。这种算法的逻辑很简单,发现包丢了,就重新发一次。但在长距离场景下,这个逻辑会掉链子:
延迟叠加:跨数据中心的RTT(往返时间)是毫秒级,一次重传就要等一个RTT;如果丢包多,重传次数增加,总延迟会呈倍数增长。比如一个128MiB的消息,在10^-5丢包率下,SR的完成时间可能是理想情况的6.5倍。
硬件绑定,创新难:ASIC芯片的开发周期要3-4年,想换个更适合长链路的可靠性方案(比如纠删码EC),得等下一代网卡,这对快速迭代的AI训练来说,根本等不起。
传输语义太“粗糙”:传统RDMA提供的不可靠连接(UC)有个致命问题,只要一个包丢了,整个消息就作废,必须重新传所有数据。比如1GiB的消息丢了一个4KiB的包,就得重传1GiB,带宽和时间全浪费了。不可靠数据报(UD)虽支持单包独立传输,但乱序包需在CPU/NIC内存中缓存,失去零拷贝优势。
SDR-RDMA的核心思路:用软件“解绑”硬件
SDR-RDMA的核心想法很直接,把可靠性逻辑从网卡的ASIC里“挪”出来,用软件定义,但又不牺牲RDMA的高性能。其精妙之处在于分层抽象设计,SDR构建在标准的不可靠RDMA传输(如Unreliable Write)之上,通过一个名为Partial Completion Bitmap(部分完成位图) 的轻量级软件抽象,实现了可靠性逻辑与底层RDMA进度引擎的彻底解耦。
1. 部分消息完成位图
传统RDMA要么“全收”要么“全丢”,而SDR-RDMA给每个接收消息加了一个位图。可以理解成一张“快递清单”,清单上的每个格子对应消息的一个分片(Chunk,大小和网络MTU对齐,可配置)。
比如一个消息分成4个分片,位图就是4个二进制位:收到第1、3分片,位图就是“1010”;收到第2分片,位图变成“1110”。上层的可靠性算法(不管是SR还是EC)只要看这张图,就知道哪个分片丢了,不用再瞎猜或全重传。
这个设计解决了传统RDMA的粗糙语义问题,丢一个分片,只处理这个分片就行,不用浪费资源重传整个消息。
2. SDR SDK中间件
为了让上层应用能轻松使用位图,SDR-RDMA提供了一套轻量级SDK(软件开发工具包),核心是部分消息完成API。
两种发送模式:支持流式发送(适合精细化重传,比如丢了哪个分片就补哪个,适配 SR 的重传需求)和一次性发送(适合大段连续数据,效率更高,适配 EC 的批量发送需求),开发者可以根据场景选;
顺序匹配,免传元数据:发送方和接收方按发布顺序匹配消息,无需交换缓冲区元数据(如远程内存键、虚拟地址),仅需保证接收缓冲区先于发送发布,简化协议交互。
迟包保护机制:跨数据中心链路的迟包(Late Packet)可能篡改新消息的 Bitmap,SDR 通过两层保护解决。消息完成后,接收端内存键指向 “NULL 内存区”,迟包写入直接丢弃;引入消息代次(Generation)。每个 SDR 队列对(QP)分配多个内部 QP,每个 QP 对应一个代次,迟包的代次不匹配则被过滤。
这套SDK的作用就像翻译官,一边对接底层RDMA的包处理逻辑,一边给上层可靠性算法提供清晰的分片状态,实现了底层包处理和上层可靠性逻辑的解耦。这也是软件定义的核心,算法变了,改上层逻辑就行,不用动底层硬件。
3. DPA硬件卸载
软件定义会不会拖慢速度?SDR-RDMA的答案是:不会。因为它把最耗资源的工作,比如包分片、位图更新、完成事件处理交给了网卡里的DPA(Data Path Accelerator,数据通路加速器)。
DPA是NVIDIA BlueField-3等现代网卡里的专用处理器,有256个节能硬件线程,擅长并行处理网络数据。比如位图更新,不用CPU插手,DPA收到包后直接更新对应的位,再把结果传给上层。这样既保留了软件的灵活性,又实现了硬件级的性能。
实测显示,基于DPA卸载的SDR-RDMA,在400Gbit/s链路上能跑满线速,512KiB以上的消息就能让链路“吃饱”;甚至能支持下一代Tbit/s链路:32个DPA线程能跑到1.6Tbit/s,128个线程接近3.2Tbit/s,性能线性增长。
SDR-RDMA如何适配不同场景?
有了SDR的基础架构,上层可以灵活实现不同的可靠性算法。论文里重点测试了两种主流方案,覆盖了大多数跨数据中心场景。
1. 优化版SR:低丢包、大消息的性价比之选
SR选择性重传不是新算法,但SDR让它更高效。
精准重传:通过位图知道丢了哪个分片,只重传丢失的部分,不用像传统SR那样“盲猜”;
NACK优化: 接收方发现丢包后,主动发负确认(NACK)告诉发送方,不用等超时,这把丢包检测时间从3个RTT缩短到1个RTT,平均延迟降低4倍。
不过SR的短板依然存在:只有在丢包率很低(<10^-6)、消息很大(>1GiB) 时才占优。因为大消息的“注入时间”(把数据塞进链路的时间)很长,能掩盖重传的延迟;而丢包率低,重传次数少,开销就小。
2. EC:高丢包、中小消息的救星
EC纠删码是另一种思路,不重传,而是提前发奇偶校验分片。比如发32个数据分片,再发8个奇偶分片(EC(32,8)),只要收到的分片总数≥32,就能通过奇偶校验恢复丢失的数据。
SDR让EC在RDMA上落地变得简单:
实时检测丢失:通过位图快速定位丢失的分片,不用等超时;
灵活回退:如果丢的分片太多(比如超过8个),EC恢复不了,就自动回退到SR重传,避免死等。
在丢包率10^-6到10^-2、消息大小128KiB到1GiB的场景下,EC的优势非常明显,平均完成时间比SR快5倍,99.9分位的尾延迟(最慢的1‰请求)甚至快12倍,这对AI训练至关重要,因为尾延迟会直接影响整个集群的等待时间。
实测表现
光有理论不够,论文用真实场景和硬件验证了SDR-RDMA的价值。
1. 跨大陆链路仿真
研究团队在真实 400 Gbps 网络环境中,基于支持 DPA 的 NVIDIA BlueField-3 智能网卡,对 SDR 架构进行了系统性实测,涵盖吞吐性能、丢包容忍能力及典型分布式通信场景。数据显示:
SR适合带宽受限场景,但高 RTT 下易受尾部延迟拖累;
EC 可本地恢复丢失数据,显著降低完成时间波动,在跨数据中心环境中表现更优。
SDR 允许按需切换策略,实现按场景优化,而非“一刀切”。
2. AI集体通信(Allreduce)
在跨数据中心的环形Allreduce中,由于多个阶段相互依赖,可靠性效率的影响被放大。测试显示,在 4 个跨数据中心的 Allreduce 中,EC 方案的 99.9 分位延迟比 SR 快 3~6 倍;随着数据中心数量增加到 8 个,EC 的优势还在扩大,因为 SR 的重传延迟会逐节点叠加,而 EC 的恢复开销是一次性的。
这意味着用 SDR-RDMA 的 EC 方案跨 8 个数据中心训练大模型,尾延迟可能从 “小时级” 降到 “分钟级”,效率大幅提升。
3. 硬件实测:BlueField-3上的SDR性能
在400 Gbit/s的RoCEv2链路上,SDR能够达到线速吞吐量。即使在下一代Tbit/s链路中,通过DPA多线程卸载,SDR也能支持高达3.2 Tbit/s的包处理速率。
为什么SDR-RDMA值得关注?
对AI行业和网络领域来说,SDR-RDMA的意义不止于一个新算法,而是打开了一扇新门:
1. 打破硬件束缚:不用等3-4年的ASIC周期,就能在现有网卡上实现新的可靠性算法,加速技术迭代;
2. 平衡灵活与性能:软件定义保证灵活性,DPA卸载保证线速性能,解决了灵活就慢、快就不灵活的矛盾;
3. 赋能跨数据中心AI:为超大规模模型的跨城/跨洲训练提供了关键通信支撑,让用全球算力训一个模型变得更可行。
当然,SDR-RDMA也不是终点,比如如何进一步优化小消息(<512KiB)的性能、如何适配更多类型的可靠性算法,还有待探索。但它无疑为RDMA的长距离化提供了一个清晰、可落地的方向。
对普通开发者或企业来说,未来可能不用关心底层的可靠性算法,只需通过SDR SDK选择适合自己场景的方案(比如高丢包选EC,低丢包选SR),就能轻松享受跨数据中心RDMA的高效与可靠。这或许就是软件定义技术的魅力——把复杂留给底层,把简单留给用户。
SDNLAB 对话框回复1126论文获取下载链接!
【投稿】:SDNLAB原创文章奖励计划

