3. RoCE组网架构:典型组网拓扑(Spine-Leaf)、网络设备角色、服务器接入方式

3.1 为什么RoCE必须依赖Spine-Leaf架构

RoCE(RDMA over Converged Ethernet)对网络的无丢包、低时延和高吞吐有着极致要求。传统三层树形拓扑(核心-汇聚-接入)在东西向流量占比超过70%的分布式存储和AI训练场景中,会遭遇严重的带宽收敛和时延抖动问题。Spine-Leaf(脊-叶)扁平化架构因此成为RoCE组网的唯一合理选择。

Spine-Leaf拓扑的核心特征可归纳为以下三点:

  • 全连接(Full Mesh):每台Leaf交换机与每台Spine交换机之间均建立物理链路,任意两台Leaf之间的路径数等于Spine节点数,天然支持多路径负载均衡。
  • 等长路径:所有服务器到服务器之间的跳数固定为2跳(Leaf→Spine→Leaf),时延可预测,避免传统拓扑中跨汇聚跳数不一致的问题。
  • 水平扩展:增加Spine节点即可线性提升东西向带宽;增加Leaf节点即可扩展接入端口数量,两者互不阻塞。
关键设计原则:RoCE组网中,Spine与Leaf之间的链路必须采用100G/200G/400G高速端口,且不允许任何链路被阻塞(无收敛比)。ECMP(等价多路径)的哈希因子建议基于IP+端口(L4哈希),避免RoCE流被哈希到同一路径造成微突发拥塞。

3.2 Spine-Leaf拓扑与设备角色

下图展示了一个典型的双Spine + 四Leaf RoCE组网拓扑,清晰标注了各层设备角色及连接关系:

Spine-1 Spine-2 Spine层(核心转发) Leaf-1 Leaf-2 Leaf-3 Leaf-4 Leaf层(接入与转发) 100G×2 100G×2 100G×2 存储-1 存储-2 GPU-1 GPU-2 GPU-3 GPU-4 存储-3 存储-4 服务器接入:25G/100G(双归或单归) 设备角色说明 Spine交换机:高速转发核心,不连接服务器,仅连接Leaf Leaf交换机:接入层设备,连接服务器与Spine 存储服务器:运行NVMe-oF/RoCE目标端 GPU计算节点:运行RDMA应用(AI训练/大数据) Spine-Leaf上行链路(100G/400G,无收敛) 服务器接入链路(25G/100G,支持双归)

上图中各设备角色定位如下:

设备角色 功能定位 关键配置要点
Spine交换机 纯转发核心,负责Leaf之间的数据高速交换 启用ECMP、PFC(优先级流控)、ETS;不配置任何服务器接入端口
Leaf交换机 接入服务器并连接Spine,执行VXLAN/ACL/QoS策略 配置PFC队列、ECN(显式拥塞通知)、BGP/EVPN
RoCE网卡(RNIC) 服务器侧RDMA引擎,支持RoCEv2协议卸载 开启ECN、PFC配合;设置流量优先级(如802.1p=3)

3.3 服务器接入方式:单归与双归

服务器接入Leaf的方式直接影响RoCE链路的可用性。实际部署中主要有以下三种模式:

3.3.1 单网卡单归接入(基础模式)

每台服务器配置一张RoCE网卡,通过一条物理链路连接至一台Leaf交换机。该模式成本最低,但存在单点故障——Leaf交换机故障或链路中断将导致该服务器上的所有RoCE业务中断。仅适用于非关键业务或预算受限场景。

3.3.2 双网卡双归接入(高可用模式)

服务器配置两张RoCE网卡(或一张双端口网卡),分别连接至两台不同的Leaf交换机。操作系统层面通过 bonding(如active-backup或802.3ad)或RDMA感知的链路聚合实现故障切换。该模式是RoCE高可用组网的主流选择,可容忍单Leaf故障或单链路中断。

推荐实践:双归接入时,建议两张网卡分别连接至不同机架的Leaf交换机(跨机架冗余),避免单一机架电源或制冷故障导致双链路同时失效。同时,bonding模式建议采用active-backup(主备模式),因为RoCE流对报文乱序极其敏感,802.3ad的负载均衡可能引发重排序问题。

3.3.3 智能网卡多路径接入(进阶模式)

部分智能网卡(如NVIDIA ConnectX-6/7)支持在单张网卡上创建多个RDMA实例,配合主机的多路径软件(如NVMe多路径)实现Active-Active双活接入。该模式可同时利用两条上行链路带宽,但需要上层应用支持多路径IO。

3.4 典型RoCE组网配置示例

以下为Leaf交换机上针对RoCE流量的关键配置片段(以NVIDIA Cumulus Linux为例):

# 启用PFC(优先级流控),为RoCE流量分配优先级3
mlx_qos
  interface p1p1
    priority-group 3
      bandwidth-percent 50
  priority-flow-control
    priority 3 on

# 配置ECN(显式拥塞通知),标记阈值
ecn
  interface p1p1
    ecn threshold 100KB
    ecn mark probability 10%

# 配置RoCE QoS映射
qos
  map dscp-to-priority
    0-10  -> 0
    26-31 -> 3   # RoCEv2 DSCP值通常为26-31
  map priority-to-dscp
    3 -> 26

3.5 组网误区与复盘

常见误区一:在Spine-Leaf之间启用STP(生成树协议)或仅配置静态路由,导致ECMP无法生效。RoCE组网必须启用动态路由协议(BGP/OSPF)或EVPN,使所有Spine-Leaf链路同时参与转发。
常见误区二:服务器双归接入时,两张网卡连接至同一台Leaf的不同端口。这种“伪双归”无法抵御Leaf整机故障,必须连接至两台独立Leaf。
常见误区三:忽略PFC死锁风险。当PFC在Spine-Leaf链路上逐跳传递时,若某个Leaf的缓冲区耗尽,可能引发PFC风暴扩散至整个网络。建议在Leaf上配置PFC Watchdog和死锁检测定时器,并合理设置缓冲区门限。

3.6 组网设计复盘清单

在完成RoCE组网架构设计后,建议对照以下清单进行复核:

  1. Spine与Leaf之间是否实现全连接?是否存在收敛比大于1:1的链路?
  2. 所有Leaf交换机是否均启用了ECMP且哈希因子包含L4端口?
  3. 服务器双归接入是否连接至不同Leaf?bonding模式是否为active-backup?
  4. PFC优先级队列是否在Spine和Leaf上全局一致配置?
  5. ECN是否在RoCE流量经过的所有交换机端口上启用?
  6. 是否存在未配置QoS映射的“裸”RoCE流量路径?
  7. Leaf故障时,受影响服务器的RoCE会话能否在秒级内切换至备用路径?

通过上述架构设计与配置实践,RoCE网络能够在Spine-Leaf扁平拓扑上获得确定性的低时延与高可用转发能力,为上层分布式存储、AI训练等业务提供坚实的网络底座。