POWERTCP[1]的拥塞窗口控制规则是从FAST TCP[2]发展来的,有一些不错的理论分析。
本博客涉及的公式,来自不同的论文,在不同的语境下,相同的符号含义不同。
根据论文[2]的分析,AIMD的拥塞窗口的动态变化,可以总结为:
w
˙
(
t
)
=
k
i
(
t
)
(
1
−
q
i
(
t
)
u
i
(
t
)
)
(1)
\dot w(t)=k_{i}(t)(1-\frac{q_i(t)}{u_{i}(t)})\tag{1}
w˙(t)=ki(t)(1−ui(t)qi(t))(1)
quantity | analogy |
---|---|
Total transmission rate (network flow) | Current ( λ \lambda λ) |
BDP+buffered bytes (network effort) | Voltage(V) |
Current × \times ×Voltage | Power( Γ \Gamma Γ) |
PowerTCP就是一种基于功率的拥塞控制算法,定义
Γ
\Gamma
Γ函数作为网络拥塞信号。
f
(
t
)
=
Γ
(
t
)
⏟
Power
=
(
q
+
B
×
τ
)
⏟
Voltage
×
λ
⏟
Current
(10)
f(t)=\underbrace{\Gamma(t)}_{\text{Power}}= \underbrace{(q+B\times \tau)}_{\text{Voltage}}\times \underbrace{\lambda}_{\text{Current}}\tag{10}
f(t)=Power
Γ(t)=Voltage
(q+B×τ)×Current
λ(10)
symbol | meaning |
---|---|
λ \lambda λ | 网络数据流速率和 |
B B B | 网络瓶颈链路容量 |
τ \tau τ | 链路往返传播时延 |
q q q | 网络缓冲区占用长度 |
算法定义
e
=
B
2
τ
e=B^2\tau
e=B2τ。PowerTCP定义的拥塞信号需要网络路由设备反馈信息,是一种应用于数据中心的拥塞控制算法。而其扩展版本
θ
−
P
o
w
e
r
T
C
P
\theta{-}PowerTCP
θ−PowerTCP可以不依赖这些信息。
e
f
=
B
2
τ
(
q
+
B
×
τ
)
×
(
q
˙
+
B
)
=
τ
(
q
/
B
+
τ
)
×
(
q
˙
/
B
+
1
)
(11)
\frac{e}{f}=\frac{B^2\tau}{(q+B\times \tau)\times(\dot q+B)}=\frac{\tau}{(q/B+\tau)\times(\dot q/B+1)}\tag{11}
fe=(q+B×τ)×(q˙+B)B2τ=(q/B+τ)×(q˙/B+1)τ(11)
其中,
R
T
T
(
t
)
=
q
(
t
)
B
+
τ
RTT(t)=\frac{q(t)}{B}+\tau
RTT(t)=Bq(t)+τ,对其求导,可得
R
˙
T
T
(
t
)
=
q
˙
(
t
)
B
\dot RTT(t)=\frac{\dot q(t)}{B}
R˙TT(t)=Bq˙(t)。RTT和RTT的梯度可以在终端侧估计。
效果如何?我没有做仿真实验,不做评价。
Reference
[1] POWERTCP: Pushing the Performance Limits of Datacenter Networks
[2] FAST TCP: motivation, architecture, algorithms, performance
[3] AIMD吞吐量公式的推导
[4] tcp拥塞控制vegas的数学分析
[5] 漫谈TCP Vegas如何收敛到公平
[6] HPCC: high precision congestion control
[7] TIMELY: RTT-based Congestion Control for the Datacenter