400G Spine 与 100G Leaf 混合架构:链路一致性保障方案 - 夜莺博客

400G Spine 与 100G Leaf 混合架构:链路一致性保障方案

随着 AI 算力集群规模扩张,数据中心网络正从 100G 全面迈向 400G:Spine 层升级为 400G 端口,Leaf 层仍以 100G 接入,这种混合架构在过渡期成为典型配置,也带来了链路一致性的核心挑战——速率适配、FEC 兼容、收敛比设计与光模块选型环环相扣。本文结合 Cisco MSDC 演进路径与 SONiC 配置实践,梳理 400G Spine 与 100G Leaf 混合部署中保障链路一致性的完整方案。

链路一致性的核心挑战

在 400G Spine 与 100G Leaf 混合架构中,最直观的挑战是速率适配与带宽匹配:Leaf 上行带宽要与下行接入带宽合理匹配,避免收敛比过高形成性能瓶颈。传统设计原则要求上行速率快于下行,通常将收敛比控制在 3:1 以内,理想情况下实现 1:1 无阻塞。另一个隐藏问题是 FEC 模式:不同速率、不同厂商设备对 FEC 的支持不一致,SONiC 配置指南明确要求端口显式指定 FEC 模式(ieee 或 custom)确保兼容。

Breakout 技术:400G 到 100G 的灵活适配

QSFP-DD 封装的 400G 模块(DR4、XDR4、PLR4)通常采用 4×100G 并行光通道设计,天然支持 Breakout 为 4 个独立 100G 链路。交换机端口必须显式配置为 "4×100G Breakout" 模式,以 Dell SONiC 为例:

interface breakout port <slot/port> mode 4x100G

配置完成后原 400G 端口变为 4 个独立的 100G 子端口(如 Eth1/31/1 至 Eth1/31/4),一条 400G 上行即可等效替代 4 条 100G 上行。

收敛比设计与带宽规划

以典型场景计算:Leaf 提供 48 个 25G 下行端口(总下行 1.2Tbps),通过 8 个 100G 上行连 Spine(总上行 800Gbps),收敛比为 1.5:1。如果 Spine 采用 400G 端口,Leaf 可通过 Breakout 将 2 个 400G 端口拆成 8 个 100G,实现等效上行容量。在 AI 训练集群等高性能场景,通常追求 1:1 无阻塞收敛比。

光模块与线缆选型策略

  • 短距(<100m):400G QSFP-DD SR8 + OM4/OM5 多模光纤,支持 Breakout 为 4×100G SR4。
  • 中距(100m–2km):400G DR4(500m)或 XDR4(2km)+ 单模光纤,MPO-12 接口,是脊叶架构的主流选择。
  • 长距(>2km,DCI):400G FR4/LR4/ER4,CWDM4 波长复用,双工 LC 接口,同样支持 Breakout。

Breakout 配置的完整流程与验证

Breakout 不是“把 400G 口当 100G 用”这么简单,它改变的是端口的物理通道分组、光模块的工作模式以及上层软件看到的端口列表。规范的做法是先确认平台支持的拆分组合,再改端口模式,最后核对软件侧生成的子端口。以 QSFP-DD 400G 端口拆成 4×100G 为例,配置前后需要确认三件事:端口物理上支持 4×100G(多数 400G DR4/XDR4/PLR4 模块本身就是 4 通道并行设计)、软件版本支持该拆分模式、以及拆分后子端口编号规则(通常为 Eth1/31/1 至 Eth1/31/4)。

# 查看端口当前模式与拆分能力
show interface status
show platform port-group

# 将 400G 端口拆分为 4 个 100G 子端口(Dell SONiC 示例)
interface breakout port 1/31 mode 4x100G

# 拆分后确认子端口与速率
show interface status | grep Eth1/31
show interface Ethernet1/31/1 transceiver

拆分完成后原 400G 端口在软件上消失,取而代之的是 4 个独立的 100G 子端口,每个子端口都要单独配置速率、FEC、MTU 与路由。这里最容易出错的不是拆分本身,而是拆分的“部分生效”:部分平台要求端口组内所有端口使用同一模式,如果同一个 port-group 中还有端口保持 400G 未拆分,配置会被拒绝或只生效一半。

FEC 模式:为什么必须显式指定

FEC 是混合速率架构中最隐蔽的不一致源。不同速率、不同封装的模块对 FEC 的默认行为不同:25G/lane 的场景常用 clause 74 FC-FEC 或 RS(528,514),50G/lane 用 RS(528,514),100G/lane 的 PAM4 通道则标准要求 RS(544,514)(也就是常说的 KP4)。当链路两端一端按默认值协商、另一端被手工指定成另一种模式时,端口可能显示 up,但误码率持续偏高,表现为间歇性丢包、重传和“莫名”的性能抖动。

# SONiC config_db.json 中逐端口显式指定 FEC 与速率
"PORT": {
  "Ethernet0": {
    "admin_status": "up",
    "fec": "rs",
    "mtu": "9216",
    "speed": "100000"
  }
}

# Arista EOS 侧的显式配置(不同平台支持的取值略有差异,以平台文档为准)
interface Ethernet1/31/1
   speed forced 100gfull
   fec rs544

实践规则可以归纳为三条:跨厂商链路两端必须显式写清 FEC,不依赖默认值;同一 port-group 内的端口保持一致;改 FEC 前先记录改动前的取值,一旦链路起不来可以迅速回退。厂商对 FEC 的默认策略还随软件版本变化,一次升级就可能把“自适应”变成固定值,因此把 FEC 写进配置模板比写进记忆更可靠。

