一、DCQCN简介
DCQCN 模型中有三个关键角色:
-
CP(Congestion Point):即交换机,负责在检测到拥塞时生成拥塞通知包(CNP)。
-
NP(Notification Point):即接收端网卡,负责处理 CNP 并向发送端反馈拥塞信息。
-
RP(Reaction Point):即发送端网卡,根据拥塞信息调整发送速率。
二、升速机制
当网络状况良好时,DCQCN 通过以下三种方式逐步提升发送速率:
-
快速恢复(Fast Recovery)
与论文描述一致,此阶段采用乘性增窗方式快速恢复带宽,具体公式可参考实现中的相关参数设置。 -
加性增(Additive Increase)
进入稳定增长阶段后,算法转为线性增加速率,避免过于激进的抢占带宽。 -
超快速增(Hyper Increase)
原始论文对此描述较为模糊,而 Mellanox 的实现明确了该阶段的增速公式。该模式通常在链路利用率较低时触发,旨在更快地逼近可用带宽。
三、降速过程
当在 RATE_REDUCE_MONITOR_PERIOD 微秒内收到 CNP 时,触发降速流程:
-
更新目标速率
targetRate:通常将其设为当前速率。若启用CLAMP_TARGET_RATE,则仅在首次降速时更新该值。 -
降低当前速率:
降速公式为 currentRate = currentRate × (1 − 1/2 × RPG_GD)。
与论文中的简单乘性减(如currentRate = currentRate × (1 − 1/2))相比,Mellanox 引入了 RPG_GD 参数,用于精细控制降速幅度:RPG_GD 越大,降速越平缓。 -
重置所有升速计数器(如 Timer 与 ByteCount),为下一次增速做准备。
四、Alpha 更新
Alpha 值反映了网络拥塞程度,其更新周期为 DCE_TCP_RTT 微秒:
-
若周期内收到 CNP,则按公式 alpha = alpha + G 增加;
-
若未收到 CNP,则按 alpha = alpha − G 减小。
此处 G 控制 alpha 更新的敏感度,G 越小则 alpha 变化越快。
需要注意的是,Mellanox 使用的 G 与论文中的 g 存在换算关系:G = g × 2^10。代入上述公式后,实际行为与论文描述保持一致,但参数配置界面有所不同。
五、CLAMP_TARGET_RATE参数
该参数是 Mellanox 特有的优化选项,用于控制目标速率(targetRate)的更新策略:
-
CLAMP_TARGET_RATE = 0:仅在首次收到 CNP 时降低 targetRate,后续降速仅影响 currentRate,使得整体恢复更为平缓。
-
CLAMP_TARGET_RATE = 1:每次收到 CNP 时都更新 targetRate,降速响应更为迅速,有助于快速缓解拥塞。
两种模式下,速率变化曲线呈现明显差异:前者蓝线(targetRate)在首次下调后保持稳定,后者则随拥塞通知多次阶梯下降。
六、小结
Mellanox 在实现 DCQCN 时,在遵循论文核心思想的基础上,通过引入 RPG_GD、G 及 CLAMP_TARGET_RATE 等参数,赋予了算法更强的可调性与场景适应性。这些细节反映出厂商在将学术模型工程化时,对实际部署环境中的稳定性、响应速度与配置灵活性的综合考量。