BBR算法

BBR算法

简述

bbr算法为google在2016年提出,用于改善tcp的性能,提升稳定性,降低延迟,更好地应对网络损伤。在整个算法调节周期中,bbr算法都在尽力维持最大bw和最小rtt。

对比传统的tcp算法

  1. 传统算法不能区分是拥塞导致的丢包还是错误丢包,降低一半速率,浪费网络带宽

  2. 传统算法会使得缓冲区膨胀,导致拥塞,进而导致rtt上升。

  3. 改进传统的慢启动算法,增加起始cwnd,以指数增加cwnd上升速度

数据计算

  • BW = delivered(应答了多少数据)/interval_us (应答 delivered 所用的时间)

  • pacing rate() = G(当前的增益系数) * BW

  • pacing rate 规定 cwnd 指示的窗口数据的数据包之间以多大的时间间隔发送出去

  • cwnd = BDP(当前最大管道容量)

  • BDP = max_bw * min_rtt * G

状态迁移

BBR初始状态为STARTUP,这一状态下迅速增加其发送速率以填满整个网络、网卡、缓存。当它估计管道已满时,它会进入DRAIN UP状态降低发送速度,快速的把缓存的数据发送完毕。drain up状态后,由于网络已经进行较大的数据收发,速率采样(rate sample)样本相对充足,BBR流进入ROBE_BW和PROBE_RTT。长声明周期的BBR流的绝大多数时间都在(重复)在PROBE_BW中,完全探测并利用管道的带宽以一种公平的方式,使用一个小的、有界的队列。如果流量持续发送整个min_rtt窗口,并且没有看到这一周期下的rtt数值<= min_rtt(近10s),然后它短暂地进入PROBE_RTT以便重新探测路径的双向传播延迟(min_rtt)。退出PROBE_RTT时,如果我们估计我们达到了管道的bw上限,然后我们进入PROBE_bw;否则,我们进入STARTUP以尝试填充管道。

状态介绍

(1)STARTUP: 当连接建立时,BBR初始状态为START UP,指数增加发送速率,目的也是尽可能快的占满管道,经过三次发现投递率不再增长,说明管道被填满,开始占用buffer它进入drain up阶段(事实上此时占的是三倍带宽*延迟)

(2)DRAIN UP:这一阶段会指数降低发送速率,(相当于是startup的逆过程)将多占的2倍buffer慢慢排空

(3)PROBE BW:在drain up后,进入probe bw状态,tcp针对速率的采样信息有了一定基础,BBR改变发送速率进行带宽探测:先在一个RTT时间内增加发送速率探测最大带宽,如果RTT没有变化,后减小发送速率排空前一个RTT多发出来地包,后面6个周期使用更新后的估计带宽发包.(gain系数为:1.25 0.75 1 1 1 1)

(4)PROBE RTT:还有一个阶段是延迟探测阶段:BBR每过10秒,如果估计延迟不变,就进入延迟探测阶段,为了探测最小延迟,BBR在这段时间内发送窗口固定为4个包,即几乎不发包,占整个过程2%的时间。

START UP阶段

 

在startup阶段,发送速率会不断商上升,而后根据反馈回来的rate sample测算这一阶段速度是否相比上一次提升了25%,如果提升大于25%则认为pipe还未填满。如果小于25%,且连续三次,则认为当前pipe已满,可以进入drain up状态。

速率控制

PROBE_BW状态下,速率gain系数为:1.25 0.75 1 1 1 1,在此状态下以尝试增加增加带宽开启,如果增加后发现rtt>min_rtt则判定当前发送速度超出网络承载能力了,进入下一个增益0.75下,降低速度如果rtt<=min_rtt,则判定速度降低达到预期,而后进入下一个增益1,维持4个周期。

PROBE_BW主要是为了解决两个问题:

网络环境波动

当BDP降低时,bbr会感知到rtt增加同时会降低发送速率增益直到rtt恢复预期。当BDP升高时,由于min_rtt持续稳定bbr会周期的增加发送速率尝试提升发送速度。

均衡调配

当多个网络请求共存时,由于网络整体发送的数据量上升导致拥塞,bbr会感知到rtt增加同时会降低发送速率直到rtt恢复预期。

BBR 2.0

Google也在持续优化BBR算法,在2018年 公布的BBR 2.0研究进展中就包含了:

  • 提⾼与基于丢包的拥塞算法(Reno/Cubic)的共存能⼒。降低BBR算法的抢占性,提⾼不同算法之间的 公平性。

  • 减⼩排队丢包和排队时延的情况。这⾥主要根据丢包率和标记ECN⽐例来设置inflight的两个⻔限值, inflight_hi和inflight_lo。

  • 加快min_rtt的收敛性,增加是将进⼊Probe_RTT模式的频率由10s设置到2.5s。

  • 减⼩Probe_RTT模式带来的带宽的波动。

<think>好的,我需要回答用户关于CentOS 8是否支持TCP BBR拥塞控制算法的问题。首先,我得确认CentOS 8的内核版本是否包含BBR。根据之前的引用信息,BBR是在Linux内核4.9及以上版本中引入的。CentOS 8默认的内核版本是4.18,所以理论上应该是支持的。不过,可能需要用户检查当前使用的内核版本,或者确认是否启用了BBR。此外,用户可能需要加载相应的模块并修改sysctl设置。还需要注意是否有其他依赖或配置步骤。最后,生成相关的问题,比如如何检查内核版本,如何启用BBR,或者比较不同版本的CentOS支持情况。要确保引用正确的参考文献,并保持回答结构清晰。</think>### CentOS 8 对 TCP BBR 的支持 **1. 内核版本要求** TCP BBR 算法从 **Linux 内核 4.9 版本**开始被引入[^2]。而 CentOS 8 默认搭载的内核版本为 **4.18**,高于此要求,因此 **原生支持 TCP BBR**。用户无需升级内核即可启用该算法[^1][^4]。 --- **2. 验证与启用步骤** - **检查当前拥塞控制算法**: 执行以下命令查看当前使用的算法: ```bash sysctl net.ipv4.tcp_congestion_control ``` 若输出为 `net.ipv4.tcp_congestion_control = bbr`,则表示已启用。 - **启用 TCP BBR**: 若未启用,需修改系统参数: ```bash # 加载 BBR 模块 echo "tcp_bbr" | sudo tee /etc/modules-load.d/bbr.conf # 调整内核参数 echo "net.core.default_qdisc = fq" | sudo tee /etc/sysctl.d/60-bbr.conf echo "net.ipv4.tcp_congestion_control = bbr" | sudo tee -a /etc/sysctl.d/60-bbr.conf # 应用配置 sudo sysctl --system ``` 重启系统后生效[^2]。 --- **3. 性能优势** BBR 通过优化带宽利用和减少网络延迟,显著提升高延迟、高丢包链路的传输效率。Google 在 YouTube 中应用 BBR 后,全球平均吞吐量提升 4%,部分地区超过 14%[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值