k2cc vs BBR:审查网络中的拥塞控制对比
k2cc 与 Google BBR 在高丢包、高审查网络环境中的性能对比。k2cc 的审查感知机制如何在 BBR 失效的场景下维持有效传输。
k2cc vs BBR:审查网络中的拥塞控制对比
Google BBR(Bottleneck Bandwidth and Round-trip propagation time)是目前最广泛部署的现代拥塞控制算法之一,被 YouTube、Google Cloud 等大规模服务使用。BBR 在通用互联网场景中表现优异——但它并非为审查网络设计。
k2cc 是开途自研的拥塞控制算法,专门针对高审查、高丢包网络环境优化。本文对比两者在真实网络条件下的表现差异。
BBR 的设计假设
BBR 基于两个核心假设工作:
- 丢包主要由网络拥塞引起——当检测到丢包增加时,意味着链路容量已饱和
- 带宽模型可以通过周期性探测准确估计——通过 ProbeRTT 和 ProbeBW 阶段交替运行
这两个假设在普通互联网环境中成立。但在 GFW 等审查网络中,两者都会被打破。
审查网络中 BBR 的局限
带宽估计失真
GFW 对被检测到的代理连接实施约 26% 的概率性丢包(USENIX Security 2023 实测数据)。这种丢包并非源于网络拥塞——而是审查基础设施主动丢弃数据包。
BBR 的带宽估计模型无法区分拥塞丢包与审查丢包。持续的 26% 丢包会导致 BBR:
- 严重低估可用带宽:模型将审查丢包计入拥塞信号,得出远低于实际链路容量的带宽估计
- 陷入低速循环:低估带宽 → 降低发送速率 → 无法探测到真实带宽上限
ProbeRTT 阶段的性能下降
BBR 每隔约 10 秒进入 ProbeRTT 阶段,大幅降低发送速率以测量最小 RTT。在审查网络中:
- ProbeRTT 期间的降速会导致明显的吞吐量下降
- 审查环境中 RTT 本身波动较大,ProbeRTT 测量值不稳定
- 从 ProbeRTT 恢复后,带宽探测需要重新建立,恢复周期更长
晚高峰适应性不足
中国用户的网络条件在晚高峰(20:00-23:00)会显著恶化——延迟增加、丢包率上升、带宽下降。BBR 的探测周期约 10 秒一轮,对这种分钟级的网络条件波动响应较慢。
k2cc 的设计差异
| 维度 | k2cc | BBR |
|---|---|---|
| 设计目标 | 审查网络优化 | 通用互联网优化 |
| 丢包分类 | 区分拥塞丢包与审查丢包 | 不区分丢包来源 |
| 配置方式 | 零配置,全自动 | 零配置,全自动 |
| 带宽探测 | 持续实时探测,快速适应 | 周期性探测,约 10 秒一轮 |
| 审查网络吞吐 | 维持接近链路容量的有效吞吐 | 带宽估计受干扰,低估可用带宽 |
| 延迟控制 | RTT 感知 + pacing | RTT 感知 + ProbeRTT |
| 速率恢复 | 主动探测更高速率,快速恢复 | ProbeRTT 后需重新建立带宽模型 |
| 共存公平性 | 与其他流量和平共存 | 已知在与 Cubic 共存时可能过度抢占 |
不同场景下的表现对比
理想网络(低丢包、低延迟)
两者都能快速饱和链路带宽,BBR 表现优异。k2cc 在此场景下不比 BBR 有明显优势——审查感知机制在无审查环境中不会被触发。
跨境普通网络(1-5% 丢包、100-200ms RTT)
BBR 仍能有效工作,但带宽探测速度慢于 k2cc。k2cc 的持续实时探测在带宽波动场景下更具优势。
GFW 检测后(26% 概率性丢包)
这是两者差异最显著的场景。BBR 的带宽估计被 26% 的持续丢包严重干扰,吞吐量远低于链路理论容量。k2cc 的审查感知机制识别出这些丢包并非拥塞信号,维持接近链路容量的发送速率。
极端审查(50% 丢包、高延迟)
BBR 在此条件下几乎无法有效传输——带宽模型完全失真。k2cc 通过多策略弱网适应仍能维持有效吞吐,虽然绝对速率会下降,但远高于 BBR。
为什么不直接用 BBR
BBR 是一个优秀的通用拥塞控制算法。如果你的网络环境没有审查干扰(如跨境专线、低丢包 VPN),BBR 是一个很好的选择。
k2cc 的价值在于审查网络场景——当防火墙主动丢弃数据包时,传统算法(包括 BBR)的基本假设被打破,它们无法正确判断网络状态。k2cc 的审查感知机制正是为解决这一问题而设计。
性能验证
k2 内置 14 种网络场景基准测试套件,其中 T7(GFW 26% 概率性丢包)和 T8(极端审查 50% 丢包)场景能直观展示 k2cc 与 BBR 的差异。详见 k2 vs Hysteria2 拥塞控制对比 中的测试框架说明。
详细的量化基准测试报告正在准备中,将在后续版本中公开发布。
常见问题
BBR 也是自适应算法,和 k2cc 有什么本质区别?
核心区别在于丢包分类能力。BBR 将所有丢包视为网络状态信号,无法区分拥塞丢包与审查丢包。k2cc 能自动识别审查基础设施主动丢弃的数据包,避免错误地降低发送速率。
k2cc 在无审查网络中比 BBR 慢吗?
不会。在理想网络中,k2cc 与 BBR 的性能接近。k2cc 的审查感知机制只在检测到非拥塞性丢包时才会改变行为。
为什么 Hysteria2 用 BBR 作为默认拥塞控制?
Hysteria2 在用户不声明带宽时使用 BBR,在声明带宽时使用 Brutal(固定速率)。两种模式各有问题:BBR 在审查网络中低估带宽,Brutal 需要手动配置且不区分丢包类型。详见 k2 vs Hysteria2。
k2cc 算法的技术详情在哪里?
k2cc 的设计理念和核心能力见 k2cc 自适应速率控制。算法实现属于开途(Kaitu)的原创知识产权。
接下来阅读:k2cc 自适应速率控制 了解 k2cc 的核心能力,k2 vs Hysteria2 查看 k2cc、Brutal、BBR 三者的完整对比。