首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
inflight专题
用相图分析 bbr,inflight 守恒的收敛速度
以下的代码绘制了 bbr 的收敛相图: #!/opt/homebrew/bin/python3import numpy as npimport matplotlib.pyplot as pltfrom scipy.integrate import odeintdef model(vars, t, C, g):x, y = varsdxdt = C * (g * x) / (g * x + y
阅读更多...
bbr 微观建模与 inflight 守恒
bbr 解决 bufferbloat 的核心在于一个负反馈方程,设 x 为预估带宽,x_i 为 inflt,则: d x i d t = x ⋅ R − x i \dfrac{dx_i}{dt}=x\cdot R-x_i dtdxi=x⋅R−xi 这个简单的负反馈能让数据流收住 buffer,显然,当其 inflt 大于 bdp 时,方程为负数,直到排空 buffer。如果没有这个方程
阅读更多...
inflight 守恒算法的实现和仿真
前面介绍过,只要某条流的 inflt 在 bdp 之外再增加一个相等的余量 I,即 inflt = bdp + I,比如 I = 2,I = 3,…,就一定会收敛到公平,且不会占据过多 buffer,因此 rtt 不会膨胀,I 的大小影响收敛速度,I 越大,收敛越快,但 buffer 占据也更多,I 越小,收敛越慢,但 buffer 占据更少,所以效率和公平的 tradeoff 在此体现。 记住
阅读更多...
tcp inflight 守恒算法的自动收敛
inflight 守恒算法看起来只描述理想情况,现实很难满足,是这样吗? 从 reno 到 bbr,无论哪个算法都在描述理想情况,以 reno 和 bbr 两个极端为例,它们分别描述两种理想管道,reno 将 buffer 从恰好的 0 塞到满而保持对带宽 100% 利用,而 bbr 则通过寻求维持在 buffer 恰好为 0 的状态保持对带宽 100% 的利用,它们分别是范雅各布森管道和 bb
阅读更多...
tcp inflight 守恒算法的几何解释
接上文:tcp inflight 守恒算法背后的哲学 在 tcp inflight 守恒算法正确性 中,E = bw / srtt 的公平最优解是算出来的,如果自然可以用数学描述,那能算出来的东西反过来也一定能通过直感看出来,我倾向于用几何和力学描述自然(中学时中了《几何原本》和《自然哲学的数学原理》之毒) ,inflight 守恒算法的几何解释就有了: 这就是一个初等平面几何练习题,涉及一
阅读更多...
tcp inflight 守恒算法(tcp_ccr)
最初的算法: 在 winmax 中追踪 alpha rounds 的 bw / rtt,将其 bw 记为 b;在 winmin 中追踪 k*alpha rounds 的 rtt,记为 minrtt;保持 inflight = b * minrtt + beta。 后来我给 beta 增加了一个 rtt 缩放系数,主要是避免 rtt 膨胀,增加一个往回收缩的趋势: 保持 inflight =
阅读更多...