正文之前,给出本文的图例:
BBR的组成
bbr算法实际上非常简单,在实现上它由5部分组成:
1.即时速率的计算
计算一个即时的带宽bw,该带宽是bbr一切计算的基准,bbr将会根据当前的即时带宽以及其所处的pipe状态来计算pacing rate以及cwnd(见下文),后面我们会看到,这个即时带宽计算方法的突破式改进是bbr之所以简单且高效的根源。计算方案按照标量计算,不再关注数据的含义。在bbr运行过程中,系统会跟踪当前为止最大的即时带宽。
2.RTT的跟踪
bbr之所以可以获取非常高的带宽利用率,是因为它可以非常安全且豪放地探测到带宽的最大值以及rtt的最小值,这样计算出来的BDP就是目前为止TCP管道的最大容量。bbr的目标就是达到这个最大的容量!这个目标最终驱动了cwnd的计算。在bbr运行过程中,系统会跟踪当前为止最小RTT。
3.bbr pipe状态机的维持
bbr算法根据互联网的拥塞行为有针对性地定义了4中状态,即STARTUP,DRAIN,PROBE_BW,PROBE_RTT。bbr通过对上述计算的即时带宽bw以及rtt的持续观察,在这4个状态之间自由切换&#x