其他分享
首页 > 其他分享> > bbr草稿

bbr草稿

作者:互联网

BBr也是基于延时判断阻塞,也是基于aimd试探码率

BDP?

1、BBR的原理

BBR核心就是保持BDP=BtlBW * RtPop操作,这样可以获取最大带宽BtlBW,同时只有物理延迟(RTProp全称Round-trip Propagation Delay, 也就是物理链路延迟)。下图可清楚说明带宽、物理延迟、排队延迟的关系(引自ACM Queue):

  1. RTprop: 物理延迟。仅当链路没有排队时,这时的RTT才是物理延迟
  2. BtlBW: 可用带宽(?)。仅当有排队时,此时才是最大可用带宽。
  3. 排队延迟:当发送速率大于BtlBW时,导致有数据排队,导致额外排队延迟

2、BBR的状态机

BBR用了两个状态的状态机,交替测量RTProp和BtlBW。(实际上有三个,还有一个startup慢启动阶段,与TCP区别不大就省略了)。

其状态机如下:

每次调整都是:BtlBW * Pacing_Gain。 (呵呵,BBR调整力度不小,每次增加码率是之前的25% per RTT,这可比TCP高多了)

另外,为了提高公平性,BBR会打乱上面Pacing_gain顺序,随机挑选开始阶段。

3、BBR pacing发送控制

BBR采用了一种pacing发送方式,控制数据包的发送间隔,从而避免突发一个窗口,导致排队延迟和丢包。(此方法在rate-based congestion control早已使用, linux kernel不熟,不清楚是否采用。不过linux FAST早已是pacing)

方法如下:

按照当前设定的探测速率,计算每个数据包的发送间隔。定好下个数据包的发送时间

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

在这里插入图片描述

 管道长,意味着窗口爬升慢,丢包感知慢,丢包恢复慢。

管道肥,意味着目标很远大,结合管道长的弱点,达到目标更加不易

在这里插入图片描述

 最终,BBR的BDP如下图所示,不再包括警戒区的网络缓存:

 我用一个统一的图表示RTT和带宽的关系:

BBR对最大带宽和最小RTT的探测

从模型图上可以清楚的看出如何探测最大带宽:

 

  BBR在一个不随时间滑动的大概10秒的时间窗口中采集最小RTT,BBR只使用这个最小RTT计算Pacing Rate和拥塞窗口。BBR不会对RTT变大进行反应。但是如果整的发生了拥塞,RTT确实会变大,BBR怎么发现这种情况呢?答案就在于这个时间窗口的超期滑动,如果在一个时间窗口内持续没有采集到更小的RTT,那么就会将当前的RTT赋值个最小RTT。BBR就是这样抵抗假拥塞的。秒级的窗口内,什么都是瞒不住的。这就是RTT的测量以及使用原则:

 

标签:草稿,排队,带宽,BBR,RTT,BtlBW,bbr,延迟
来源: https://blog.csdn.net/fdsafwagdagadg6576/article/details/119190350