第3节 网络拥塞控制
网络拥塞:网络性能曲线

拥塞(Congestion)
- 拥塞
网络资源上有太多的分组时,将会导致网络性能下降。
对资源需求的总和 > 可用资源
资源:链路容量、交换节点中的缓存和处理机速度等。 - 拥塞产生的原因
低带宽线路
多个输入对应一个输出
节点缓冲容量太小
结点处理机速度不高
拥塞的策略: 决不只针对某个因素改善拥塞!!!
- 若结点缓存容量太小,到达结点的分组无空间暂存;
- 若增大结点缓存容量,而链路容量和处理机速度未提高,分组排队会很长,导致时延增大,可能因超时发送端进行重发,发出更多的分组,拥塞更加恶化;
- 提高结点处理机速度,增大链路容量,故然可以改善这段的拥塞,但可能只是将瓶颈转移到其他地方。
- 因此,针对某个因素的解决方案,只能对提高网络性能起到一定的好处,甚至仅仅是转移了影响性能的瓶颈。
拥塞控制与流量控制的差别
- 拥塞控制(congestion control)
需要确保通信子网能够承载用户提交的通信量,是一个全局性过程,涉及主机、路由器等很多因素; - 流量控制(flow control)
与点到点的通信量有关,主要解决快速发送方与慢速接收方的问题,是局部过程,一般都是基于反馈进行控制的。
拥塞和流量控制的区别

拥塞控制所起的作用

5.3.1 拥塞控制的通用原则
-
有两种思路
防患未然
亡羊补牢
两种思路
-
Open loop(开环方法)
试图采用良好的设计来解决问题,本质是从一开始就保证不会发生拥塞问题。
一旦网络系统启动运行起来,就不需要中途做修正。 -
Closed loop(闭环方法)
基于返回环路的概念基础之上:
Explicit feedback (显式反馈)
Implicit feedback(隐式反馈)
5.3.2 开环方法:拥塞预防策略

闭环控制策略
-
三个步骤:
监视系统,检测到何时何地发生了拥塞
将该信息传递到能够采取行动的地方
调整系统的运行,以改正问题。
1.监视系统,检测是否发生拥塞
-
拥塞控制使用的度量标准
丢弃的分组所占的百分比(缺少缓冲区空间)
平均队列长度
超时和重传分组的数量
平均分组延迟和分组延迟的标准方差
2. 将拥塞信息传输到能够采取行动的地方
-
拥塞信息的传输方法(隐式和显示反馈)
给流量源发送一个分组,告知拥塞的发生;
在分组中增加一个位或一个域,检测到拥塞时,路由器填充该位,在它所有的输出分组中填充该域,以告警它的邻居
主机或路由器周期性地向外发送探询分组,显示地询问有关拥塞状况,然后在有问题的区域中,可以利用这些信息来路由流量。
3. 调整系统的运行
-
目的:拥塞消息将最终导致主机采取适当的行动来减轻拥塞。
-
谨慎的调整时间尺度:
系统不会产生剧烈震荡
拥塞机制要及时有效
5.3.3 虚电路子网中的拥塞控制

资源预留策略(虚电路子网)
-
资源预留:
建立虚电路时,主机与子网达成协议,子网根据协议在虚电路上为此连接预留资源。
问题是:
是任何时刻都使用资源预留吗?
还是只在发生拥塞时?
5.3.4 数据报子网中的拥塞控制

警告位(The Warning Bit)
-
路由器
当输出线路达到告警状态时,路由器将发送出去的分组头部设置告警位。 -
目的地
当分组到达目的地时,告警位被复制到ACK分组中,发给源端。 -
源端
随着带有警告位的确认分组不断回来时,源端不断的降低它的传输速率
当带有警告位的确认分组减少到规定值时,源端增加它的传输速率
由于沿途的路由器都可能设置警告位,所以只有当所有的路由器都排除了问题之后,流量才能增加上去。
抑制分组( Choke Packets )
-
路由器
路由器给源端返回一个抑制分组,并指出原分组的目标地址;
原来的分组被打上一个标记,防止沿途其他路由器又重复产生抑制分组 -
源端主机
收到抑制分组后,将发送到指定目标的流量减少X百分比 随后到达的具有相同目的地抑制分组被忽略
一段间隔后,继续监听
如果又有抑制分组,则进一步降低发送流量;
如果没有抑制分组,则增加流量
主机可以调节流量,例如利用一个窗口
第一次可以导致流量减少到原来的 50%, 第二此可以减少到 25%......
快速减少,缓慢增加
逐级跳(hop-by-hop)抑制分组
-
产生原因
在高速、长距离的网络中,由于源主机响应太慢,抑制包算法对拥塞控制的效果并不好,可采用逐跳抑制包算法。 -
基本思想
抑制包对它经过的每个路由器都起作用;
能够迅速缓解发生拥塞处的拥塞;
上游路由器要求有更多的缓冲区;


5.3.5 负载丢弃(load shedding)
-
原则
上述算法都不能消除拥塞时,路由器只得将包丢弃; -
针对不同服务,可采取不同丢弃策略
随机丢弃
Wine & Milk
E.g. file transfer, multimedia
Requires cooperation from the senders
分组带有优先级
E.g. algorithms for compressing video, …
The low-priority packets being cheaper to send than the high-priority ones, …
RED (Random Early Detection)
Drop packets before the situation has become hopeless
How should the router tell the source about the problem?
Send a choke packet
Just discard the selected packet
Sources respond to lost packets by slowing down their transmission rate
从网络上看视频时,为何总要缓存,缓存?
5.3.6 抖动(jitter)控制
-
抖动:分组到达时间的变化量被称为抖动。
-
路由器对抖动的控制方法
来得晚的,加快其转发速度;
提早到达的,让分组在缓冲区中多逗留一会。


