bbr 收敛动力学背后的数学原理

我进一步把 bbr 模型简化为更一般的形式。设 x 为 bbr 流的 estimated bw,wₓ 为 bbr 流的 inflight,C 为瓶颈带宽,R 为传播时延,R_s 为总时延,pacing_rate 增益为 g:

I ( t ) = t o t a l _ i n f l i g h t _ a t _ t I(t)=total\_inflight\_at\_t I(t)=total_inflight_at_t

bw 方程: d x d t = C ⋅ g ⋅ x ⋅ R s I ( t ) − x \dfrac{dx}{dt}=C\cdot \dfrac{g\cdot x\cdot R_s}{I(t)}-x dtdx=CI(t)gxRsx

inflt 方程: d w x d t = x ⋅ R − w x \dfrac{dw_x}{dt}=x\cdot R-w_x dtdwx=xRwx

其中 bw 方程体现了 probebw 状态 gain = 1.25 阶段,inflt 方程体现了 probebw 状态 gain = 0.75(or 0.9) 阶段,若 2 流共存,其 bw 分别为 x,y,则可化简为:

d x d t = C ⋅ g ⋅ x g ⋅ x + y − x \dfrac{dx}{dt}=C\cdot \dfrac{g\cdot x}{g\cdot x+y}-x dtdx=Cgx+ygxx

d w x d t = x ⋅ R − w x \dfrac{dw_x}{dt}=x\cdot R-w_x dtdwx=xRwx

有趣的是,公平性恰恰由 probe 行为在 buffer 中促成,若把 g 调整为 1,初始值将永久持续不会发生任何变化:
在这里插入图片描述

probe 不仅用于获得空闲带宽资源,正是 g > 1 的 probe 行为促进了公平收敛。通过调整 g,g 越大,收敛越快:
在这里插入图片描述

接下来设 g = 2.25,收敛更快:
在这里插入图片描述

代价是 buffer 占率更高。可见,如何在 buffer 占率和收敛速度之间 tradeoff,是 bbr 调参的一大关键。

在 buffer 中持续腾挪数据包是公平性的保证,buffer 作为操作空间,若一点 buffer 都不用,则无法保证公平收敛。buffer 给了流量努力的空间和机会,努力才会公平,其中的不变量就是瓶颈带宽 C。
这背后的 why 在直观上非常显见,以 aimd 为例,若 buffer 无限大,随着 additive increase,buffer 占用越来越多,increase 幅度相同,意味着初始值的影响越来越小,buffer 占率趋向等分,带宽分配趋向公平,背后的理论是 ,W₁,W₂ 为两条流的厨师窗口,则随 x 的增加, W 1 + x W 2 + x \dfrac{W_1+x}{W_2+x} W2+xW1+x 趋向于 1。

对于 bbr,稍有不同但大差不差。

与 aimd 不同,bbr 的 primary controller 是 rate,而注意到总瓶颈带宽 C 是不变量,虽 buffer 可无限,但 maxbw 有限,正是注意到这个不变量资源限制,bbr 才被提出用来在解决 bufferbloat 前提下提高带宽利用率。

若不限制 bbr 的 buffer 占用,就像 aimd 只 ai 不 md 一样,其模型将变成:

$I(t)=total_inflight_at_t $

d x d t = C ⋅ g ⋅ x ⋅ R s ( t ) I ( t ) − x \dfrac{dx}{dt}=C\cdot \dfrac{g\cdot x\cdot R_s(t)}{I(t)}-x dtdx=CI(t)gxRs(t)x

d w x d t = x ⋅ R s − w x \dfrac{dw_x}{dt}=x\cdot R_s-w_x dtdwx=xRswx

R s ( t ) = I ( t ) C R_s(t)=\dfrac{I(t)}{C} Rs(t)=CI(t)

给出最初时间段的趋势图:
在这里插入图片描述

可以看出虽然 inflt 由于 g = 1.25 强度的 probe 在快速发散,但 bw 仍然趋向收敛,这就是 buffer 动力学,与 aimd 殊途同归,buffer 占用越多,初始值的影响越微弱。

个中原因,不难计算一个 “bw 加速度” r:

r = p r o b e 后的 b w p r o b e 前的 b w = C ⋅ g ⋅ x g ⋅ x + y C ⋅ x x + y = C ⋅ g g ⋅ x + C − x = C ⋅ g ( g − 1 ) ⋅ x + C r=\dfrac{probe 后的bw}{probe 前的bw}=\dfrac{C\cdot\dfrac{g\cdot x}{g\cdot x+y}}{C\cdot\dfrac{x}{x+y}}=C\cdot\dfrac{g}{g\cdot x+C-x}=\dfrac{C\cdot g}{(g-1)\cdot x+C} r=probe前的bwprobe后的bw=Cx+yxCgx+ygx=Cgx+Cxg=(g1)x+CCg

这是一个关于 x 的减函数,带宽越小,r 越大,意味着 bw 加速度越大,这正是公平收敛的内在机理。

只需最后一步,像为 additive increase 增加一个 multiplicative decrease 一样,为 bbr 的增加 drain 机制,无论 probebw 状态的 g = 0.75 drain 还是 probertt 状态的 inflt = 4 drain,或 startup 后的 drain 状态,都起到往回收 buffer 的作用,但 buffer 动力学的结果却保留了下来,公平收敛持续进行。

从拥塞控制算法整体视角看,效率不是偶然,而是设计的结果,但公平却始自海阔凭鱼跃,天高任鸟飞,这也是科斯定律的机理。

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

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值