RFC 1110 HISTORIC TCP · WINDOW · NETWORKING

TCP Big Window Problem: Problem with the TCP big window option

Why TCP cannot safely enlarge its transmission window without more sequence numbers.

On rfc-editor.org ↗
PUBLISHED
August 1989
AUTHORS
A.M. McKenzie
STREAM
Legacy
OBSOLETED BY
RFC 6247 — TCP ext. to Historic
SEQUENCE NUMBER FIELD
32 bits
BIG WINDOW PROPOSAL
30 bits
ORIGINAL WINDOW FIELD
16 bits
DOI
10.17487/RFC1110

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                        A. McKenzie
Request for Comments: 1110                                       BBN STC
                                                             August 1989


                A Problem with the TCP Big Window Option

Status of this Memo

   This memo comments on the TCP Big Window option described in RFC
   1106.  Distribution of this memo is unlimited.

Abstract

   The TCP Big Window option discussed in RFC 1106 will not work
   properly in an Internet environment which has both a high bandwidth *
   delay product and the possibility of disordering and duplicating
   packets.  In such networks, the window size must not be increased
   without a similar increase in the sequence number space.  Therefore,
   a different approach to big windows should be taken in the Internet.

Discussion

   TCP was designed to work in a packet store-and-forward environment
   characterized by the possibility of packet loss, packet disordering,
   and packet duplication.  Packet loss can occur, for example, by a
   congested network element discarding a packet.  Packet disordering
   can occur, for example, by packets of a TCP connection being
   arbitrarily transmitted partially over a low bandwidth terrestrial
   path and partially over a high bandwidth satellite path.  Packet
   duplication can occur, for example, when two directly-connected
   network elements use a reliable link protocol and the link goes down
   after the receiver correctly receives a packet but before the
   transmitter receives an acknowledgement for the packet; the
   transmitter and receiver now each take responsibility for attempting
   to deliver the same packet to its ultimate destination.

   TCP has the task of recreating at the destination an exact copy of
   the data stream generated at the source, in the same order and with
   no gaps or duplicates.  The mechanism used to accomplish this task is
   to assign a "unique" sequence number to each byte of data at its
   source, and to sort the bytes at the destination according to the
   sequence number.  The sorting operation corrects any disordering.  An
   acknowledgement, timeout, and retransmission scheme corrects for data
   loss.  The uniqueness of the sequence number corrects for data
   duplication.

   As a practical matter, however, the sequence number is not unique; it
   is contained in a 32-bit field and therefore "wraps around" after the
   transmission of 2**32 bytes of data.  Two additional mechanisms are
   used to insure the effective uniqueness of sequence numbers; these
   are the TCP transmission window and bounds on packet lifetime within
   the Internet, including the IP Time-to-Live (TTL).  The transmission
   window specifies the maximum number of bytes which may be sent by the
   source in one source-destination roundtrip time.  Since the TCP
   transmission window is specified by 16 bits, which is 1/65536 of the
   sequence number space, a sequence number will not be reused (used to
   number another byte) for 65,536 roundtrip times.  So long as the
   combination of gateway action on the IP TTL and holding times within
   the individual networks which interconnect the gateways do not allow
   a packet's lifetime to exceed 65,536 roundtrip times, each sequence
   number is effectively unique.  It was believed by the TCP designers
   that the networks and gateways forming the internet would meet this
   constraint, and such has been the case.

   The proposed TCP Big Window option, as described in RFC 1106, expands
   the size of the window specification to 30 bits, while leaving the
   sequence number space unchanged.  Thus, a sequence number can be
   reused after 4 roundtrip times.  Further, the Nak option allows a
   packet to be retransmitted (i.e., potentially duplicated) by the
   source after only one roundtrip time.  Thus, if a packet becomes
   "lost" in the Internet for only about 5 roundtrip times it may be
   delivered when its sequence number again lies within the window,
   albeit a later cycle of the window.  In this case, TCP will not
   necessarily recreate at the destination an exact copy of the data
   stream generated at the source; it may replace some data with earlier
   data.

   Of course, the problem described above results from the storage of
   the "lost" packet within the net, and its subsequent out-of-order
   delivery.  RFC 1106 seems to describe use of the proposed options in
   an isolated satellite network.  We may hypothesize that this network
   is memoryless, and thus cannot deliver packets out of order; it
   either delivers a packet in order or loses it.  If this is the case,
   then there is no problem with the proposed options.  The Internet,
   however, can deliver packets out of order, and this will likely
   continue to be true even if gigabit links become part of the
   Internet.  Therefore, the approach described in RFC 1106 cannot be
   adopted for general Internet use.

Author's Address

   Alex McKenzie
   Bolt Beranek and Newman Inc.
   10 Moulton Street
   Cambridge, MA 02238

   Phone: (617) 873-2962

   EMail: MCKENZIE@BBN.COM

ISO Plain Language

On this page
PROBLEMThe TCP Big Window proposal expands the window to 30 bits while leaving the sequence number space unchanged, which can make delayed old packets look current.
MECHANISMRFC 1110 explains that packet loss, reordering, and duplication can make a packet return after its sequence number has been reused within the enlarged window.
WHY IT FAILEDRFC 1110 is Historic and was obsoleted by RFC 6247. It concludes that the RFC 1106 approach cannot be used for general Internet traffic.

§1What Sequence Numbers Protect

TCP assigns sequence numbers to bytes so the receiver can put data in order. Acknowledgments, timeouts, and retransmissions address loss, while the sequence numbers help distinguish duplicate data. The sequence number is a 32-bit field and wraps after transmission of 2^32 bytes.

The transmission window and limits on packet lifetime help keep a reused number from being mistaken for an old byte. The window field is 16 bits in the design discussed by the memo.

TCP numbers data so the receiver can restore the original order and spot duplicates. Those numbers eventually wrap around, so the window and packet lifetime matter too.

§1How a Big Window Can Reuse Numbers Too Soon

The TCP Big Window option described in RFC 1106 expands the window specification to 30 bits but leaves the sequence number space unchanged. RFC 1110 says this means a sequence number can be reused after 4 round-trip times. The NAK option can cause retransmission after one round-trip time.

If a packet remains delayed in the network for about 5 round-trip times, it may arrive when the same sequence number is inside a later window. TCP may then accept the earlier data as new and fail to recreate the original data stream. The memo says this concern depends on packet reordering and duplication, which can occur in the Internet.

If the window grows but the number space does not, TCP can reuse a number while an old packet is still delayed. That old packet can then be mistaken for new data.

§1Why the Proposal Was Not General

RFC 1110 notes that RFC 1106 may describe an isolated satellite network where packets arrive in order or are lost, without arriving later out of order. Under that assumption, the problem would not occur. The memo concludes that the approach cannot be adopted for general Internet use, where packets can be delivered out of order.

Its stated design conclusion is that the window must not be increased without a corresponding increase in the sequence number space.

The proposal might work in a network that never reorders packets. RFC 1110 says the Internet does reorder packets, so a larger window also needs a larger sequence number space.

§4References