TCP拥塞控制
为了了解TCP-BBR是怎么回事,得先了解一下TCP拥塞控制是啥。
TCP拥塞控制就是用来防止向网络中注入过多的数据,导致网络中的路由器过载。
当出现拥塞时,端点是不知道发生了拥塞的,端点看到的是通信时延的增加(就是这个数据等了好久才来,或者干等也不来)。
TCP如何进行拥塞控制
进行拥塞控制的方法就是定义了四个算法(TCP Reno)
- 慢开始 TCP刚刚连接好的时候,先令cwnd=1,每次收到一个确认就对cwnd加1.逐渐增大cwnd 。 (当A向B发送数据,A的拥塞窗口为2 ,A可以收到两个确认,于是cwnd就增加2,就变成了4,以此类推。每次经过一个RTT,cwnd就会加倍。一直增大到阙值,进行下一步拥塞避免)
- 拥塞避免 在拥塞避免阶段,做法是每次经过一个RTT,不加倍!!我们加1。使cwnd缓慢增加,即加法增大。
- 快重传 如果在前两个阶段,监测到了计时器超时,就要把阙值变为原来的一半。当发送方连续收到了三个重复的ACK报文时,就执行快速重传算法,(这个时候就认为是丢了包,意味着网络可能出现了拥塞)直接重新传对方没有收到的报文段,不用等待报文段设置的计时器超时。
- 快恢复 当发送到收到三个重复确认时,就执行乘法减小算法,把门限值改为出现拥塞时的阙值的一半,cwnd=减半后的阙值。然后开始执行拥塞避免,即加法增大算法。