tcp vegas 的伸缩性

vegas 为啥好 的篇中,我给出一幅 diff 的 diff 图像,提到了 vegas 绝大多数情况对带宽变化的敏感公平性以及 短肥管道(比如数据中心)的敏感不公平性,本文给出更直观的解释。

网络伸缩的不变量是 “瓜分或出让同一块 buffer 的能力”。无论 basertt 是 1000 还是 1,它们都以同样的力道对待同一块 buffer。

给出 queuing_delay 变化时的 diff 的图像是高尚的,由于引入了除 cwnd,basertt,diff 之外 queuing_delay 第四个变量,无法直观画四维图像,但可以将三维图像作为四维图像的快照投影(这也是我们处理时间的方法),比较两个即可。

给出 diff 表达式,设 cwnd 为 x,basertt 为 y,diff 为 z,给出两个不同 queuing_delay 时的 diff,观察两张三维面之间的距离。

先看一般情况:
在这里插入图片描述

y = x 的一般场景,覆盖了大部分的带宽和时延同步的管道,可发现在不同 queuing_delay 下,两张三维面几乎是等距的,而距离反应了 vegas 对 queuing_delay 变化的敏感度,等距意味着不同 rtt 的 vegas 连接对带宽流量退出和侵入等变化具有相同的敏感性,这对 basertt 很大的流是太好了。

再看短肥管道的敏感性不公平,basertt 稍微变化,diff 的 diff 就会变化很大,带宽越大,rtt 越小,不公平效应越明显:
在这里插入图片描述

y = alpha * x,alpha 越大,管道越短越肥,可见两个平面间的距离随着 x (带宽)增加差异越大。这种情况下,可以使用 diff 的吞吐版本取代 bdp 版本做偏置,即 diff = actual - expected,不再乘以 basertt:
在这里插入图片描述

之所以可以这么做,因为短肥网络带宽相对固定且受控,从管理员那里即可问出。 alpah < diff < beta 中的 alpha,beta 可配置为固定值。

犄角旮旯的边界条件下的不公平性都能采用类似方式解决,如果有相对固定的配置,就固定化它,加个 if 语句隔离,或者学 cubic tcp friendly 做法,对特殊的情况直接隔离回退,大可不必为罕见场景或非工作场景绞尽脑汁设计通用算法。

总之,特殊判断外加 aimd 兜底,就能让 vegas 变成实际可用的算法。

引个哲学话题,松弛,这也是最近读《道德经》的感悟,为了让绳子笔直,必须双手持续使力,但为什么要笔直呢?双手松开,绳子也不会弯曲到哪里去。

为维持在最大带宽和最小时延的最佳操作点,bbr 要持续检查,如果 bbr 真做到了清空队列,就不得不再引入 probe 机制探取带宽,队列清空做不准,做准后要 probe,这一切增加了复杂性,且结果依旧不准,正如双手持续使力,为何不放手呢,何必在最小时延维持,松弛后的结果不光增加 buffer 占用,还可自动 probe,drain。

松弛之后没有失去,反而获得。

很多经理根本不知道我在说什么,我的客体是一个可以在上面高效率跑流量的共享网络系统,而不是在一个共享网络系统上高效率跑流量,如果是后者,自然会得出相反的结论,显然我们说的 “效率” 不是一回事。经理有经理的难处,松弛一下,自然懂我。

浙江温州皮鞋湿,下雨进水不会胖。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值