TCP's Initial Congestion Window (ICW, IW or initcwnd)
The original version of TCP Congestion Control
specified that the congestion window should start at the maximum segment size
(MSS) of the connection, which is computed from the peer's MSS advertisement obtained during SYN handshake and possible results from Path MTU Discovery
Around the turn of the century, it was suggested that this initial congestion window be increased. This would particularly benefit short transactions such as "Web mice" over connections with high RTT
s. In September 1998, RFC 2414 suggested experimentation with an initial window of 2-4 MSS, depending on the range of MSS. This was upgraded to a general recommendation with RFC 3390 in October 2002, and integrated (in slightly refined form) into the current congestion control specification in RFC 5681. The TBIT
paper, which used data from early 2004, still found little use of larger initial congestion windows, although it can be expected that this has become widespread by now. According to RFC 5681, the typical machine connected using ~1500-byte MTU links, should be three MSS or around 4300 bytes.
2010 - 2013: Proposals to Increase TCP's Initial Window
More recently, some have proposed to further increase TCP's initial window. In December 2010, there were four proposals being discussed in the IETF's TCPM
(Modifications to TCP) WG as well as the IRTF's ICCRG (Internet Congestion Control Research Group): A group of authors from Google, H.K. Jerry Chu, Nandita Dukkipati, Yuchung Cheng, and Matt Mathis, propose (
) to increase the initial window to 10 segments. They support this with analytical and experimental work that shows significant improvements in completion times for typical-sized web transfers with little harmful effects. The second proposal (
), by Mark Allman (ICSI), suggests to increase the initial window over time, starting with 6 segments in 2011 and increasing that to 15 segments by 2019. A third proposal (
), by Andrew Yourtchenko, Ali Begen, and Anantha Ramaiah (Cisco), suggests to negotiate the initial window between both parties of the TCP connection, similar to what is done for the Maximum Segment Size (MSS). Finally, Joe Touch issued a draft (
) that proposes to adapt the Initial Window over the long term based on slow additive increase, and multiplicative decrease when it is detected that the IW is too large. Most of these drafts have expired in the meantime.
In July 2011, Joe Touch issued
, which claims that TCP can objectively measure when an IW is too large, and that such feedback should be used over long timescales to adjust the IW automatically
. This was slightly revised
for the =-02 version
in January 2012.
The proposals to increase the Initial Window have come under criticism in the context of the BufferBloat
debate, because large initial windows from fast servers can create noticeable temporary congestion towards receivers behind slow connections, such as on mobile, especially when multiple connections simultaneously start sending data, as is common with in today's WWW. Recent versions of
(as of October 2012) attempt to take these concerns into account. Version -06 of the draft went to IETF Last Call
in November 2012, resulting in a slightly revised
, which adds some text about possible adverse effects (see BufferBloat
) and how those could be addressed.
In April 2013, RFC 6928
was issued as an Experimental
RFC based on draft-ietf-tcpm-initcwnd-08.txt.
In November 2015, Mark Allman published draft-allman-tcpm-no-initwin-00.txt, which suggests to remove initial window restrictions altogether, and allow the sender to send as many packets as it wants under certain conditions. In particular, if the initial cwnd chosen is larger than 10 segments, the packets must be evenly paced
over the first round-trip time.
- TCP Congestion Control, RFC 5681, M. Allman, V. Paxson, E. Blanton, September 2009
- Increasing TCP's Initial Window, RFC 6928, J. Chu, N. Dukkipati, Y. Cheng, M. Mathis, April 2013
- Increasing TCP's Initial Window, RFC 3390, M. Allman, S. Floyd, C. Partridge, October 2002
- Increasing TCP's Initial Window, RFC 2414, M. Allman, S. Floyd, C. Partridge, September 1998
- message to ICCRG mailing list, N. Dukkipati, 23 July 2010. Contains pointer to Internet-Draft and slide presentation with measurements using different initial window sizes done at Google.
- another message to ICCRG mailing list, M. Scharf, 23 July 2010. Contains pointer to slides of the author with different large-IW measurements.
- draft-nishida-tcpm-maxwin-01, Increasing Maximum Window Size of TCP, Yoshifumi Nishida, Hirochika Asai, October 2015
- IETF 78 Proceedings: IRRG meeting, July 2010. This contains slides to Matt Mathis' presentation on the IW=10 proposal, as well as some other materials and minutes
- IETF 79 Proceedings: tcpm WG meeting, November 2010 (to appear). minutes, slides: IW10 vs. IW3 testbed study, Effect of IW and RTO changes
- draft-allman-tcpm-no-initwin-00, Removing TCP's Initial Congestion Window, Mark Allman, November 2015
- 2010-07-28 - 2015-11-24