传统TCP(Reno)拥塞响应函数

TCP拥塞响应函数指吞吐与丢包率之间的一个关系,传统Reno-TCP执行以下两个操作:1)将丢包视为网络发生了拥塞,将拥塞窗口降低一半;2)在拥塞避免阶段,每个RTT周期,拥塞窗口增加1。以上两者决定了在丢包率和平均吞吐之间形成了一个简单的关系,这里的丢包率和吞吐都是指的一个稳定的状态值,不考虑丢包率急剧变化的情况。

由于现实中传统TCP实现的一些具体情况,导致其对拥塞的反应比理论上要缓慢,例如较长的超时时间、SlowStart恢复算法、发送窗口限制以及延时ACK等,都将导致实际的窗口增长相比理论上要慢,所以,这里给出的是拥塞窗口的一个上限值。

以下假设在这样一个TCP(稳定的丢包率)模型中,拥塞窗口增长到一定值W时,发生拥塞,假定丢失了一个报文,并且,在增长到W值之前没有发生过丢包。按照以上的介绍,传统TCP发生丢包之后,TCP发送端将拥塞窗口减少一半(W/2),之后,每个RTT周期拥塞窗口加1(W/2 + 1),一直到再次增加到之前丢包时的窗口值W。TCP发送端至少需要发送如下的报文量:

W 2 + ( W 2 + 1 ) + . . . + W ≈ 3 8 W 2 (1) \tag{1} \frac{W}{2} + \left( \frac{W}{2} + 1 \right) + ... + W ≈ \frac{3}{8}W^{\smash{2}} 2W+(2W+1)+...+W83W2(1)

并且,要想恢复到窗口值W,在发送以上数量的报文时,不能发生丢包,即丢包率不能高于以上值的倒数(丢包率p上限):

p ≤ 8 3 W 2 (2) \tag{2} p \le \frac{8}{3W^{2}} p3W28(2)

由 (2)可得:

W ≤ 8 3 p (3) \tag{3} W \le \sqrt{\frac{8}{3p}} W3p8 (3)

以上公式 (3)给出了在一个稳定的丢包率为p的网络中,传统TCP所能达到的最大拥塞窗口W。那么,此段时间内的平均窗口大小为:

W ≤ 4 3 p (4) \tag{4} W \le \sqrt{\frac{4}{3p}} W3p4 (4)

取近似值,得到如下的传统TCP响应函数:

W ≤ 1.2 p (5) \tag{5} W \le \frac{1.2}{\sqrt{p}} Wp 1.2(5)

公式5给出了平均拥塞窗口值w(单位是MSS大小的报文数量),与丢包率p的关系。如下表所示,列举了一些典型值。

丢包率p拥塞窗口WRTTs Between Losses
10^-2128
10^-33825
10^-412080
10^-5379252
10^-61200800
10^-737952530
10^-8120008000
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页