3.7 TCP拥塞控制
TCP必须使用端到端的拥塞控制,因为IP层不向端显式提供网络拥塞反馈。
TCP拥塞控制方法:发送方感知网络状态,无拥塞则增加速率,有拥塞则减少速率。
拥塞窗口(Congestion Window,cwnd):发送方速率受到此变量限制,v=cwnd/RTT
一个丢失的报文段意味着拥塞,发送方需要降低发送速率。
一个确认的报文段意味着网络正常,发送方可以增加发送速率。
发送方实行带宽探测。
3.7.1 TCP拥塞控制算法
TCP拥塞控制算法(TCP Congestion Control Algorithm)
慢启动状态(Slow-start)
初始 cwnd 值较小,为一个 MSS
每接收到一个确认报文,cwnd 增加一个 MSS,即无拥塞状态下指数增长;
出现丢包事件,ssthresh=cwnd/2,cwnd=MSS,重新进入慢启动状态;
当 cwnd 大于等于 ssthresh 时,慢启动模式停止,进入拥塞避免模式;
检测到3个冗余ACK,TCP执行快速重传,并进入快速恢复状态;
拥塞避免状态
每个 RTT 只将 cwnd 增加一个 MSS,线性增加。
出现丢包,ssthresh=cwnd/2,cwnd=MSS,重新进入慢启动状态;
检测到3个冗余ACK,TCP执行快速重传,之后快速恢复状态;
快速重传状态
对每个冗余的 ACK,cwnd 增加一个MSS,当丢失报文段的一个ACK到达,则进入拥塞避免状态。
TCP拥塞回顾
加性增,乘性减。
对吞吐量宏观描述
一条连接的平均吞吐量 = 0.75 * W / RTT(W为窗口长度)
经高带宽路径的TCP
一条连接的平均吞吐量 = 1.22 * MSS / RTT / sqrt(L)(L为丢包率)
Last updated
Was this helpful?