AIMD:发送的数据包总数

网络工程 拥塞
2021-07-17 05:39:37

在回答伟大的计算机网络导论(Stanford Lagunita)的测验 4-3 时,我发现自己无法解释其中一个问题的答案:

考虑由传输协议以 1 kB 数据包传输的长流,该传输协议(仅)使用 AIMD 来控制窗口大小。最初,窗口大小为 10 kB。每次窗口打开到 20 kB 时,窗口中的最后一个数据包都会被丢弃,恰好在一个往返时间后检测到并重新传输。

Q1:有多少数据包被发送到(包括第一个被丢弃的数据包)?

Q2:总共发送了多少个数据包,包括被丢弃的第二个数据包?提示:第二轮将相同。不要忘记重传的数据包。

答案:

Q1:可以立即发送10个数据包。当 10 个被确认时,将发送 11 个数据包,然后是 12 个,然后是 13 个,……。直到发送了 20 个数据包,其中一个被丢弃。即 Sum (10 to 20) = 100 + 10 + sum (1..10) = 165 个数据包。

Q2:丢包后窗口再次减半为10kB,重新开始,发送相同数量的数据包加上重传的数据包。即 165 + 165 = 330 个数据包。(注意:之前提到的答案是 331,这是不正确的。)

虽然 Q1 的答案对我来说似乎完全合乎逻辑,但 Q2 的情况并非如此。我的猜测是 331,因为前 165 个数据包发送,然后重传,然后是下一批 165 个数据包。

331在哪方面是错的?重传是否集成到下一批数据包中?

2个回答

是的,重传被整合到下一批数据包中。例如:

  1. RTT 1:数据包 1
  2. RTT 2:数据包 2、3
  3. RTT 3:数据包 4、5、6 (X:数据包 6 被丢弃
  4. RTT 4:数据包 6 <--数据包重发,因为它在上一轮丢弃
  5. RTT 5:数据包 7、8
  6. 等等等等...

这个可视化应该可以帮助你理解为什么第一轮和第二轮发送的数据包数量是相同的:

TCP 拥塞性能

来源:http : //www.potaroo.net/ispcol/2005-06/faster.html

重新传输的丢弃数据包成为第二批的一部分 - 它不会单独重新传输。