原文 https://datatracker.ietf.org/doc/html/rfc3390 Increasing TCP's Initial Window 增加TCP初始窗口
本文档为 TCP 指定了一个可选标准,将允许的初始窗口从一个或两个段增加到大约 4K 字节,以取代 RFC 2414。它讨论了更高初始窗口的优缺点,并包括对实验和模拟的讨论表明较高的初始窗口不会导致拥塞崩溃。最后,本文提供了有关实施问题的指导。
1.TCP修改
本文档废弃 [RFC2414] 并更新 [RFC2581],并规定将 TCP 初始窗口的允许上限从一个或两个段增加到两个到四个段之间。在大多数情况下,此更改导致初始窗口的上限约为 4K 字节(尽管给定大段大小,两个段的允许初始窗口可能明显大于 4K 字节)。
初始窗口的上限在
(1):
最小(4*MSS,最大(2*MSS,4380 字节))(1)
注意:发送 1500 字节的数据包表示最大分段大小 (MSS) 为 1460 字节(假设没有 IP 或 TCP 选项)。因此,在使用 1500 字节数据包的常见情况下,将初始窗口的 MSS 限制为 4380 字节允许发送方最初传输三个段。
等效地,初始窗口大小的上限基于 MSS,如下所示:
这个增加的初始窗口是可选的:TCP 可以从更大的初始窗口开始。然而,我们预计大多数通用 TCP 实现会选择使用上面等式 (1) 中给出的更大的初始拥塞窗口。
这个初始窗口大小的上限代表了 RFC 2581 [RFC2581] 的变化,它指定拥塞窗口被初始化为一个或两个段。
此更改适用于 TCP 三次握手后数据传输的第一个往返时间 (RTT) 中的连接初始窗口。三次握手中的 SYN/ACK 及其确认 (ACK) 都不应该将初始窗口大小增加到高于等式 (1) 中概述的大小。如果 SYN 或 SYN/ACK 丢失,则在正确传输 SYN 之后发送方使用的初始窗口必须是由 MSS 字节组成的一个段。
TCP 实现以三种不同的方式使用慢启动: (1) 启动一个新连接(初始窗口); (2) 长时间空闲后重新开始传输(重新启动窗口); (3) 在重传超时(丢失窗口)后重新开始传输。本文档中指定的更改会影响初始窗口的值。可选地,TCP 可以将重启窗口设置为用于初始窗口的值和 cwnd 的当前值中的最小值(换句话说,对重启窗口使用更大的值不应增加 cwnd 的大小)。这些更改不会更改丢失窗口,丢失窗口必须保留 1 个 MSS 字节段(以在严重拥塞的情况下允许最小的窗口大小)。
2. 实施问题
当更大的初始窗口与路径 MTU 发现 [RFC