2026/7/24 6:57:23

RDMA传输服务类型:RC/UC/UD/XRC深度对比

RDMA传输服务类型:RC/UC/UD/XRC深度对比 摘要在AI万卡集群与高性能计算中RDMA传输服务的选择直接决定网络性能与资源利用率。本文深度剖析RDMA的四大传输服务类型RC、UC、UD与XRC。我们将从可靠性与连接模式两大维度出发对比它们的核心特性、资源消耗及适用场景。重点揭秘XRC如何通过“节点级共享连接硬件分流”打破大规模集群的QP资源瓶颈并附带NCCL场景下的实战配置指南助你轻松搞定RDMA网络选型大家好我是你们的老朋友专注RDMA智能网卡技术的博主 。最近很多同学在后台问我“跑万卡AI大模型训练时NCCL老是报QP资源耗尽的错误到底该怎么优化”其实这个问题的根源往往在于RDMA传输服务类型没选对今天我们就来扒一扒RDMA传输层那些事儿把RC、UC、UD以及“救星”XRC扒个底朝天。干货满满建议先收藏再看哦一、RDMA传输的两大“灵魂维度”在InfiniBand/RoCEv2体系中传输层的设计非常巧妙。它通过两个核心维度来定义一种传输服务维度一可靠性可靠 vs 不可靠维度二连接模式面向连接 vs 数据报把这两个维度交叉组合就得到了我们熟悉的RC可靠连接、UC不可靠连接和UD不可靠数据报。至于“可靠数据报RD”理论上存在但现实中并没有这种产品大家可以直接忽略 ‍♂️。二、RC / UC / UD 深度大比拼我们先来看看这三位“老熟人”的底细。 1. RCReliable Connected全能但“娇贵”的TCP亲戚RC 是最常用的类型点对点绑定保证按序交付支持所有RDMA原语Send/Recv、Read/Write、Atomic。痛点QP资源消耗极大假设 N 个节点每个节点 M 个进程全网互联RC 需要的 QP 数量是N × M × M。在千卡集群里这会让网卡的 ICM 内存瞬间爆炸 。⚡ 2. UCUnreliable Connected妥协的中间派UC 也是点对点但不保证可靠性没有ACK重传机制。它支持 Send/Recv 和 RDMA Write但不支持 RDMA Read 和 Atomic。场景对延迟极度敏感且能容忍少量丢包的特殊场景日常开发中用得比较少。️ 3. UDUnreliable Datagram轻量级的UDP翻版UD 不建立连接一个 QP 可以向任意多个 UD QP 发送数据支持多播/广播。优势QP 数量只需M个资源占用极小劣势只支持 Send/Recv单次消息最大通常只有 4KB不支持单边内存读写。 核心特性对比表特性RC (可靠连接)UC (不可靠连接)UD (不可靠数据报)连接模式点对点点对点一对多 (数据报)可靠性可靠按序交付不可靠不可靠RDMA Read✅ 支持❌ 不支持❌ 不支持Atomic 原子操作✅ 支持❌ 不支持❌ 不支持QP资源消耗极大 (O(N*M²))大 (O(N*M²))极小 (O(M))三、破局者 XRC大规模集群的“救星”既然 RC 功能最全但太耗资源UD 省资源但不支持 Read/Write有没有两全其美的办法答案就是XRCeXtended Reliable Connected扩展可靠连接 XRC 是如何“变魔术”的XRC 把传统的 QP 拆成了两段并引入了XRCDXRC Domain来管控权限INI QP发起端只有发送队列SQ。一个 INI QP 面向远端整台服务器建立一条可靠连接。TGT QP目标端部署在接收端接收所有流量并根据报文附带的SRQ共享接收队列编号由网卡硬件自动分流到本机不同进程的独立 SRQ 中。 XRC 的核心优势QP数量断崖式下降同等 N 节点 M 进程场景QP 数量从 N×M² 降到N×M直接缩小 M 倍彻底解决网卡硬件资源天花板。完美继承 RC 能力底层依然是可靠连接支持 Read/Write/Atomic保序重传全都有。硬件分流零CPU开销TGT QP 收到包后RNIC 硬件直接根据 SRQ 编号分发不占 CPU。⚠️ 避坑指南通信不对称A 发给 B 需要 A 建 INI QPB 反向发给 A 还得 B 自己建 INI QP。调试门槛高多了 XRCD 域和 SRQ 编号排错需要更深厚的功底。网卡要求CX5 及更早固件对 XRC 优化一般推荐CX6/CX7/CX8系列四、实战案例AI集群 NCCL 中的 XRC 配置在 AI 分布式训练如 NCCL AllReduce中通常面临全网状Full Mesh通信。我们来看看如何用代码玩转 XRC。1. 创建 XRC INI QP 示例// 创建 XRC INI QP 示例structibv_qp_init_attr_exinit_attr{.qp_typeIBV_QPT_XRC_SEND,// 发起端.comp_maskIBV_QP_INIT_ATTR_PD|IBV_QP_INIT_ATTR_XRCD,.pdpd,.xrcdxrcd,// 绑定 XRC Domain.cap{.max_send_wr1024,.max_send_sge1,}};structibv_qp*ini_qpibv_create_qp_ex(ctx,init_attr);2. 网卡端开启自适应路由AR优化 XRC 性能在大规模 RoCEv2 网络中结合自适应路由能让 XRC 如虎添翼解决多路径下的乱序重传问题# 开启自适应路由优化多路径下的乱序重传mlxreg-d/dev/mst/mt4123_pciconf0--reg_nameROCE_ACCL\--setadaptive_routing_forced_en1五、总结与互动好啦今天的 RDMA 传输服务大揭秘就到这里我们来简单总结一下选型口诀点对点、小规模、要全能 选RC大规模、多进程、全网状 选XRCAI集群首选组播广播、轻量级控制面 选UD大家在平时的 RDMA 开发或集群运维中遇到过哪些坑呢或者对 XRC 的 SRQ 分流还有什么疑问欢迎在评论区留言我们一起探讨交流别忘了点赞、关注下期我们继续硬核拆解 RDMA 内存注册MR的那些事儿我们下期见~ 推荐标签#RDMA #智能网卡 #XRC #AI集群 #RoCEv2 #InfiniBand #高性能计算 #NCCL本文为RDMA智能网卡技术知识系列文章。首发于CSDN转载请注明出处。