4、RDMA协议详解:InfiniBand、RoCEv2、iWARP协议栈
4.1 三种协议栈的定位与核心差异
RDMA(Remote Direct Memory Access)并非单一协议,而是一组允许网卡直接读写远端内存、绕过操作系统内核与CPU中断的技术集合。当前生产环境中主流的RDMA实现有三种:InfiniBand(IB)、RoCEv2(RDMA over Converged Ethernet version 2)和iWARP(Internet Wide Area RDMA Protocol)。三者的本质区别在于传输层承载方式:IB拥有专有的物理层、链路层和网络层;RoCEv2将RDMA载荷封装在UDP/IPv4或IPv6中,运行在标准以太网上;iWARP则直接基于TCP协议栈实现RDMA语义。
从协议分层角度看,三者都实现了RDMA的核心能力——内核旁路(Kernel Bypass)、零拷贝(Zero-Copy)、CPU卸载(Offload),但它们的可靠性机制、拥塞控制能力和部署成本差异显著。IB网络需要专用交换机与HCA(Host Channel Adapter)卡,成本最高但性能与可靠性最佳;RoCEv2复用现有以太网基础设施,但要求无损以太网(PFC、ECN)配合;iWARP依赖TCP的可靠传输,无需特殊网络调优,但性能受TCP/IP协议栈处理开销影响。
4.2 InfiniBand:专为RDMA设计的原生协议
InfiniBand是最早实现RDMA语义的协议体系,其设计目标就是为HPC集群提供高带宽、低延迟、低CPU占用的通信通道。IB协议栈从物理层到传输层完全自洽,不依赖任何外部网络协议。在IB网络中,每个节点通过HCA接入子网管理器(Subnet Manager, SM)管理的交换网络,SM负责分配LID(Local Identifier)并维护路由表。
IB的传输层提供四种服务类型:可靠连接(RC)、不可靠连接(UC)、可靠数据报(RD)和不可靠数据报(UD)。其中RC是最常用的模式,每个队列对(QP)与对端唯一QP建立连接,硬件保证报文有序、不丢失、不重复。IB的链路层采用基于信用的流控机制(Credit-Based Flow Control),每个接收端口维护信用计数器,发送方只有在获得信用后才允许发送数据,从机制上杜绝了缓冲区溢出导致的丢包。
IB报文头包含LRH(Local Route Header)、GRH(Global Route Header,可选)、BTH(Base Transport Header)等字段。其中BTH中的OpCode标识操作类型(如SEND、WRITE、READ、ATOMIC),PSN(Packet Sequence Number)用于可靠传输的排序与重传检测。IB的MTU通常为2KB或4KB,链路速率从SDR(10Gbps)到NDR(400Gbps)持续演进。
4.3 RoCEv2:以太网上的RDMA实现
RoCEv2的核心思路是将IB的报文载荷(包括BTH、RETH等)封装进UDP数据报中,从而利用现有IP网络的路由能力。RoCEv2报文格式为:以太网头 + IP头 + UDP头(目的端口4791)+ IB BTH + RDMA载荷 + ICRC。UDP封装使得RoCEv2报文可以跨越三层路由,不再局限于同一二层广播域,这是相比RoCEv1(基于以太网类型0x8915)的最大改进。
RoCEv2的可靠性依赖底层以太网的无损传输特性。标准以太网在拥塞时会主动丢弃报文,而RoCEv2的传输层重传机制(基于PSN)虽然能恢复丢包,但重传会引入毫秒级延迟,严重损害RDMA性能。因此RoCEv2网络必须启用以下机制:
- PFC(Priority Flow Control,802.1Qbb):按优先级暂停发送方,防止接收方缓冲区溢出。
- ECN(Explicit Congestion Notification,802.1Qau):交换机在队列深度超阈值时标记报文,接收端反馈CNP(Congestion Notification Packet)给发送端,触发速率降低。
- DCQCN(Data Center Quantized Congestion Notification):结合ECN标记与发送端速率调整的拥塞控制算法。
RoCEv2的队列对模型与IB一致,支持RC、UC、UD等传输类型。由于UDP头占用额外字节,RoCEv2的有效载荷相比同链路速率的IB略有降低,但差距在5%以内。实际部署中,RoCEv2的延迟可低至1-2微秒(同交换机),与IB的差距已缩小到可接受范围。
UDP 目的端口: 4791 (IANA 分配)
IP 头: 支持 IPv4/IPv6, DSCP 用于 QoS 分类
BTH OpCode: 0x00 SEND / 0x01 SEND_INV / 0x04 WRITE / 0x08 READ
PSN: 24 位包序号, 用于排序与重传
ICRC: 32 位不变校验, 覆盖整个报文
4.4 iWARP:基于TCP的RDMA方案
iWARP选择了一条完全不同的技术路线——直接利用TCP的可靠传输能力来承载RDMA语义。iWARP协议栈在TCP之上增加了两层:MPA(Marker PDU Aligned framing)和DDP(Direct Data Placement)。MPA负责将RDMA消息切分为适合TCP段大小的PDU,并在每个PDU前插入标记(Marker)以便接收端快速定位;DDP则负责将上层数据直接放置到预先注册的内存缓冲区中,实现零拷贝。
iWARP的最大优势是兼容性:它运行在标准TCP/IP网络上,不需要PFC、ECN等特殊配置,也不要求无损网络。这意味着iWARP可以跨越数据中心甚至广域网部署,且与现有防火墙、负载均衡器兼容。然而,TCP的拥塞控制(如Cubic、BBR)和ACK机制会引入额外的处理延迟,iWARP的端到端延迟通常在5-10微秒量级,明显高于IB和RoCEv2。
iWARP的另一个问题是CPU开销:TCP分段、重组、校验和计算需要消耗CPU资源,虽然现代网卡支持TCP卸载(TOE),但卸载引擎的复杂度较高。此外,TCP的快速重传和超时重传粒度较粗(最小RTO通常为1ms),在丢包场景下恢复速度远慢于IB和RoCEv2的硬件重传。因此iWARP更适合对延迟不敏感、但希望获得RDMA编程模型收益的应用。
4.5 协议选型对比与链路丢包影响
| 对比维度 | InfiniBand | RoCEv2 | iWARP |
|---|---|---|---|
| 承载网络 | IB专用网络 | 标准以太网 | 标准以太网 |
| 传输层 | IB自有协议 | UDP/IP | TCP/IP |
| 典型延迟 | 0.5-1 μs | 1-3 μs | 5-10 μs |
| 丢包敏感度 | 低(信用流控) | 极高(需无损网络) | 中(TCP重传) |
| 拥塞控制 | IB CC(可选) | DCQCN / 自适应路由 | TCP CC(Cubic/BBR) |
| 部署成本 | 高(专用交换机) | 中(需支持PFC交换机) | 低(现有网络) |
| 跨三层路由 | 支持(GRH) | 支持(IP路由) | 支持(IP路由) |
| 丢包恢复速度 | 硬件重传,微秒级 | 硬件重传,微秒级 | TCP重传,毫秒级 |
从链路丢包角度看,三种协议对丢包的容忍度差异巨大。IB由于链路层信用流控,理论上不会因缓冲区溢出丢包,仅可能因链路误码或线缆故障丢包,且硬件重传可在微秒内完成。RoCEv2对丢包最敏感——即使0.1%的丢包率也会导致RDMA吞吐量下降50%以上,因为每次丢包都触发PSN重传和拥塞窗口收缩。iWARP虽然依赖TCP重传,但TCP的RTO(重传超时)通常为毫秒级,丢包后恢复时间较长,但吞吐量下降相对平缓。
4.6 案例复盘:RoCEv2网络丢包定位中的协议理解
某AI训练集群使用RoCEv2协议,训练任务频繁中断,表现为ib_write_bw带宽从90Gbps骤降至20Gbps。通过计数器检查发现,交换机端口丢弃计数(discard counter)持续增长,且CNP(拥塞通知报文)数量激增。进一步分析发现,该集群的RoCEv2流量与普通TCP流量混跑在同一物理网络,但仅对RoCEv2流量启用了PFC优先级(优先级3),而TCP流量使用优先级0。
问题根源在于:当TCP流量突发时,交换机缓冲区被TCP报文占满,触发PFC暂停帧反压到RoCEv2发送端,导致RoCEv2的暂停时间占比超过30%。由于PFC暂停是逐跳传递的,暂停风暴最终扩散到整个网络,造成大面积性能下降。这个案例说明,RoCEv2网络不仅要启用PFC,还必须做好流量隔离——将RDMA流量与普通TCP流量划分到不同的优先级队列,并为RDMA队列配置足够的缓冲区空间。
复盘结论:理解RoCEv2依赖无损以太网的机制,是定位此类问题的前提。如果当时能识别出PFC暂停帧计数异常,就能快速定位到优先级队列配置不当,而不是盲目排查物理链路或HCA配置。