0%

BBR

BBR

今天花了一个下午学习bbr,真的是太奇妙了这个东西。计算机网络的东西我都忘得差不多了,一边学习一边回顾,也不敢写什么研究心得,主要是看了知乎上李博杰关于bbr的回答,然后看了原文(以下简称,对于一些不太清楚的概念做一些笔记,以便时候回顾。

一些概念

  • 加性增,乘性减:简单讲就是说,tcp loss-based拥塞控制传输时,拥塞窗口会已加的形式增大,而一旦遇到包丢失的情况,就会以除二的方式减小窗口。详情可以查看tcp慢启动和指数退避相关内容。

ebea4cbf1e53cb23dc31199e706ddda6.png

这张图我看了半个小时(学渣!),图的整体意思是说:单位时间内,随着发送数据的增加,到达链路运输能力(实际带宽)前发送速率(数据成功到达receiver的)增加,数据延迟不变;一旦达到链路的运输能力,发送速率不会变化,而数据发送耗时会增加。BBR将数据发送量限制到带宽,从而达到发送速率最大同时耗时最短,而传统的基于丢包的拥塞控制则控制的是数据量为buffer的极限。一点上图中的概念解析:

  • inflight:拥塞窗口(?不确定),可以理解为发送的数据量
  • loss-based congestion control:基于包丢失的拥塞控制。传统TCP拥塞控制方法,由于链路中存在buffer,buffer容量会比链路大,当buffer缓冲区到达limit时,会产生丢包行为,因此会把‘丢包’这个行为视为拥塞控制信号。因此,在高丢包率的长肥管道(带宽大,延迟高)中,这种机制表现非常差,会不停地进行指数退避。
  • RTT:round-trip time,指一个包从sender方到达receiver方耗时
  • RTprop:物理延迟。当链路中没有任何排队和其他耗时时,RTprop=RTT
  • deliveryRate:发送速率。虽然有rate但并不是说的比率,Delivery Rate = CWND/SRTT,其中CWND = 可发送包的个数 * 包的大小;SRTT 是平滑RTT,动态测量的结果。所以deliveryRate 其实可以解释为每单位时间可以发送的数据量。中有个公式,大意为BtlBw=max(deliveryRatet),也就是评估瓶颈带宽的方式。
  • BtlBw:瓶颈带宽,也就是链路的最大传输能力。
  • BDP带宽时延积:(Bandwidth-Delay Product ,BDP)即链路上的最大比特数,也称以比特为单位的链路长度。计算方法:Bandwidth-Delay Product = delay_bandwidth=RTprop_BtlBw
    BBR的方法可以理解为将链路上的比特数控制为BDP的值。
    论文:
    一开始讲了RTprop和BtlBw的回归方程计算。表明BBR需要实时统计deliveryRate和RTT的值来获得RTprop和BtlBw的值。
    然后说了RTprop和BtlBw不能同时测得。