传统TCP拥塞控制算法详解一(TCP Reno传统拥塞控制算法)

基于loss, delay的不同TCP算法一(TCP Reno传统拥塞控制算法)


为什么TCP Reno要用AIMD(Additive Increase/Multiplicative decreases)作为用塞控制的一部分

Analysis of the increase and decrease algorithms for congestion avoidance in computer networks

基于这篇文章,我们有四种用塞控制算法分别为:

  1. Multiplicative Increase/Multiplicative decreases ◼ bI > 1, 0 < bD <1 (乘法增加/乘法减少)
  2. Additive Increase/Additive decreases ◼ aI > 0, aD < 0, b = 1 (加法增加,加法减少)
  3. Additive Increase/Multiplicative decreases ◼ aI > 0, 0 < bD < 1, bI = 1(加法增加,乘法减少)
  4. Multiplicative Increase/Additive decreases ◼ bI > 1, aD < 0, bD = 1(乘法增加,加法增加)请添加图片描述
    (基于这个图像来进行计算下次发送流量)
    请添片描述
    在binary feedback中,用塞控制过程会出现这样波动的过程,如果我们能够尽可能减少这种波动的范围,就可以提高发送速率。
    同时为了尽可能使得发送过程中多个sender/receiver之间尽可能的公平,我们可以选择多种策略:请添加图片描述
    如果加法增加或者减少会和Fairness line平行如红线,如果乘法增加或者减少会如蓝线呈现同比例的fairness的特征,为了尽可能的实现整体的公平性:请添加图片描述
    我们可以选择AIMD的特征,通过这样的震荡过程不断接近最优点也就是optimal point,因此选择了AIMD的策略。(TCP Reno中拥塞控制就是基于这个特点)

TCP Reno算法(基于AIMD的实现)

请添加图片描述

  1. slow start 慢启动算法
    初始用塞窗口设置为1,慢启动阀值设置为ssthresh,此时可以传1个MSS大小的数据,没收到一个ACK, 用塞窗口cwnd加一,这样每过一个RTT,cwnd翻倍,指数上升。达到ssthresh进入用塞避免阶段
  2. 拥塞避免算法
    每经过一个RTT(往返时间)拥塞窗口cwnd加1,相当于进行了一个可发送窗口的线性探测(AI)
  3. 快速重传算法
    sender 连续收到3个相同的ACK,立即重传,设置新的慢启动门限为ssthresh = cwnd / 2
  4. 快速恢复算法
    快速重传后立即执行快速恢复算法,设置cwnd = ssthresh = cwnd / 2,然后进行拥塞避免算法(MD)没有慢启动的过程。其中cwnd窗口呈现周期性变化。请添加图片描述

TCP Reno缺点

  1. 需要链路中buffer支持。由于TCP Reno 是loss based 算法,需要链路中的Buffer对其支持,如果buffer比较小,出现丢失的次数会很大,因此带宽很容易跑不满。

  2. 带宽利用率过低。
    考虑这样一个例子:链路带宽为1Gbps,RTT 200ms,默认的最大窗口大小为64KB,此时最大的带宽为:Wmax/RTT = 2,621,400 bps or 2.62Mbps! 太小了!!
    考虑第二个例子:从窗口大小为100KB出发,RTT= 100ms,如果我们使用Reno算法,基于AIMD(默认没有loss)好久才能跑满1Gbps?(MTU = 1500B)
    Maximum window size
    = Bandwidth Delay Product
    = 109 * 0.1 = 108 bits or 1.25 * 107 bytes
    ◼ Window increment = (B - A)/1500
    ◼ Duration = Window increment/RTT ~ 826.5s

需要826s才能跑满,这是不可接受的。

  1. 如果多个流共享链路,RTT较小的会占用更大带宽(因为慢启动还有AI都是基于RTT),不够公平。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值