TCP拥塞控制

来源:互联网 发布:超大直径美瞳淘宝有吗 编辑:程序博客网 时间:2024/05/03 21:12

TCP拥塞控制是让每个发送方通过感知的网络拥塞程度来控制发送速率来解决拥塞。

在TCP连接的每一端都有一个一个接收缓存、一个发送缓存、还有几个变量LastByteRead、RcvWin、CongWin等

要求   LastByteSent-LastByteAck <= min(RcvWin,CongWin)

TCP拥塞控制算法主要包括1、加性增、乘性减AIMD 2、慢启动slow start 3、对超时事件做出反应

1、加性增、乘性减AIMD 

当网络出现拥塞时,发送方要降低其发送速率(通过减小CongWin),TCP采用的是乘性减,即在发生拥塞时将CongWin减小为当前值的一半。

如果当前CongWin值是20kb,当检测到丢包是减为10kb,但是不能降低到小于MSS

当网络无拥塞时,发送方要增大其CongWin,目标是在每个往返延迟中增加一个MSS,一种通用的方法是每到达一个新的确认,就将CongWin增加一个MSS(MSS/CongWin)字节,例如,MSS为1460字节,CongWin为14600字节,在一个RTT中发生10个报文段,每到达一个ACK,CongWin就增加1/10MSS,当10个ACK都到达后CongWin就增加了一个MSS。这个阶段称为拥塞避免。

一个TCP连接的CongWin变化通常呈锯齿状。


2、慢启动slow start

当一个TCP连接开始时,CongWin的值为一个MSS,初始发送速率约为MSS/RTT。如果采用线性增加,那么发送速率增大到一个可观的值可能需要很长时间,所有TCP采用指数增长的方式,每过一个RTT将CongWin增大一倍,直到发生丢包CongWin减半,然后开始线性增长。


3、对超时事件反应

TCP发送端通过超时事件或收到同一个ACK三次等来判断拥塞。但是对两种情况的处理却不同。当收到3个冗余ACK,TCP向AIMD一样将CongWin减半然后线性增加。当发生超时事件时,TCP进入慢启动阶段,将CongWin设为一个MSS。

1 0
原创粉丝点击