Switch-Router

TCP拥塞控制之Hybla

Published at 2021-10-08 | Last Update 2021-10-08

Hybla是为了改善大RTT的连接的传输性能所设计出的拥塞控制算法。

经典拥塞控制算法与RTT的关系

经典的拥塞控制算法包含慢启动(Slow Start)和拥塞避免(Congestion Avoidance)两个阶段。两个阶段更新拥塞窗口时采用不同的规则:

上式中$W_i$表示收到第$i$个ACK后的拥塞窗口大小。如果将该公式转换到时间尺度上的话,可以看出:在SS阶段,拥塞窗口呈指数增长,而在CA阶段,拥塞窗口呈线性增长。

上式中其中$W(t)$表示在时刻t的拥塞窗口大小,$t_\gamma$表达到达慢启动阈值$\gamma$的时间,$t_\gamma = RTT\log_2\gamma$。可以看出,$RTT$越大,拥塞窗口增加地越慢,到达慢启动阈值的时间也越长。

有了 $W(t)$ ,我们可以计算出报文的瞬时传输速率

对其进行定积分,就可以得到在这个过程中的数据传输总量:

可以看出$T_d(t)$与$RTT$呈负相关关系,也就是$RTT$越大,拥塞控制时传输的总数据量越小。

Hybla拥塞控制算法

Hybla拥塞控制算法的目标就是为了解决连接的传输延时很大时,传输性能太低的问题。举个栗子,假设一条高延时(high latency)连接与低延时(low latency)连接竞争网络容量,当出现拥塞丢包时,由上面的公式,低延时连接能比高延时连接更快地恢复拥塞窗口$W$,最终抢占更多的网络传输资源。

Hybla定义一个了往返时间为$RTT0$的参考链路(reference link),用p表示真实链路与参考链路的往返时间之比:

从数学角度,Hybla的终极目标是使得$T_d(t)$的表达式中不包含$RTT$,这要求其瞬时传输速率$B(t)$也不包含$RTT$,这要求$W(t)$能抵消掉分母的$RTT$,因此,Hybla将时域上拥塞窗口变化定义为

其中上标$H$表示Hybla.这样一来,瞬时传输速率

它与$RTT$就无关了,进而传输的总报文数量也就与$RTT$无关了

反过来,为了得到这样的$W^H(t)$, 我们需要修改拥塞窗口的更新规则

也就是说,每当发送端收到按序到达的不重复的ACK时,在SS阶段,需要将拥塞窗口增大$2^{\rho}-1$个MSS,在CA阶段,增大$\frac{\rho^2}{W^H_i}$个MSS。

REF

TCP synchronisation effect in TCP New Reno and TCP Hybla TCP Hybla: a TCP enhancement for heterogeneous networks