端口资源与光模块兼容性约束

  • Port-group 组合限制:400G 端口通常与相邻端口共享 SerDes 资源,拆分后相邻端口可能无法再以满速工作,设计时要按照平台 port-group 表规划,而不是按面板上的端口数量规划。
  • 模块必须与拆分模式匹配:DR4/XDR4/PLR4 这类“4×100G 并行”模块适合拆分,而 FR4/LR4 使用 CWDM4 波长复用、本质仍是 4 通道,但部分平台对长距模块的拆分支持有限。
  • MPO 极性与纤序:拆分意味着一个 MPO-12 连接器里同时承载 4 条独立链路,极性和纤序接错不会全部端口 down,而是其中一两条起不来,容易被误判为模块故障。
  • DDM 基线:上线时记录每个子端口的收发光功率作为基线,后续任何链路抖动都能快速判断是光纤、模块还是 FEC 的问题。

收敛比、ECMP 与链路数量的一致性

400G Spine 与 100G Leaf 混合部署的核心设计问题不是端口,而是拓扑带来的等价路径数量变化。一台 48×25G 下行、8×100G 上行的 Leaf 收敛比为 1.5:1(1.2Tbps 下行对 800Gbps 上行);如果 Spine 只提供 400G 端口,Leaf 需要两个 400G 端口拆成 8 个 100G 才能维持同样的上行容量。链路数量增加会同时增加 BGP 邻居数、ECMP 组成员数和哈希粒度,因此在规划阶段就要确认:路由协议的 maximum-paths 配置是否足以把所有上行都用上、哈希算法在 8 条等价路径上的分布是否均匀、以及是否需要通过 BGP link-bandwidth 让流量按带宽比例分配而不是平均分配。

# 确认等价路径是否全部生效
show ip route 10.20.0.0/24
show ip bgp 10.20.0.0/24
show ip bgp summary

# 核对每条子端口的速率、FEC 与收发功率
show interface Ethernet1/31/1
show interface Ethernet1/31/1 transceiver detail
show interface counters rates

链路一致性的验收清单

  1. 两端子端口的速率一致,均为 100G 全双工(show interface status)。
  2. 两端 FEC 取值一致且显式配置,不依赖默认(查看运行配置中的 fec 字段)。
  3. MTU 一致:数据中心内部普遍使用 9216,VXLAN/RoCE 场景更要保证端到端一致。
  4. 每个子端口的收发光功率在模块规格范围内,并与上线基线一致。
  5. 链路起不来时逐项排除:模块是否支持该拆分、纤序是否正确、两端 FEC 是否相同、port-group 是否冲突。
  6. 路由侧确认等价路径数量与设计一致,并发流量分布无单条链路饱和。

Design Notes: Mixing 400G and 100G in One Fabric

The practical reason to run a 400G spine with 100G leaf uplinks is that servers still ship with 25G and 100G NICs, and replacing leaf access ports buys nothing until the servers change. The design rule that matters is to keep the uplink side oversubscribed as little as possible while the access side stays cheap. Two 400G ports on the spine breakout into eight 100G uplinks per leaf, which gives you an eight-member ECMP group instead of the four you would get from 400G uplinks alone — more paths means finer-grained load spreading and a smaller blast radius when one member fails.

Two consistency traps recur in these builds. First, breakout sub-ports inherit nothing from the parent port: speed, FEC, MTU and description must be configured on every child interface, so a template that loops over the four children is safer than a hand-written list. Record the DDM values per sub-port as part of the build, not after the first incident. Second, treat the rate mix as a routing question: when a spine has both 400G and 100G neighbours, the interior gateway protocol will install paths of different bandwidth as equal-cost, and an even hash will overload the 100G members. Either keep every spine-leaf link at the same effective speed, or advertise bandwidth so the fabric can weight the paths — do not leave it to the hash.

常见故障与排查思路

  • 子端口不出现:平台不支持该拆分模式,或同一 port-group 内存在未拆分的端口,配置被整体拒绝。
  • 链路 up 但持续丢包:两端 FEC 不一致,或拆分后某个 lane 的光功率偏低;用 DDM 逐 lane 对比最有效。
  • 部分子端口起不来:MPO 极性或纤序错误,或该 lane 对应的模块通道故障。
  • 吞吐上不去:ECMP 组未包含全部子端口,或哈希分布不均导致单条链路饱和。
  • 升级后链路可用性变化:软件版本改变了 FEC 或端口的默认行为,需要重新显式配置。

相关阅读

PAM4 调制与 100G/400G 光模块的技术背景见 PAM4 与 NRZ 调制详解;模块封装与兼容性对照见 SFP/SFP+/SFP28/QSFP28 模块类型与兼容性;AI 集群中高速链路必须配合的无损以太网配置见 RoCEv2 无损以太网:PFC 与 ECN 配置,光功率预算的计算方法见 光功率预算计算。

实践建议

优先将大流量(elephant flow)引导至 400G 路径、小流量走 100G 路径,实现全局最优负载分布;上线前用 show interface 及 DDM 信息核对每个 Breakout 子端口的速率与 FEC 状态。更多脊叶架构与光模块知识见 叶脊数据中心网络架构设计 与 光模块故障排查。

原文链接:https://www.qianjia.com/html/2026-03/24_423779.html