介绍
TCP-Jersey拥塞控制算法在中文世界里的描述非常的少,有点好奇信号和丢包共同控制的算法是怎样的,就翻译了这篇论文,链接在最后。
传统TCP拥塞控制
传统TCP的拥塞控制算法是使用拥塞控制窗口来实现的,TCP发送端在发送时除了要兼容接收端的接收窗口,自己这边的发送窗口,还需要考虑拥塞控制窗口。在发送时,取min(w_{r}, w_{s}, w_c)
,其中w_r
是接收窗口,w_s
是发送窗口,w_c
是拥塞窗口。
发生丢包事件时,拥塞控制窗口的长度会缩小到一半,然后线性增加逐步增加,即加性增,乘性减(AIMD),这样的设计维护了网络的相对公平和稳定,但是在当今的环境下,移动网络占了互联网流量的很大一部分,移动网络有一个特点就是存在一定的信道丢包,即在发送消息时,本身可能因为信号和干扰的原因,导致发送失败。
在传统TCP拥塞控制算法里会认为这次丢包是发生了拥塞,进而会缩小拥塞窗口,进而降低TCP的发送速度,但实际情况只是发生了一次丢包,而并没有拥塞。
TCP-Jersey拥塞控制算法
这个算法的设计初衷是为了提高无线网络以及无线-有线混合网络通信的传输速度,TCP主要慢的原因是无法区分网络拥塞和无线链接原因的丢包。本协议具有区分这两者的能力,TCP-Jersey包含两个关键部分,可用带宽估计(ABE)算法和拥塞警告(CW)路由配置。
ABE是一个在发送端持续估计连接的可用带宽,并且在发生拥塞时指导传输速率的算法。
CW是一个在有迹象发生网络拥塞时,在终端警告的网络路由的配置。CW网络配置对封包进行的标记,可以帮助TCP连接的发送方区分丢包是网络拥塞导致的还是无线链路有问题导致的。
对比
在NS-2网络模拟中,当无线网络拥有1%的丢包率,无拥塞的情况下,TCP-Jersey对比TCP-Westwood和TCP-Reno,吞吐量分别提升了17%和85%。
在发生拥塞,丢包率为1%的无线网络中,TCP-Jersey对比TCP-Westwood和TCP-Reno,吞吐量分别提升了9%和76%。
TCP-Jersey
本协议的目标就是将丢包的原因细化,从由拥塞导致的丢包和无线网传输导致的丢包区分开。
A.可用带宽预估(ABE)
传统TCP是通过增大窗口,直到发生丢包来判断可用带宽大小。
TCP-Westwood协议提出了一个有效的办法,在当发送端在t_k
时刻收到ACK,记录带宽的采样为:
b_k=\frac{d_k}{t_k-t_{k-1}}
其中d_k
是ACK确认的数据长度,t_{k-1}
是前一个ACK收到的时间。然后再使用Tustin双线性方法近似计算低通滤波,公式如下:
\hat {b_{k}}=\frac{\frac{2\tau}{t_k-t_{t-1}} - 1}{\frac{2\tau}{t_k+t_{t-1}}+1} \hat b_{k-1}+\frac{b_k+b_{k-1}}{\frac{2\tau}{t_k-t_{k-1}}+1}
其中\hat b_k
表示在t_k
时刻的平滑后的预估可用带宽,其中1/\tau
是低通频率的截止频率。此外,TCP-Westwood还是用了一个定时器,如果\tau/m(m>2)
时间内没有收到ACK则相当于收到了一个b_k = 0
的采样。同时受到三个重复的ACK时被TCP-Westwood判定为发生拥塞,将TCP拥塞控制中的ssthreshold设置为:
ssthresh=\frac{BWE\times RTT_{min}}{seg\_size}
其中BWE
就是预估的带宽,RTT_{min}
是TCP预估的最小往返延时,seg\_size
是分段大小(segment size,就是MSS中的SS)。如果cwnd>ssthresh
并且不在慢启动状态里,拥塞窗口cwnd
的被设置为ssthresh
,然后并没有明确的指导如何设置\tau
和m
。
这里TCP-Jersey采用了相同的估计最大可用带宽的方法:发送方通过观察ACK返回速度,但是采用了一个更加简单的预估。我们提出的方法是基于时间滑动窗口做预估的(TCP-Westwood使用的近似低通滤波器)。
TCP-Jersey通过监控收到ACK的速度来预估TCP连接的可用带宽,然后是用这个预估来优化拥塞窗口。我们在每个RTT计算一次最佳拥塞窗口,当CW通知需要减小窗口时,TCP-Jersey将cwnd
和ssthresh
设置为最佳拥塞窗口,ABE
的公式如下:
R_n=\frac{RTT/times R_{n-1}+L_n}{(t_n-t_{n-1})+RTT}
其中R_n
表示在t_n
时刻收到第n个ACK之后预估的带宽,t_{n-1}
表示前一个ACK到达时间,L_n
是第n个ACK确认的数据长度,RTT
是TCP估计的往返时间。最佳拥塞控制窗口(ownd
)公式如下:
ownd_n=\frac{RTT\times R_n}{seg\_size}
其中seg\_size
表示分段大小。
我们的模型有几个优点:
- 我们对带宽估计的计算很快
- 不需要配置参数;
- 同窗口滤波器一样,会随着时间衰减,适合非静态的带宽延迟网络,这是有线-无线混合网络的特性。
在文中的模拟里,TCP-Jersey的预估带宽对比TCP-Westwood的更加准确。
B.拥塞警报
现在的ECN协议会在平均队列长度在min_{th}
到max_{th}
之间会随机标记封包,路由器不仅会通知发送者发生了拥塞,并且会通过随机标记封包进而影响连接的拥塞控制窗口。
ECN信息的往返需要时间,而网络情况变化很快,尽管ECN提供了宝贵的信息,但是就在几乎所有的情况下此信息不够及时,使得发送方无法准确快速的应对网络状态变化。而且RED和ECN对参数设置都非常敏感,错误的参数会降低TCP的性能。因此我们提出了一种更简单的通知方案,即拥塞警告(CW),具有更少需要配置的参数,同样能给发送方提供敏感准确的拥塞状况。
我们建议当平均队列大于某个阈值时,路由器标记所有的封包,并由TCP的发送方来决定如何控制窗口策略。使用IP帧头中的CE位和TCP报头中的ECE和CWR位来传递拥塞信息。这样兼容自1990s时定制的这几个标志位的含义,可以和其他没有CW功能的路由器共同工作。
后面就不继续翻译了,主要的思路已经描述完了。