拥塞控制
概述
拥塞: 当一个网络出现太多分组,导致网络性能急剧下降
出现资源拥塞的条件:对资源需求的总和 > 可用资源
拥塞控制:采取措施,防止网络出现拥塞.
有人想到了流量控制,他们有什么区别呢?
- 拥塞控制是一个全局性问题
- 所有主机和路由器
- 存储-转发处理过程
- 所有可能会削弱子网承载容量的其他因素
- 流量控制只涉及发送方和接收方之间的点到点流量
- 限制发送速率
- 接收方 向 发送方 发送反馈信息
- 滑动窗口
思路
Open loop(开环方法) 试图采用良好的设计来解决问题,本质是从一开始就保证不会发生拥塞问题。 一旦网络运行起来,就不需要中途做修正。
Closed loop(闭环方法)
基于返回环路:
Explicit feedback (显式反馈)
Implicit feedback(隐式反馈)
方法
- Open loop(开环方法)
- Preventative(预防性的方法)
- Closed loop(闭环方法)
- Network Provisioning(网络供给):网络升级/改造
- Traffic-aware routing(流量感知路由):在计算路由的时候,把流量因素考虑进去。
- 链路权值会根据网络负载动态调整, 可以将网络流量引导到不同的链路上, 均衡网络负载。
- 绕开热门的区域,疏散流量
- 可能会出现摇摆不定的问题
- Internet路由协议一般不考虑流量负载因素
- Admission Control(准入控制):降低负载,在虚电路中控制新连接的建立。
- 用于虚电路网络
- 一旦出现拥塞,则不再创建任何虚电路.
- 当虚电路建立的时候,在主机和子网之间进行协商以达成一致的约定
- 协商服务质量
- 预留资源
- 绕开有问题的区域建立新的虚电路
- Traffic throtting(流量调整)
- 动态调整发送速度
- 当拥塞迫在眉睫的时候,它必须告诉发送方紧急刹车放慢速度
- 监视系统:预警拥塞 将监视的信息反馈到能够采取缓解行动的地方
- 依据什么来判断是否可能出现拥塞?
- 链路平均利用率 路由器内缓存排队的数据包 丢弃的数据包数量
- EWMA模型:计算指数加权平均数
- The warning bit(设置警告位)
- 路由器 监视平均队列长度 当路由器处于警告状态时,在转发分组的头部设置二进制警告位
- 源主机 目标端将警告位送回源主机 源主机监视设置了包含警告位的分组比例 超过阈值,源主机减少发送
- Choke packet(抑制分组)
- 当路由器处于警告状态时,向源主机发送抑制分组
- 源主机将减慢到相同目标端的分组传输速率 调整策略参数,按一定比例(比如50% )减少发向特定目的地的流量 在一段时间间隔内,忽略所有指向同一目标的抑制分组
- 若在监听周期内没有收到抑制包,则增加负载
- 流量增减策略是:减少时,按比例减少,保证快速解除拥塞;增加时,以常量增加,防止很快导致拥塞。
- 发生拥塞时,路由器选择哪个分组,向该分组源端发送抑制分组?
- 随机选择:发送方的速度越快,它的数据包排队在路由器队列中的数目就越多。
- Hop-by-hop choke packet(逐跳抑制分组)
- 抑制分组:只会影响到源主机,响应太慢
- 逐跳抑制分组:让经过的路由器减慢分组流
- 抑制包对它经过的每个路由器都起作用 能够迅速缓解发生拥塞处的拥塞 上游路由器要求有更多的缓冲区
- 调整系统的运行以解决问题
- Load shedding(负载丢弃)
- 拥塞的时候丢弃一些分组来消除拥塞
- 路由器丢弃哪些分组呢?
- 葡萄酒策略 老的分组比新的分组更有价值 例如,文件传输
- 牛奶策略 新的分组比老的分组更有价值 例如,实时流媒体、直播视频
- 优先级:源主机标明哪些分组更重要
- 当一开始检测到可能出现拥塞的时候就采取措施,比等到拥塞严重影响工作之后再采取措施更有效 在实际耗尽所有的缓冲区空间之前就开始丢弃分组 在有些传输协议(包括TCP)中,针对分组丢失的响应措施是源主机减慢传输速度,这样可以减少拥塞