拥塞
拥塞(Congestion)
网络拥塞:网络中的数据太多,导致某个路由器处理不过来或处理地太慢
- 路由器的内存是有限的,若同一时间到达某个路由器的数据太多,这个路由器将无法接收所有的数据,只能将一部分丢弃;
- 或者若同一台路由器数据太多,后面到达的数据将要等待较长的时间才会被转发。
- 表现为:
- 分组丢失(了缓存溢出)
- 分组延迟过大(在路由器缓存中排队)
拥塞窗口(CongWin):“拥塞窗口”就是“拥塞避免”的窗口,它是一个装在发送端的可滑动窗口,窗口的大小是不超过接收端确认通知的窗口。
- 拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。如果再考虑到接收方的接收能力,那么发送窗口还可能小于拥塞窗口。
- 发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减少一些,以减少注入到网络中的分组数。
TCP拥塞控制
拥塞控制:就是在网络中发生拥塞时,减少向网络中发送数据的速度,防止造成恶性循环;同时在网络空闲时,提高发送数据的速度,最大限度地利用网络资源。
有无拥塞控制的区别
感知网络拥塞:
Loss事件=timeout或3个重复复ACK
发生loss事件后,发送方降低速率
调整发送速率,进行拥塞控制的方法:
-
加性增-乘性减(AI-MD):逐渐增加发送速率,谨慎探测可用带宽,直到发生loss
- AI(additive Increase):每个RTT将CongWin增大一个MSS——拥塞避免
- MD(Multiplicative Decrease)发生loss后将CongWin减半
-
慢启动:SS:当连接开始时,指数性增长
- 指数型增长
- 每个RTT将CongWin翻倍
- 收到每个ACK进行操作
- 初始速率很慢,但是快速攀升
- 指数型增长
Loss事件的处理:
- 收到3个重复ACK时:
- CongWin且到一半 即CongWin/2
- 然后线性增长
- 发生Timeout事件时:(拥塞更为严重)
- CongWin直接设为1个MSS(一个最大报文段长度)
- 然后指数增长
- 达到临界后,再线性增长