udx实现揭秘之---------udx的慢启动带宽探测

我们都知道bew = wnd*1000/rtt

当慢启动的时候,每收一个ack,可以这样调整发送速度当前sendspeed = sendspeed + mss/rtt.并且更新wnd->wnd+1.

udx的变形版本是sendspeed += checksize/rtt;

但是这种增加速度太快,在到达临界点的时候,很容易击穿网络,如果你吃第100个馒头时可能撑爆你的肚子。

因为速度在每个周期成倍或数倍的趋势在增加。

为了克服这个问题。我们引入下面的机制

BEW = WND*1000/RTT公式中,我们分子分母变成 bew = Wnd * (MINRTT*MINRTT*1000)/(RTT*RTT*RTT) 

当MINRTT == RTT的时候,即网络初期,公式还是BEW = WND*1000/RTT,而当网络快到达临界点的时候,RTT远大于MINRTT,从而导致BEW增量 = checksize*(MINRTT*MINRTT*1000)/(RTT*RTT*RTT) 值很小,从而控制整个发送速度不是那么快,根据RTT自己适应的增加,从而避免击穿网络。

如下图:完美探测带宽。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值