🐟 (@stevessr) 在 当 "Idle" 并非空闲:Linux 内核优化如何变成 QUIC 错误 | Cloudflare 中发帖
[!quote]+
CUBIC 在 RFC 9438 中进行了标准化,是 Linux 中的默认拥塞控制器,因此管理着公共互联网上的大多数 TCP 和 QUIC 连接如何探测可用带宽、在检测到损失时如何后退以及之后如何恢复。在 Cloudflare,我们的 QUIC 开源实现(quiche)使用 CUBIC 作为默认拥塞控制器,这意味着我们所服务的大部分流量都是由该代码控制的。
在这篇文章中,我们将讲述一个 Bug 的故事,在这个 Bug 中,CUBIC 的拥塞窗口 (cwnd) 被永久固定在最小值,并且永远无法从拥塞崩溃事件中恢复。
故事的开头是对 Linux 内核的修改,目的是使 CUBIC 符合 RFC 9438 §4.2-12 中描述的应用限制排除 - 这是 TCP 中一个实际问题的修复,当移植到我们的 QUIC 实现中时,在 quiche 中出现了意想不到的行为。它有一...