跳到主要内容

各 fabric 死锁处理对比

scale-up 总线到 scale-out 网络各用什么手段处理死锁

核心要点

  • 死锁面由 fabric 的无损机制决定
  • scale-up 总线在 ASIC 内 credit+VC 消化死锁
  • InfiniBand 靠 SM 集中算无死锁路由表
  • RoCE 的 PFC 死锁最棘手
  • Ultra Ethernet 去无损从源头消除死锁

前置阅读

为什么各 fabric 的死锁面差这么多?

决定一个 fabric 死锁面的,是它的无损机制与破环介入层(见 03-流控与无损可丢)。沿「scale-up 总线 → scale-out 网络」展开,死锁处理从「ASIC 内硬件消化」逐步走向「软件 / 运维兜底」,再到「干脆去掉无损」。本章把 02-05 的机制按 fabric 横向收口,不重复推导。

scale-up 总线在交换 ASIC 内用 credit-based per-VC 流控 + message class 虚网络消化死锁,对用户透明

  • NVLink / NVSwitch:GPU 间的 scale-up fabric,per-link credit 流控;按消息类型分虚网络(破协议层请求-响应环,见 05-协议事务层死锁)。死锁在交换 ASIC 设计期处理,NVIDIA 未公开具体破环细节(NVSwitch 网内机制见 01-硬件互联/03-nvswitch-nvls)。
  • UALink:开放 scale-up 标准,TL / DL 层提供虚拟通道 + per-VC credit 流控[1],破环手段与 NVLink 同类——规范设计期消化,对上层透明。

共同点:scale-up 域规模有限(NVLink Switch 域 576 GPU、UALink 域上限 1024 加速器),拓扑规整,credit 精确无需 PFC 式调优,死锁面小且封闭在硬件内。

InfiniBand 怎么处理?

InfiniBand 靠子网管理器(SM)集中计算无死锁转发表,并用虚拟车道(VL)按消息类型与路由层双重隔离

  • 流控:per-VL credit(VL 即 InfiniBand 对虚拟通道 VC 的称呼,标准 15 条数据 VL + 1 条管理 VL,见 03-流控与无损可丢),credit 精确。
  • 无死锁路由:OpenSM 提供多种路由引擎,部分保证无死锁[2]
    • Up/Down、Fat-Tree:规整拓扑先上后下天然无环(强制 root 连通时「纯」无死锁可能被破坏)
    • LASH(Layered Shortest Path):拓扑无关,用 VL 分层避免通道环,避开 UPDN 的拥塞 root
    • DFSSSP(Deadlock-Free SSSP):任意拓扑,全局均衡链路利用率,用 VL 提供无死锁[3]
    • Torus-2QoS:torus 专用,对应 02-死锁理论基础 的 dateline 思路

本质:把破环责任交给集中式控制面(SM 算表)+ VL 隔离,这是 Dally-Seitz 的 VC 破环理论(见 02-死锁理论基础)的工程落地——LASH / DFSSSP 用 VL 分层使通道依赖图无环。风险点是路由表算错或 VL 数不足。

RoCE 怎么处理?

RoCEv2 用 PFC 实现无损,无故障 Clos 无环,但故障态重路由会形成 CBD 死锁——这是各 fabric 中最棘手的

预防(Tagger 打 tag、Flattened Clos 拓扑级消除 CBD)、缓解(DCQCN 降触发)、兜底(PFC watchdog)的完整机制见 04-pfc死锁。本章只定位:RoCE 把破环推到了路由 / 拓扑 / 运维三层补救,因为以太网没有 IB 那样的集中式 SM 算无死锁表,也没有 scale-up 总线的封闭硬件。

Ultra Ethernet 怎么处理?

Ultra Ethernet 不再强依赖无损,从源头消除 PFC 死锁——link 层 LLR 保可靠、transport 层容丢 + packet trimming 快恢复(机制见 03-流控与无损可丢)。

这是路线性的转变:前四种 fabric 都在「维持无损 + 想办法不死锁」,Ultra Ethernet 选择「放弃严格无损 → 死锁面消失」。代价是重传与乱序重排开销。

横向对比与选型

Fabric域类型无损机制破环介入层死锁面风险点
NVLink / NVSwitchscale-upper-VC creditASIC(VC + message class)极低(硬件封闭)不公开,依赖厂商
UALinkscale-upper-VC creditTL/DL(VC + credit)极低规范新,实现待验证
InfiniBandscale-outper-VL credit控制面(SM 算表)+ VL路由表算错 / VL 不足
RoCEv2scale-outPFC路由 + 拓扑 + 运维PFC 死锁(故障态 CBD)
Ultra Ethernetscale-outlink 可靠 / transport 容丢取消无损极低重传 / 乱序开销

@tbl-deadlock-fabric-compare 各 fabric 死锁处理横向对比

选型取向:

  • 机内 / 机架内 scale-up:NVLink(封闭生态)或 UALink(开放标准),死锁对用户透明
  • 追求成熟无损 + 集中管控:InfiniBand,SM 算无死锁表
  • 以太网生态 + 成本:RoCEv2,但必须接受 PFC 死锁的预防 + 运维负担(见 04-pfc死锁
  • 超大规模 + 规避无损运维:Ultra Ethernet,用可丢 + 快恢复换掉死锁面

趋势:scale-out 侧正从「RoCE 维持无损」转向「Ultra Ethernet 去无损」,本质是承认万卡规模下维持无死锁无损网络的运维代价过高(见 03-流控与无损可丢)。

Takeaway

Fabric死锁处理一句话
NVLink / NVSwitchASIC 内 credit + VC + message class,硬件消化,对用户透明
UALinkTL/DL 层 VC + credit,开放标准,处理同 NVLink
InfiniBandSM 集中算无死锁路由表 + VL 隔离(LASH / DFSSSP / Up-Down)
RoCEv2PFC 无损,靠 Tagger / Flattened Clos / watchdog 三层补救 PFC 死锁
Ultra Ethernet去严格无损(LLR + transport 容丢),从源头消除死锁面

@tbl-deadlock-fabric-takeaway 各 fabric 死锁处理速查

开放问题

  • 补一张各 fabric 死锁处理介入层(ASIC / 控制面 / 路由 / 运维 / 取消无损)的对照图(drawio)
  • 国产 scale-up(灵衢 UB)与国产 RoCE 的死锁处理方案
  • Ultra Ethernet 在真实万卡部署中替代 RoCE 后的死锁面实测

参考资料

  1. UALink 200G 1.0 Specification White Paper, UALink Consortium, 2025. https://ualinkconsortium.org/wp-content/uploads/2025/04/UALink-1.0-White_Paper_FINAL.pdf
  2. opensm(8) — InfiniBand subnet manager and administration, man page. https://manpages.debian.org/bookworm/opensm/opensm.8.en.html
  3. J. Domke, T. Hoefler, W. Nagel, Deadlock-Free Oblivious Routing for Arbitrary Topologies, IPDPS 2011. 项目主页(DFSSSP/OpenSM 实现):https://htor.inf.ethz.ch/research/dfsssp/

延伸阅读