TCP拥塞控制
一、原理/概念
- 拥塞:某段时间内,对网络的某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就叫拥塞。
- 拥塞的直接后果:(1)时延增加;(2)分组丢弃。
- 拥塞控制:通过合理调度、规范、调整向网络中发送数据的主机数量、发送速率或数据量,以避免拥塞或尽快消除已发生的拥塞。
- 拥塞控制与流量控制的区别:拥塞控制就是防止过多的数据注入到网络中这样可以使网络中的路由器或链路不至于过载,拥塞控制有一个前提,就是网络能够承受现有的网络负荷,他是一个全局性过程。而流量控制往往是指点对点通信量的控制,是个端到端的问题。
二、方法/算法
graph LR A[拥塞控制策略] -->B[拥塞预防] A-->C[拥塞消除] C-->|网络层| D[基于拥塞状态反馈的拥塞控制方法] C-->|传输层| E[无须拥塞状态反馈的拥塞控制方法] E-->F[慢开始 - 拥塞避免 - 快重传 - 快恢复]
无须进行拥塞状态反馈的拥塞控制方法:在主机(即端系统)推断网络是否发生拥塞(是否发生报文段的超时),如果推断网络已发生拥塞,则主动调整向网络中发送数据的速率和数据量,以便消除拥塞。e.g.TCP拥塞控制。
TCP进行拥塞控制的算法有四种(拥塞控制过程的四个部分):慢开始,拥塞避免,快重传,快恢复。
窗口是什么? 拥塞窗口是一个状态变量,变量大小取决于网络拥塞程度。
MSS是指TCP/IP协议栈中TCP协议层所能发送的最大报文段长度。
TCP 的拥塞控制也叫做基于窗口的拥塞控制。为此,发送方维持了叫做拥塞窗口 cwnd(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地变化。发送方让自己的发送窗口等于拥塞窗口。
发送方控制拥塞窗口cwnd的原则是:只要网络没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多的分组发送出去,这样就可以提供网络的利用率。但只要网络出现拥塞或者可能出现拥塞,就必须把拥塞窗口减小一些,以减少注入到网络中的分组数,以便缓解网络出现的拥塞。
当网络发生拥塞时,路由器就要丢弃分组。只要发送方没有按时收到应当到达的确认报文,即出现了超时,可判断出现了网络拥塞。
TCP拥塞控制的窗口调节分为慢启动阶段和拥塞避免阶段,慢启动阶段窗口从一个MSS快速增长,达到某个阈值后转为拥塞避免阶段,拥塞避免阶段的窗口增长放慢。
慢启动阶段,每收到1个确认段,拥塞窗口增加1个MSS,每经过1RTT,拥塞窗口增长1倍;
在拥塞避免阶段,每经过l个RTT,拥塞窗口增加1个MSS。
发生超时(丢包)时,cwnd降至1MSS,阈值下降一半。
3次重复确认(丢包)时,旧版Tahoe中cwnd降至1MSS,新版Reno只下降一半。(题意不明时以新版为主)阈值均下降一半。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 珍珠巧克力!
评论
GitalkValine