BBR 的不公平性

BBR 公平收敛在相图中的细节aimd,bbr,inflt 守恒的收敛相图总结 已经介绍了 BBR 的 gain 不公平性,本文介绍 BBR 的 RTT 不公平性。

直觉上,BBR 采用 probe_quota = gain * maxbw * minrtt 来 probe 带宽,minrtt 越大,probe 力度越大,就跟 gain 越大,probe 力度越大一样。

给出以下代码,获得直感:

for n in range(1, len(times)):
    if n % rttx == 0:
        x[n] = x[n-1] + dt * (C*g1*x[n-1]*rttx/(g1*x[n-1]*rttx + wy[n-1] + wz[n-1]) - x[n-1])
        wx[n] = x[n]*rttx
    else:
        x[n] = x[n-1]
        wx[n] = wx[n-1]

    if n % rtty == 0:
        ...

    r1[n] = wx[n]/x[n]
    r2[n] = wy[n]/y[n]
    r3[n] = wz[n]/z[n]
    if r1[n] < rttx:
      r1[n] = rttx
    if r2[n] < rtty:
      r2[n] = rtty
    if r3[n] < rttz:
      r3[n] = rttz

运行看结果,同时展示 gain 不公平性和 RTT 不公平性,参数在图头:
在这里插入图片描述

看 probe_quota 的定义,同频不同 gain 的效果和异频同 gain 的效果一致,后者只需归一化 RTT,就能得到不同的 gain,然后套用 bw1:bw2 = g1:g2 来定调。

所以怎么办?

让 RTT 和 gain 反比即可,这就又是一个调参的体力活,无非就是搜集现网数据,拟合这些数据,获得一个最佳的 k = gain * RTT,让 k 变成可调的,随便给个建议值,自己调去吧。

我姑且论 k = 100,再次运行上述例子:

K = 100#1.25*71
for n in range(1, len(times)):
    if n % rttx == 0:
        x[n] = x[n-1] + dt * (C*(K/r1[n-1])*x[n-1]*rttx/((K/r1[n-1])*x[n-1]*rttx + wy[n-1] + wz[n-1]) - x[n-1])
        wx[n] = x[n]*rttx
    else:
        x[n] = x[n-1]
        wx[n] = wx[n-1]

跑起来,看结果:
在这里插入图片描述

值得注意的是,如何确保 K/rtt > 1,另外,为什么我用 K/srtt(或 irtt) 而不是 K/minrtt,理由是这里有个可用的负反馈,如果 srtt 过大了,说明 queuing 趋向严重,g = K/srtt 趋向变小,减少 queuing。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值