TCP的拥塞控制

拥塞控制:TCP模块为了提高网络的利用率,降低丢包率,并保证网络资源对每条数据流的公平性而采取的控制手段。

几种拥塞控制方法:

    慢开始( slow-start )、拥塞避免( congestion avoidance )、快速重传( fast retransmit )和快速恢复( fast recovery )。

1、慢开始:当主机开始发送数据时,如果立即所大量数据字节注入到网络,那么就有可能引起网络拥塞,因为现在并不清楚网络的负荷情况。因此,较好的方法是 先探测一下,即由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。通常在刚刚开始发送报文段时,先把拥塞窗口 cwnd 设置为一个最大报文段MSS的数值。而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。拥塞窗口增长很快,所以设置一个慢启动门限,达到门限就进入拥塞避免阶段。

2、拥塞避免:当拥塞窗口大小采用慢启动方式增长到慢启动门限时,就进入拥塞避免阶段,拥塞避免阶段不再以指数方式增长拥塞窗口,而每经过一个往返时间RTT就将发送方的拥塞窗口+1,使其增长速度减缓。如果发生网络拥塞,比如丢包,就将慢启动门限设置为原来的一半,拥塞窗口设置为1,启动慢开始算法。

3、快速重传:基于确认信息的构成重传称为快速重传: 快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时才进行捎带确认。如下图:接收方收到了M1和M2后都分别发出了确认。现在假定接收方没有收到M3但接着收到了M4。显然,接收方不能确认M4,因为M4是收到的失序报文段。根据 可靠传输原理,接收方可以什么都不做,也可以在适当时机发送一次对M2的确认。但按照快重传算法的规定,接收方应及时发送对M2的重复确认,这样做可以让 发送方及早知道报文段M3没有到达接收方。

 

TCP的拥塞控制

4、快速恢复:将慢启动门限值设置为原来的一半,拥塞窗口设置为现在的慢启动值,不执行慢启动算法,直接进入拥塞避免,使发送窗口成线性增长。 

 

重传机制出上述快速重传还有:超时重传:(1)基于时间重传:TCP在发送数据的时候会设置一个计时器,若计时器超时后未收到数据的确认信息,则会引发相应的超时或者计时器的重传操作,计时器超时称为重传超时RTO(Retransmission Timeout),设置一个合理的RTO对于网络整体利用率至关重要。TCP会在传输过程中采样一些数据传输该确认信息所需要的时间的一些样本。每个此类的测量结果称为RTT样本。TCP首先根据一段时间内的样本值建立好的估计值,第二步是基于估计值设置RTO。RTO设置得当是保证TCP性能的关键。