旧事重提,今天用微分方程的数值解观测 tcp aimd 窗口值。
设系统 AI,MD 参数分别为 a = 1,b = 0.5,丢包率由 buffer 大小,red 配置以及线路误码率共同决定,设为 p,窗口为 W,则有:
d W d t = ( 1 − p ) ∗ a W − p ∗ b ∗ W \dfrac{dW}{dt}=(1-p)*\dfrac{a}{W}-p*b*W dtdW=(1−p)∗Wa−p∗b∗W
方程第一项为 AI,第二项为 MD。若窗口收敛到稳定点,则 dW / dt = 0,于是:
( 1 − p ) ∗ a W = p ∗ b ∗ W (1-p)*\dfrac{a}{W}=p*b*W (1−p)∗Wa=p∗b∗W
解得:
W = 1 − p 0.5 ∗ p W=\sqrt{\dfrac{1-p}{0.5*p}} W=0.5∗p1−p
这就是结果,尝试获得微分方程的解析解也无妨。如果用数值解验证一下,递推式为:
# 不同丢包率(2 倍关系)的 cwnd
x[n] = x[n-1] + dt * ((1-c)*a/x[n-1] - c*b*x[n-1])
y[n] = y[n-1] + dt * ((1-2*c)*a/y[n-1] - 2*c*b*y[n-1])
结果如下:
这就是 tcp aimd 的 cwnd 与丢包率的关系方程。
浙江温州皮鞋湿,下雨进水不会胖。