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 等流的压制。
最后在线: 活跃于 2周, 2天前
评论: 7
获赞: 0
文章: 0
粉丝: 69
关注: 69
好友: 3
User Rating: ( vote)