TCP快速恢复阶段“人工充气”和“放气”的概念难以理解

网络工程 tcp 射频 拥塞
2022-03-02 12:34:19

我正在阅读 KuroseRossComputer Networking- A Top-Down Approach文本,在那里我发现了 TCP 拥塞控制 FSM 的微妙之处,如下所示:

TCP 拥塞控制 FSM

主要是我很难理解到快速恢复状态的转换。

我无法理解快速恢复状态的操作。具体来说,Forouzan文本说:

大多数 TCP 实现有两种反应:

  1. 如果发生超时,则拥塞的可能性更大;一个段可能已经在网络中被丢弃,并且没有关于已发送段的消息。在这种情况下,TCP 反应强烈:

    一种。它将阈值设置为当前窗口大小的二分之一。

    湾。它将 cwnd 设置为一个段的大小。

    C。它再次开始慢启动阶段。

  2. 如果接收到三个ACK,则拥塞的可能性较小;一个段可能已经被丢弃,但之后的一些段可能已经安全到达,因为收到了三个 ACK​​。这称为快速传输和快速恢复在这种情况下,TCP 的反应较弱:

    一种。它将阈值设置为当前窗口大小的二分之一。

    湾。它将 cwnd 设置为阈值(一些实现将三段大小添加到阈值)。

    C。它开始拥塞避免阶段。

Forouzan文本中,没有这样的过渡到快速恢复状态。但是在黑濑这里有这样一种状态,并且有一条弧线标记为:

标签

我不太了解他的工作。我的意思是当3发送方收到重复确认时,它进入快速恢复状态,第 4 次重复确认是什么?是否是丢失数据包之后的第4个有序数据包发送的,服务器正确接收到的数据包?

我看到 Kurose 使用RFC 2581我浏览了对应于 TCP 拥塞控制的RFC 2581 。我只是计算机网络领域的新手,因为很多事情(可能相当直观或微不足道)对我来说是未知的。问题是RFC 2581以与黑濑文本相同的方式描述事物(大部分)。除了黑濑用 FSM 解释它,而 RFC 以段落形式编写(虽然没有区别)。但是,我遇到问题的细微之处仍未得到解答。如果有人为我提供了一个数字示例,那么它将帮助我理解其中的微妙之处。在快速恢复阶段,RFC 确实在讨论:如果新值允许,则传输一个段cwnd和接收者的广告窗口。它还谈到了快速恢复阶段artificially inflatingcwnd以及deflating它们,但没有数字说明,我不太明白。甚至黑濑也使用这些术语,但遗憾的是没有提供插图。

RFC 2581讨论了用于说明的参考,但该参考包含超出我理解水平的示例/插图(它们太难了)。我看到的原始RFC 793更容易,Forouzan 的文本松散地基于RFC 2581并且主要是RFC 793谁能在快速恢复阶段向我提供一个说明inflatingdeflating(特别是它在数值问题中的工作方式)?

1个回答

要了解通货膨胀/通货紧缩,cwnd需要了解基于窗口的协议中的发送者如何选择要发送的段。在这里可以找到一个很好的说明为了完整起见,这是参考中的数字。

在此处输入图像描述

这是我试图解释这个数字在快速恢复中是如何工作的。请注意,我已经在相反的方向绘制了图形!SND.UNA 在左边,SND.WND 向右增长

这是 TCP 收到 3 个双包后发生的情况。

在此处输入图像描述

但是,由于收到了 3 个 dupack,我们知道有 3 个段已经离开网络,因此原则上可以发送 3 个新段。

快速恢复假设只有第一段丢失。所以它不会重新传输窗口中的其他段。但是,由于窗口不能移动,所以也不能发送新的段。

为了发送新的段,需要增加窗口。它需要临时增加,即在快速恢复结束后,这种增加被恢复。为此,我们只需将 CWND 增加我们要发送的新段数。这就是“ inflating ”的意思,smart word基本上代表暂时的。

在此处输入图像描述

当我们处于快速恢复中时,可能会到达原始窗口中更多段的更多 ACK。由于第一个丢失了,它们将是确认最后收到的相同段的重复包。这些 dupack 将导致 cwnd 进一步“膨胀”,即 window 将增加收到的 dupack 数量。

这是在重传段的 ack 到达之前发生的事情。

在此处输入图像描述

当 ACK 到达时,由于它确认了重传段,以及它之后的所有接收段,窗口将移动。应恢复 cwnd 的临时增加,因此将 cwnd 设置回进入快速恢复之前的原始值。这就是“放气”的意思。

在此 TCP 将 sstresh 设置为 cwnd/2 之后,将 cwnd 设置为 sstresh 并开始拥塞避免。

注意:真正的 cwnd 是字节,而不是段,所以数字是简化的。

还要注意:快速恢复(如果丢失一个段)需要一个 RTT 完成:它在 3 个 dupack 到达时开始,然后重新传输丢失的段并 ACKed,这需要一个 RTT,当 ACK 到达时,快速恢复结束。您不会在大多数拥塞窗口演变图上看到快速恢复。