3. 拥塞控制算法:DCQCN、Timely、HPCC 对比
聊到 IB 网络的拥塞控制,有三个算法你绕不开:DCQCN、Timely、HPCC。它们就像三把不同的钥匙,开同一把锁——解决网络拥塞。但每把钥匙的齿纹、手感、适用场景都不一样。
我最早接触的是 DCQCN,那时候还在调一个金融交易集群。后来做 AI 训练网络,又跟 HPCC 杠上了。Timely 呢?嗯,它更像一个“中间派”,在延迟敏感场景里很讨喜。
今天咱们就把这三个家伙拉出来,好好对比一下。不搞虚的,全是实战经验。
3.1 DCQCN:数据中心量化拥塞通知
DCQCN 全称是 Data Center Quantized Congestion Notification。说白了,它靠交换机给发送端“打小报告”来降速。
核心原理:
- 交换机检测到队列长度超过阈值,就标记数据包的 ECN(显式拥塞通知)位。
- 接收端收到带 ECN 标记的包后,生成 CNP(拥塞通知包)发回发送端。
- 发送端收到 CNP,就降低发送速率。
- 没收到 CNP 时,慢慢恢复速率。
这个机制有点像“踩刹车再松油门”。但问题在于——反应有点慢。我调过一套 DCQCN 参数,发现从拥塞发生到发送端降速,中间至少隔了一个 RTT(往返时间)。
Kmin:最小队列阈值,低于此值不标记。Kmax:最大队列阈值,高于此值全标记。Pmax:最大标记概率。G:速率恢复因子,控制升速快慢。
G 设得太大,结果速率恢复太快,导致拥塞反复震荡。建议从 1/16 开始调,别贪心。
3.2 Timely:基于 RTT 的延迟检测算法
Timely 的思路跟 DCQCN 完全不同。它不看队列长度,而是盯着 RTT(往返时间)的变化。
你想想看,网络一旦开始排队,RTT 就会增加。Timely 就是利用这个特性,通过 RTT 的梯度来判断拥塞程度。
核心公式:
// 伪代码示意
if (RTT > T_high) {
速率 *= (1 - beta); // 降速
} else if (RTT < T_low) {
速率 += alpha; // 升速
} else {
// 根据 RTT 梯度微调
if (gradient > 0) 降速;
else 升速;
}
Timely 的好处是不需要交换机支持 ECN。我有个项目,交换机是老款 Mellanox,不支持 DCQCN,最后就是用 Timely 搞定的。
3.3 HPCC:高性能拥塞控制
HPCC(High Precision Congestion Control)是这三个里最“激进”的。它利用 INT(In-band Network Telemetry)技术,直接读取交换机队列信息。
说白了,HPCC 能看到整条路径上每个交换机的队列长度。它不像 DCQCN 那样等反馈,而是提前计算最优发送速率。
核心逻辑:
- 发送端在每个数据包里嵌入 INT 请求。
- 沿途交换机在包头上写入当前队列长度。
- 接收端返回这些信息。
- 发送端根据“最拥塞的链路”计算速率。
我在一个 64 节点 GPU 集群上测过 HPCC。相比 DCQCN,它的流完成时间(FCT)降低了 30% 以上。但代价是——需要交换机支持 INT,不是所有硬件都能跑。
target_rate = (BDP - total_queue) / RTT
其中 BDP 是带宽延迟积,total_queue 是路径上所有队列长度之和。
3.4 三大算法对比
我把它们放在一张表里,你一眼就能看出区别:
| 特性 | DCQCN | Timely | HPCC |
|---|---|---|---|
| 拥塞信号 | ECN 标记 | RTT 变化 | INT 队列信息 |
| 交换机要求 | 支持 ECN | 无特殊要求 | 支持 INT |
| 反应速度 | 1-2 RTT | 1 RTT | 亚 RTT |
| 精度 | 中等 | 中等 | 高 |
| 部署难度 | 低 | 低 | 高 |
| 适用场景 | 通用数据中心 | 延迟敏感应用 | 高性能计算/AI |
3.5 知识体系图
下面这张 SVG 图,把三个算法的核心逻辑串起来了。我画的时候特意把“拥塞信号”作为分叉点,这样你一看就明白它们本质的区别在哪。
3.6 我的选择建议
说了这么多,到底该用哪个?我个人的经验是这样的:
- 如果你用的是老交换机,不支持 ECN 也不支持 INT,那就用 Timely。它最省事,只要网卡支持时间戳就行。
- 如果交换机支持 ECN,但你对延迟要求不高,DCQCN 是稳妥之选。参数调好了,稳定性很好。
- 如果你在做 AI 训练或 HPC,而且交换机支持 INT,别犹豫,上 HPCC。它带来的性能提升,值得你花时间调优。
嗯,这三个算法就聊到这儿。记住一点:没有最好的算法,只有最合适的。你的网络环境、硬件能力、业务需求,才是最终的决定因素。
公众号:蓝海资料掘金营,微信deep3321