拥塞控制

来源:互联网 发布:淘宝网直通车怎么开 编辑:程序博客网 时间:2024/06/13 09:33

1 拥塞控制

拥塞(Congestion)

  • 非正式定义:“太多发送主机发送了太多数据或者发送速度太快,以至于网络无法处理”
  • 表现:
    • 分组丢失(路由器缓存溢出)
    • 分组延迟过大(在路由器缓存中排队)
  • 拥塞控制 vs. 流量控制
  • A top-10 problem

2 拥塞的成因和代价

场景1

这里写图片描述

场景2

这里写图片描述

这里写图片描述

场景3

这里写图片描述

这里写图片描述

3 拥塞控制的方法

端到端拥塞控制

  • 网络层不需要显式的提供支持
  • 端系统通过观察loss,delay等网络行为判断是否发生拥塞
  • TCP采取这种方法

网络辅助的拥塞控制

  • 路由器向发送方显式地反馈网络拥塞信息
  • 简单的拥塞指示(1bit):SNA,DECbit, TCP/IP ECN, ATM)
  • 指示发送方应该采取何种速率

案例:ATM ABR拥塞控制

ABR:available bit rate

  • ”弹性服务”
  • 如果发送方路径“underloaded”,使用可用带宽
  • 如果发送方路径拥塞,将发送速率降到最低保障速率

RM(resource management) cells

  • 发送方发送
  • 交换机设置RM cell位(网络辅助)
    • NI bit: rate不许增长
    • CI bit: 拥塞指示
  • RM cell由接收方返回给发送方

这里写图片描述

  • 在RM cell中有显式的速率(ER)字段:两个字节
    • 拥塞的交换机可以将ER置为更低的值
    • 发送方获知路径所能支持的最小速率
  • 数据cell中的EFCI位: 拥塞的交换机将其设为1
    • 如果RM cell前面的data cell的EFCI位被设为1,那么发送方在返回的RM cell中置CI位

4 TCP拥塞控制

TCP拥塞控制的基本原理

Sender限制发送速率
LastByteSent-LastByteAcked<= CongWin
rate ≈ CongWin/RTT Bytes/Sec

CongWin:

  • 动态调整以改变发送速率
  • 反映所感知到的网络拥塞

问题:如何感知网络拥塞?

  • Loss事件=timeout或3个重复ACK
  • 发生loss事件后,发送方降低速率

如何合理地调整发送速率?

  • 加性增—乘性减: AIMD
  • 慢启动: SS

加性增—乘性减: AIMD

  • 原理:逐渐增加发送速率,谨慎探测可用带宽,直到发生loss
  • 方法: AIMD
    • Additive Increase: 每个RTT将CongWin增大一个MSS——拥塞避免
    • Multiplicative Decrease: 发生loss后将CongWin减半

这里写图片描述

TCP慢启动: SS

TCP连接建立时,CongWin=1。
例:MSS=500 byte, RTT=200msec,初始速率=20k bps。

可用带宽可能远远高于初始速率:希望快速增长。

原理:当连接开始时,指数性增长。

这里写图片描述

  • 指数性增长
    • 每个RTT将CongWin翻倍
    • 收到每个ACK进行操作
  • 初始速率很慢,但是快速攀升

这里写图片描述

Threshold变量

Q:何时应该指数性增长切换为线性增长(拥塞避免)?
A: 当CongWin达到Loss事件前值的1/2时.

实现方法:

  • 变量 Threshold
  • Loss事件发生时, Threshold被设为Loss事件前CongWin值的1/2。

这里写图片描述

Loss事件的处理

  • 3个重复ACKs:
    • CongWin切到一半
    • 然后线性增长
  • Timeout事件:

    • CongWin直接设为1个MSS
    • 然后指数增长
    • 达到threshold后, 再线性增长

    3个重复ACKs表示网络还能够传输一些 segments,timeout事件表明拥塞更为严重。

TCP控制算法

这里写图片描述

例题

一个TCP连接总是以1 KB的最大段长发送TCP段,发送方有足够多的数据要发送。当拥塞窗口为16 KB时发生了超时,如果接下来的4个RTT(往返时间)时间内的TCP段的传输都是成功的,那么当第4个RTT时间内发送的所有TCP段都得到肯定应答时,拥塞窗口大小是多少?
解:threshold=16/2=8 KB, CongWin=1 KB, 1个RTT后, CongWin=2 KB ,2个RTT后, CongWin=4 KB ,3个RTT后, CongWin=8 KB ,Slowstart is over; 4个RTT后, CongWin=9 KB。

5 TCP性能分析

TCP throughput: 吞吐率

给定拥塞窗口大小和RTT,TCP的平均吞吐率是多少?

  • 忽略掉Slow start
  • 假定发生超时时CongWin的大小为W,吞吐率是W/RTT
  • 超时后,CongWin=W/2,吞吐率是W/2RTT
  • 平均吞吐率为:0.75W/RTT

未来的TCP

举例:每个Segment有1500个byte, RTT是100ms,希望获得
10Gbps的吞吐率

  • throughput = W*MSS*8/RTT, 则
  • W=throughput*RTT/(MSS*8)
  • throughput=10Gbps, 则W=83,333
  • 窗口大小为83,333

这里写图片描述

TCP的公平性

公平性?如果K个TCP Session共享相同的瓶颈带宽R,那么每个Session的平均速率为R/K。

这里写图片描述

TCP具有公平性吗?是的。

这里写图片描述

  • 公平性与UDP

    • 多媒体应用通常不使用TCP,以免被拥塞控制机制限制速率
    • 使用UDP:以恒定速率发送,能够容忍丢失
    • 产生了不公平
  • 研究:TCP friendly

  • 公平性与并发TCP连接

    • 某些应用会打开多个并发连接
    • Web浏览器
    • 产生公平性问题

例子:链路速率为R,已有9个连接

  • 新来的应用请求1个TCP,获得R/10的速率
  • 新来的应用请求11个TCP,获得R/2的速率
原创粉丝点击