BBR算法带宽时延积BDP是最为重要的一个变量,而公式BDP = Bw * min_RTT,即等于链路带宽乘以最小传输时延,Bw和min_RTT的准确性直接影响了最终BBR算法的传输效果。
min_RTT的估算,是通过不断比较记录一个最小的rtt值,如果超过10s没有更新过min_RTT,则进入到Probe_RTT模式中,将发送数据量减小到4个包,来探测当前的最小min_RTT值。这种方式其实也会存在很多问题,比如直播服务来说,经常会出现隔10秒钟,码率下降的问题,但这个不是本文讨论的重点。
BBR算法另一个需要计算的重要变量带宽Bw,带宽给人的直观印象是数据包通过网络传输的速度,BBR算法中的定义为:
带宽 = delivered / interval;
delivered 为时间T内交付到对端的数据包个数,这里的交付包括对端ack确认的数据包,SACK确认的数据包以及D-SACK确认的数据包。
interval为输出时间间隔,max(snd_interval, ack_interval),即发送时间间隔与接收时间间隔的最大值。