当数据包丢失时,TCP慢启动与拥塞避免

时间:2014-04-26 22:19:15

标签: algorithm networking tcp protocols

我最近在Congestion Avoidance and Control上阅读了1988年的论文,并努力将缓慢启动与拥塞避免区分开来。

但是,有一点我不明白,关于丢失数据包后哪种算法运行。

  • 根据论文和慢启动的Wikipedia's描述,它希望TCP在发生丢失事件后以大小为1的拥塞窗口开始。
  • 根据拥塞避免的AIMD算法,在丢包后,拥塞窗口应减半。

发生数据包丢失时,哪种算法优先?将cwnd设置为1还是设置为当前大小的一半?

1 个答案:

答案 0 :(得分:3)

显然答案在同一篇论文的附录B中,我之前已经跳过了。

组合算法实际上维护了两个状态变量,cwndssthresh

当由于数据包丢失而发生超时时,变量ssthresh设置为当前窗口大小的当前值的一半,cwnd设置为1,然后使用慢启动达到该阈值(为每个收到的ACK添加一个窗口)。

一旦达到阈值,cwnd将使用添加增加(每增加一个完整窗口增加一次)递增。