rfc-3390

Increasing TCP's Initial Window

M. Allman, S. Floyd, C. Partridge
date2002-11 streamIETF areawit wgtsvwg statusPROPOSED STANDARD pages15 canonicalhttps://www.rfc-editor.org/rfc/rfc3390 doi10.17487/RFC3390 errataview
This document specifies an optional standard for TCP to increase the permitted initial window from one segment to roughly 4K bytes, replacing RFC 2414. This document discusses the advantages and disadvantages of the higher initial window. The document includes discussion of experiments and simulations showing that the higher initial window does not lead to congestion collapse. Finally, the document provides guidance on implementation issues.

obsoletes

updates

Extracted elements (21)

design-rationale §5

Analysis of network-wide impact shows that increasing the initial window to 4K bytes does not create a danger of congestion collapse: duplicate retransmissions are bounded (at most one duplicate segment in the absence of SACK), and the segment drop rate increase is small for uncorrelated arrivals.

tcp, congestion

design-rationale §3

For connections transferring less than 4K bytes (many SMTP and HTTP transfers), the larger initial window reduces the data transfer time to a single RTT, which is the primary practical benefit driving this change.

tcp, congestion

design-rationale §3

For high-bandwidth, high-latency connections (e.g., satellite links), the larger initial window eliminates up to three RTTs and a delayed-ACK timeout during the initial slow-start phase.

tcp, congestion

design-rationale §4

In high-congestion environments with Drop Tail routers biased against bursts, a four-segment initial window may cause unnecessary retransmit timeouts that would not occur with a one-segment window, representing the primary individual-connection disadvantage.

tcp, congestion

design-rationale §1

The formula is set to roughly 4K bytes (three 1500-byte segments in the common case) as a balance: large enough to reduce RTTs for short transfers, small enough to avoid severe congestion harm. The 4380-byte middle range was chosen so that typical Ethernet-sized packets result in exactly three initial segments.

tcp, congestion

design-rationale §2

The larger initial window is explicitly not intended as encouragement for web browsers to open multiple simultaneous TCP connections with large windows, which works against TCP congestion control and increases unfairness; HTTP/1.1 persistent connections and pipelining are the recommended alternative.

tcp, congestion, http

design-rationale §3

When the initial window is one segment, a receiver using delayed ACKs must wait for a timeout (up to 200–500 ms) before generating an ACK. An initial window of at least two segments eliminates this wait, motivating the increase.

tcp, congestion

interoperability-note §7

Larger TCP initial windows do not dramatically increase network burstiness because TCP traffic is already bursty: delayed ACKs during congestion avoidance cause two-segment bursts, and during slow start cause three-segment bursts; four- and five-segment bursts from dropped ACKs are not rare.

tcp, congestion

interoperability-note §6

On low-bandwidth paths (e.g., 9.6 Kbps), the small SYN/SYN-ACK packets seed the RTO estimator with a low RTT, causing the initial RTO to fire before ACKs for the first large data window return, producing spurious timeouts. A larger initial window exacerbates this existing problem.

tcp, congestion

interoperability-note §2

When using larger initial windows with Path MTU Discovery, there are two options for the Don't Fragment (DF) bit: set it in all segments or only in one. Setting DF in the last segment of the initial window minimizes needless retransmits and duplicate ACKs triggering Fast Retransmit when the initial segment size is too large.

tcp, congestion, ip

normative-requirement §1 MAY

A TCP MAY set the restart window (used after a long idle period) to the minimum of the initial window value and the current cwnd; using a larger restart window MUST NOT increase the size of cwnd.

tcp, congestion

normative-requirement §1 MUST

If the SYN or SYN/ACK is lost, the initial window used by a sender after a correctly transmitted SYN MUST be one segment consisting of MSS bytes.

tcp, congestion

normative-requirement §6 RECOMMENDED

It is RECOMMENDED that TCP refrain from sampling the RTT during the three-way handshake, keeping the default RTO in place until an RTT sample involving a data packet is taken, to avoid spurious retransmit timeouts on low-bandwidth paths.

tcp, congestion

normative-requirement §6 RECOMMENDED

It is RECOMMENDED that TCPs use limited transmit [RFC3042] to aid recovery from loss via fast retransmit rather than the RTO timer during the initial window of data transmission.

tcp, congestion

normative-requirement §1 MAY

TCP's initial congestion window MUST NOT exceed min(4*MSS, max(2*MSS, 4380 bytes)). Equivalently: if MSS<=1095 then cwnd<=4*MSS; if 1095<MSS<2190 then cwnd<=4380; if MSS>=2190 then cwnd<=2*MSS.

tcp, congestion

normative-requirement §1 MUST

The loss window (used after a retransmit timeout) must remain 1 segment of MSS bytes to permit the lowest possible window size in severe congestion. This change does NOT alter the loss window.

tcp, congestion

normative-requirement §2 SHOULD

When larger initial windows are used with Path MTU Discovery and the MSS is found to be too large, cwnd SHOULD be reduced by the ratio of the old segment size to the new segment size to prevent large bursts of smaller segments.

tcp, congestion

protocol-element §1

TCP uses slow start in three distinct contexts: (1) initial window for new connections, (2) restart window after a long idle period, and (3) loss window after a retransmit timeout. This RFC modifies only the initial window.

tcp, congestion

protocol-element §1

The increased initial window applies only to the first round-trip time of data transmission following the TCP three-way handshake. Neither the SYN/ACK nor its ACK should increase the initial window size above the formula in equation (1).

tcp, congestion

protocol-element §1

With a common 1500-byte packet (MSS=1460 bytes), the formula min(4*MSS, max(2*MSS, 4380 bytes)) yields an initial window of 4380 bytes, permitting three segments initially.

tcp, congestion

security-consideration §9

Changing the initial congestion window from one or two segments to the new upper bound does not raise any known new security issues with TCP.

tcp, security