拥塞控制原理
概述
拥塞
- 非正式的定义:"太多的数据需要网络传输,超过了网络的处理能力"
- 与流量控制不同
- 拥塞的表现
- 分组丢失(路由器缓冲区溢出)
- 分组经历比较长时间的延迟(在路由器的队列中排队)
- 网络中前10位的问题
拥塞的原因/代价
场景一:缓冲无限大、无重传
- 2个发送端,2个接收端
- 一个路由器,具备无限大的缓冲
- 输出链路带宽:R
- 没有重传
- λ i n λ_{in} λin为输入的速率, λ o u t λ_{out} λout为输出的速率
- 每个连接的最大吞吐量:R / 2
- 当进入的速率 λ i n λ_{in} λin接近链路带宽R时,延迟增大
场景二:缓冲有限,有重传
- 一个路由器,有限的缓冲
- 分组丢失时,发送端重传
- 应用层的输入 = 应用层的输出: λ i n = λ o u t λ_{in} = λ_{out} λin=λout
- 传输层的输入包括重传: λ i n ′ ′ ≥ λ i n λ^{''}{in} \geq λ{in} λin′′≥λin
理想化:发送端有完美的信息
发送端知道什么时候路由器的缓冲是可用的
- 只在缓冲可用时发送
- 不会丢失 λ i n ′ = λ i n λ^{'}{in} = λ{in} λin′=λin
理想化:掌握丢失信息
分组可以丢失,在路由器由于缓冲器满而被丢弃
- 如果发送端知道分组丢失了,发送方重传
现实情况:重复
- 分组可能丢失,由于缓冲器满而被丢弃
- 发送端最终超时,发送第二个拷贝,2个分组都被传出
拥塞的"代价"
- 为了达到一个有效输出,网络需要更多的输入速率(重传)
- 没有必要的重传(加剧了网络的拥塞),链路中包括了多个分组的拷贝
- 是那些没有丢失,经历的时间比较长(拥塞状态)但是超时的分组
- 降低了的"goodput"
场景三:死锁
四个发送端:A→D,D→A,B→C,C→B(就是AD,BC相互连接)
- 当红色的增加时,所有到来的蓝色分组都在最上方的队列中丢弃了,蓝色吞吐->0
- 同理,绿色的也可能抢走红色的(在右边的路由器)
- 粉色的可能抢走绿色的(下边的路由器)
- 蓝色的抢走粉色的(左边的路由器)
- 总之,网络中有输入,但是没有输出
又一个拥塞的"代价"
- 当分组丢失时,任何"关于这个分组的上游传输能力" 都被浪费了
拥塞控制方法
2种常用的拥塞控制方法:
- 端到端拥塞控制
- 没有来自网络的显式反馈
- 端系统根据延迟和丢失事件推断是否有拥塞
- (TCP采用的方法)
- 网络辅助的拥塞控制:
- 路由器提供给端系统以反馈信息
- 单个bit置位,显示有拥塞 (SNA, DECbit, TCP/IP ECN, ATM)
- 显式提供发送端可以采用的速率
ATM ABR拥塞控制
ATM网络
ATM:异步传输网络,是物联网掺杂的网络
- 数据传输单元(分组)是信元:53个字节,5个字节的头部,另外48个字节是数据部
- 分组很小(53个字节),而且是固定长度
- 所以在每个交换节点的存储转发时间很小而且可以控制
- 线路交换在数据交换节点的延迟是1bit的延迟,分组交换的延迟是1个分组的延迟
- 由于ATM的分组---信元大于1bit,但是远小于普通的一个分组,因此其延迟位于线路交换和分组交换之间
- 而且延迟时间固定(一位信元字节数固定),而且容易调度
- 因此具有线路交换和分组交换的特性
- ATM本来认为是很有希望的网络形式
- 后来因为网络技术比较复杂并没有流行开来
- 但是在一些专用网络,比如银行网络使用的还是比较多的
ATM有很多模式,ABR是其中一个
ABR模式
ABR: available bit rate:
- 弹性服务:
- 如果网络轻载(不发送拥塞),可以尽可能使用网络带宽
- 如果网络拥塞了 ,发送方限制其发送的速度到一个 最小保障速率 上
在ATM网络中有两种信元:数据信元(data cell)和资源信元(RM cell)
RM (资源管理) 信元:
- 由发送端发送,在数据信元中间隔插入
- RM信元中的比特被交换机设置 (网络辅助)
- NI bit: no increase in rate (轻微拥塞)速率不要增加了
- CI bit: congestion indication 拥塞指示(表明已经拥塞了)
- 发送端发送的RM 信元被接收端返回, 接收端不做任何改变
-
数据信元中的EFCI bit: 被拥塞的交换机设置成1
- 如果在管理信元RM前面的数据信元EFCI被设置成了1, 接收端在 返回的RM信元中设置CI bit
- 在RM信元中的2个字节 ER (explicit rate)字段 多大带宽
-
拥塞的交换机可能会降低信元中ER的值(但是不会提高)
- 发送端接受到的RM的ER字段表示路由器可以支持的最低的速率
- 发送端发送速度因此是最低的可支持速率