• okass2 在版块 VPS业务 中回复了话题 Ubuntu 如何开启bbr加速算法 3周, 4天前

    bbrv2和bbrv1的区别

    背景

    • BBR(Bottleneck Bandwidth and Round-trip propagation time) 是 Google 开发的一种 TCP 拥塞控制算法,旨在优化网络吞吐量和延迟。
    • BBRv1:发布于 2016 年,集成到 Linux 内核 4.9(2016 年 12 月)。
      目标:替代传统基于丢包的算法(如 CUBIC),通过测量网络的瓶颈带宽(BtlBw)和最小往返时延(RTprop)动态调整发送速率。
    • BBRv2:发布于 2019 年,逐步完善并在 Linux 内核 5.4+(2019 年 11 月)中引入测试版本,5.10+(2020 年 12 月)更稳定。
      目标:解决 BBRv1 的局限性(如对丢包敏感性低、队列延迟过高),提高公平性和性能。

    BBRv1 和 BBRv2 的区别
    1. 设计理念
    BBRv1:核心思想:假设网络缓冲区较深,追求最大化带宽利用率。
    模型:周期性探测瓶颈带宽(BtlBw)和最小 RTT(RTprop),通过“发送速率 = BtlBw × Gain”控制数据发送。
    问题:对丢包反应迟钝,可能在高丢包网络中过度发送数据。
    在共享带宽时对其他流(如 CUBIC)不够公平,容易抢占资源。
    在浅缓冲区(如路由器缓存小)时,队列延迟(Queue Delay)较高。

    BBRv2:核心思想:平衡带宽利用和延迟,增强对丢包和网络变化的响应。
    改进:引入丢包率和 ECN(显式拥塞通知)作为控制信号,优化公平性和队列管理。
    目标:在高性能的同时减少不必要的延迟和拥塞。

     

    2. 工作模式
    BBRv1:四种状态:Startup、Drain、ProbeBW、ProbeRTT。
    ProbeBW:周期性增加发送速率(Gain=1.25)探测带宽,减少到 0.75 清空队列。
    问题:在高丢包或小缓冲区网络中,ProbeBW 可能导致持续拥塞。

    BBRv2:保留类似状态,但优化了切换逻辑。
    改进:根据丢包率动态调整 Gain,避免过度填充。
    ProbeRTT 更频繁触发(当检测到高延迟或丢包时),清空队列并重新测量 RTprop。

    3. 性能表现
    吞吐量:BBRv1:在高带宽、低丢包场景(如数据中心内网)表现优异,接近理论最大值。
    BBRv2:吞吐量可能略低于 BBRv1(因更保守),但在高丢包或混合流量中更稳定。
    延迟:BBRv1:队列延迟较高(几十到几百 ms),不适合实时应用。

    BBRv2:显著降低延迟(通常 <50ms),更适合游戏、视频流等。
    公平性:BBRv1:与其他流竞争时抢占资源。
    BBRv2:通过丢包率和 ECN 反馈,减少对 CUBIC 等流的压制。

WirelessLink
Logo