全网最强TCP/IP拥塞控制总结( 七 )

6.2 TCP BBR算法基本原理前面我们提到了一些Loss-Based算法存在的问题 , TCP BBR算法是一种主动式机制 , 简单来说BBR算法不再基于丢包判断并且也不再使用AIMD线性增乘性减策略来维护拥塞窗口 , 而是分别采样估计极大带宽和极小延时 , 并用二者乘积作为发送窗口 , 并且BBR引入了Pacing Rate限制数据发送速率 , 配合cwnd使用来降低冲击 。
说起BBR算法总让我想起一款小游戏flAppy bird:

全网最强TCP/IP拥塞控制总结

文章插图
 
我们需要不断调整bird的飞行高度 , 但是过高过低震荡太多就很容易挂掉 , 所以如果能够平滑一些或许会飞得更远哦!
在开始BBR算法之前 , 我们先来了解几个有用的术语:
  • BDP带宽延时积
BDP是Bandwidth-Delay Product的缩写 , 可以翻译为带宽延时积 , 我们知道带宽的单位是bps(bit per second) , 延时的单位是s , 这样BDP的量纲单位就是bit , 从而我们知道BDP就是衡量一段时间内链路的数据量的指标 。这个可以形象理解为水管灌水问题 , 带宽就是水管的水流速度立方米/s , 延时就是灌水时间单位s , 二者乘积我们就可以知道当前水管内存储的水量了 , 这是BBR算法的一个关键指标 , 来看一张陶辉大神文章中的图以及一些网络场景中的BDP计算:
全网最强TCP/IP拥塞控制总结

文章插图
 
  • 长肥网络
我们把具有长RTT往返时间和高带宽的网络成为长肥网络或者长肥管道 , 它的带宽延时积BDP很大大 , 这种网络理论上吞吐量很大也是研究的重点 。
  • TCP Pacing机制
可以简单地理解TCP Pacing机制就是将拥塞控制中数据包的做平滑发送处理 , 避免数据的突发降低网络抖动 。
6.2.1 TCP带宽和延时的测量BBR算法的一些思想在之前的基于延时的拥塞控制算法中也有出现 , 其中必有有名的是TCP WestWood算法 。
TCP Westwood改良自New Reno , 不同于以往其他拥塞控制算法使用丢失来测量 , 其通过对确认包测量来确定一个合适的发送速度 , 并以此调整拥塞窗口和慢启动阈值 。其改良了慢启动阶段算法为敏捷探测和设计了一种持续探测拥塞窗口的方法来控制进入敏捷探测 , 使链接尽可能地使用更多的带宽 。
TCP WestWood算法也是基于带宽和延时乘积进行设计的 , 但是带宽和延时两个指标无法同时测量 , 因为这两个值是有些矛盾的极值 , 要测量最大带宽就要发送最大的数据量但是此时的RTT可能会很大 , 如果要测量最小的RTT那么就意味着数据量非常少最大带宽就无法获得 。
TCP BBR算法采用交替采样测量两个指标 , 取一段时间内的带宽极大值和延时极小值作为估计值 , 具体的实现本文就不展开了 。
6.2.2 发送速率和RTT曲线前面提到了BBR算法核心是寻找BDP最优工作点 , 在相关论文中给出了一张组合的曲线图 , 我们一起来看下:
全网最强TCP/IP拥塞控制总结

文章插图
 
1. 曲线图示说明:这张图是由两个图组合而成 , 目前是展示[数据发送速率vs网络数据]和[RTTvs网络数据]的关系 , 横轴是网络数据数量 。
两个纵轴从上到下分别为RTT和发送速率 , 并且整个过程分为了3个阶段:应用限制阶段、带宽限制阶段、缓冲区限制阶段 。
2. 曲线过程说明: