draft-ietf-tcpm-tcp-roadmap-03.txt   draft-ietf-tcpm-tcp-roadmap-04.txt 
Network Working Group M. Duke Network Working Group M. Duke
Internet-Draft Boeing Phantom Works Internet-Draft Boeing Phantom Works
Expires: October 28, 2005 R. Braden Expires: December 3, 2005 R. Braden
USC Information Sciences Institute USC Information Sciences Institute
W. Eddy W. Eddy
NASA GRC/Verizon FNS NASA GRC/Verizon FNS
E. Blanton E. Blanton
Purdue University Purdue University
April 26, 2005 June 1, 2005
A Roadmap for TCP Specification Documents A Roadmap for TCP Specification Documents
draft-ietf-tcpm-tcp-roadmap-03 draft-ietf-tcpm-tcp-roadmap-04
Status of this Memo Status of this Memo
This document is an Internet-Draft and is subject to all provisions By submitting this Internet-Draft, each author represents that any
of Section 3 of RFC 3667. By submitting this Internet-Draft, each applicable patent or other IPR claims of which he or she is aware
author represents that any applicable patent or other IPR claims of have been or will be disclosed, and any of which he or she becomes
which he or she is aware have been or will be disclosed, and any of aware will be disclosed, in accordance with Section 6 of BCP 79.
which he or she become aware will be disclosed, in accordance with
RFC 3668.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as other groups may also distribute working documents as Internet-
Internet-Drafts. Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on October 28, 2005. This Internet-Draft will expire on December 3, 2005.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2005). Copyright (C) The Internet Society (2005).
Abstract Abstract
This document contains a "roadmap" to the Requests for Comments (RFC) This document contains a "roadmap" to the Requests for Comments (RFC)
documents relating to the Internet's Transmission Control Protocol documents relating to the Internet's Transmission Control Protocol
(TCP). This roadmap provides a brief summary of the documents (TCP). This roadmap provides a brief summary of the documents
defining TCP and various TCP extensions that have accumulated in the defining TCP and various TCP extensions that have accumulated in the
RFC series. This serves as a guide and quick reference for both TCP RFC series. This serves as a guide and quick reference for both TCP
implementers and other parties who desire information contained in implementers and other parties who desire information contained in
the TCP-related RFCs. the TCP-related RFCs.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Basic Functionality . . . . . . . . . . . . . . . . . . . . 5 2. Basic Functionality . . . . . . . . . . . . . . . . . . . . 5
3. Standard Enhancements . . . . . . . . . . . . . . . . . . . 8 3. Standard Enhancements . . . . . . . . . . . . . . . . . . . 8
3.1 Congestion Control and Loss Recovery Extensions . . . . . 8 3.1 Congestion Control and Loss Recovery Extensions . . . . . 9
3.2 SACK-based Loss Recovery and Congestion Control . . . . . 10 3.2 SACK-based Loss Recovery and Congestion Control . . . . . 10
3.3 Dealing with Forged Segments . . . . . . . . . . . . . . . 10 3.3 Dealing with Forged Segments . . . . . . . . . . . . . . . 11
4. Experimental Extensions . . . . . . . . . . . . . . . . . . 12 4. Experimental Extensions . . . . . . . . . . . . . . . . . . 13
5. Historic Extensions . . . . . . . . . . . . . . . . . . . . 15 5. Historic Extensions . . . . . . . . . . . . . . . . . . . . 16
6. Support Documents . . . . . . . . . . . . . . . . . . . . . 17 6. Support Documents . . . . . . . . . . . . . . . . . . . . . 18
6.1 Foundational Works . . . . . . . . . . . . . . . . . . . . 17 6.1 Foundational Works . . . . . . . . . . . . . . . . . . . . 18
6.2 Difficult Network Environments . . . . . . . . . . . . . . 18 6.2 Difficult Network Environments . . . . . . . . . . . . . . 20
6.3 Implementation Advice . . . . . . . . . . . . . . . . . . 20 6.3 Implementation Advice . . . . . . . . . . . . . . . . . . 22
6.4 Management Information Bases . . . . . . . . . . . . . . . 22 6.4 Management Information Bases . . . . . . . . . . . . . . . 23
6.5 Tools and Tutorials . . . . . . . . . . . . . . . . . . . 23 6.5 Tools and Tutorials . . . . . . . . . . . . . . . . . . . 25
6.6 Case Studies . . . . . . . . . . . . . . . . . . . . . . . 24 6.6 Case Studies . . . . . . . . . . . . . . . . . . . . . . . 25
7. Undocumented TCP Features . . . . . . . . . . . . . . . . . 25 7. Undocumented TCP Features . . . . . . . . . . . . . . . . . 27
8. Security Considerations . . . . . . . . . . . . . . . . . . 27 8. Security Considerations . . . . . . . . . . . . . . . . . . 29
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 28 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . 30
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 31
10.1 Basic Functionality . . . . . . . . . . . . . . . . . . 29 11. Informative References . . . . . . . . . . . . . . . . . . . 32
10.2 Standard Enhancements . . . . . . . . . . . . . . . . . 29 11.1 Basic Functionality . . . . . . . . . . . . . . . . . . 32
10.3 Experimental Extensions . . . . . . . . . . . . . . . . 30 11.2 Standard Enhancements . . . . . . . . . . . . . . . . . 32
10.4 Historic Extensions . . . . . . . . . . . . . . . . . . 31 11.3 Experimental Extensions . . . . . . . . . . . . . . . . 33
10.5 Support Documents . . . . . . . . . . . . . . . . . . . 31 11.4 Historic Extensions . . . . . . . . . . . . . . . . . . 34
10.6 Informative References Outside the RFC Series . . . . . 34 11.5 Support Documents . . . . . . . . . . . . . . . . . . . 35
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 35 11.6 Informative References Outside the RFC Series . . . . . 37
Intellectual Property and Copyright Statements . . . . . . . 36 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 38
Intellectual Property and Copyright Statements . . . . . . . 40
1. Introduction 1. Introduction
A correct and efficient implementation of the Transmission Control A correct and efficient implementation of the Transmission Control
Protocol (TCP) is a critical part of the software of most Internet Protocol (TCP) is a critical part of the software of most Internet
hosts. As TCP has evolved over the years, many distinct documents hosts. As TCP has evolved over the years, many distinct documents
have become part of the accepted standard for TCP. At the same time, have become part of the accepted standard for TCP. At the same time,
a large number of more experimental modifications to TCP have also a large number of more experimental modifications to TCP have also
been published in the RFC series, along with informational notes, been published in the RFC series, along with informational notes,
case studies, and other advice. case studies, and other advice.
skipping to change at page 3, line 37 skipping to change at page 3, line 37
experimenter, or student should be aware of. Particular comments or experimenter, or student should be aware of. Particular comments or
broad categorizations that this document makes about individual broad categorizations that this document makes about individual
mechanisms and behaviors are not to be taken as definitive, nor mechanisms and behaviors are not to be taken as definitive, nor
should the content of this document alone influence implementation should the content of this document alone influence implementation
decisions. decisions.
This roadmap includes a brief description of the contents of each This roadmap includes a brief description of the contents of each
TCP-related RFC. In some cases, we simply supply the abstract or a TCP-related RFC. In some cases, we simply supply the abstract or a
key summary sentence from the text as a terse description. In key summary sentence from the text as a terse description. In
addition, a letter code after an RFC number indicates its category in addition, a letter code after an RFC number indicates its category in
the RFC series: the RFC series (see BCP 9 [RFC2026] for explanation of these
categories):
S - Standards Track (Proposed Standard, Draft Standard, or S - Standards Track (Proposed Standard, Draft Standard, or
Standard) Standard)
E - Experimental E - Experimental
B - Best Current Practice B - Best Current Practice
I - Informational I - Informational
Note that the category of an RFC does not necessarily reflect its Note that the category of an RFC does not necessarily reflect its
current relevance. For instance, RFC 2581 is nearly universally current relevance. For instance, RFC 2581 is nearly universally
deployed although it is only a Proposed Standard. Similarly, some deployed although it is only a Proposed Standard. Similarly, some
Informational RFCs contain significant technical proposals for Informational RFCs contain significant technical proposals for
changing TCP. changing TCP.
This roadmap is divided into four main sections. Section 2 lists the This roadmap is divided into four main sections. Section 2 lists the
RFCs that describe absolutely required TCP behaviors for proper RFCs that describe absolutely required TCP behaviors for proper
skipping to change at page 5, line 52 skipping to change at page 6, line 11
standards-conforming TCP implementations. Unlike a purely standards-conforming TCP implementations. Unlike a purely
informational "roadmap", this Applicability Statement is a informational "roadmap", this Applicability Statement is a
standards document, and gives formal rules for implementation. standards document, and gives formal rules for implementation.
RFC 2460 S: "Internet Protocol, Version 6 (IPv6) Specification RFC 2460 S: "Internet Protocol, Version 6 (IPv6) Specification
(December 1998) (December 1998)
This document [RFC2460] is of relevance to TCP because it defines This document [RFC2460] is of relevance to TCP because it defines
how the pseudo-header for TCP's checksum computation is derived, how the pseudo-header for TCP's checksum computation is derived,
when 128-bit IPv6 addresses are used instead of 32-bit IPv4 when 128-bit IPv6 addresses are used instead of 32-bit IPv4
addresses. addresses. Additionally, RFC 2675 describes TCP changes required
to support IPv6 jumbograms.
RFC 2581 S: "TCP Congestion Control" (April 1999) RFC 2581 S: "TCP Congestion Control" (April 1999)
Although RFC 793 did not contain any congestion control Although RFC 793 did not contain any congestion control
mechanisms, today congestion control is a required component of mechanisms, today congestion control is a required component of
TCP implementations. This document [RFC2581] defines the current TCP implementations. This document [RFC2581] defines the current
versions of Van Jacobson's congestion avoidance and control versions of Van Jacobson's congestion avoidance and control
mechanisms for TCP, based on his 1988 SIGCOMM paper [Jac88]. RFC mechanisms for TCP, based on his 1988 SIGCOMM paper [Jac88]. RFC
2001 was a conceptual precursor that was obsoleted by RFC 2581. 2001 was a conceptual precursor that was obsoleted by RFC 2581.
skipping to change at page 6, line 31 skipping to change at page 6, line 40
RFC 1122 mandates the implementation of a congestion control RFC 1122 mandates the implementation of a congestion control
mechanism, and RFC 2581 details the currently accepted mechanism. mechanism, and RFC 2581 details the currently accepted mechanism.
RFC 2581 differs slightly from the other documents listed in this RFC 2581 differs slightly from the other documents listed in this
section, as it does not affect the ability of two TCP endpoints to section, as it does not affect the ability of two TCP endpoints to
communicate; however, congestion control remains a critical communicate; however, congestion control remains a critical
component of any widely-deployed TCP implementation and is component of any widely-deployed TCP implementation and is
required for the avoidance of congestion collapse and to ensure required for the avoidance of congestion collapse and to ensure
fairness among competing flows. fairness among competing flows.
RFC 2675 S: "IPv6 Jumbograms" (August 1999)
IPv6's support for longer datagrams than were allowed in IPv4,
necessitated some changes to the way that TCP's MSS and Urgent
fields (both 16 bits) are treated. This document [RFC2675]
explains those changes. While it describes changes to basic
header semantics, these changes should only affect the use of very
large segments, such as IPv6 jumbograms, which are rarely used.
Supporting this document does not affect interoperability with
TCPs when using IPv4 or non-jumbogram IPv6.
RFC 2873 S: "TCP Processing of the IPv4 Precendence Field" (June RFC 2873 S: "TCP Processing of the IPv4 Precendence Field" (June
2000) 2000)
This document [RFC2873] removes from the TCP specification all This document [RFC2873] removes from the TCP specification all
processing of the precedence bits of the TOS byte of the IP processing of the precedence bits of the TOS byte of the IP
header. This resolves a conflict over the use of these bits header. This resolves a conflict over the use of these bits
between RFC 793 and Differentiated Services [RFC2474]. between RFC 793 and Differentiated Services [RFC2474].
RFC 2988 S: "Computing TCP's Retransmission Timer" (November 2000) RFC 2988 S: "Computing TCP's Retransmission Timer" (November 2000)
skipping to change at page 8, line 31 skipping to change at page 8, line 31
This document [RFC1323] defines TCP extensions for window scaling, This document [RFC1323] defines TCP extensions for window scaling,
timestamps, and protection against wrapped sequence numbers, for timestamps, and protection against wrapped sequence numbers, for
efficient and safe operation over paths with large bandwidth-delay efficient and safe operation over paths with large bandwidth-delay
products. These extensions are commonly found in currently-used products. These extensions are commonly found in currently-used
systems; however, they may require manual tuning and systems; however, they may require manual tuning and
configuration. One issue in this specification that is still configuration. One issue in this specification that is still
under discussion concerns a modification to the algorithm for under discussion concerns a modification to the algorithm for
estimating the mean RTT when timestamps are used. estimating the mean RTT when timestamps are used.
RFC 2675 S: "IPv6 Jumbograms" (August 1999)
IPv6 supports longer datagrams than were allowed in IPv4. These
are known as Jumbograms, and use with TCP has necessitated changes
to the handling of TCP's MSS and Urgent fields (both 16 bits).
This document [RFC2675] explains those changes. While it
describes changes to basic header semantics, these changes should
only affect the use of very large segments, such as IPv6
jumbograms, which are currently rarely used in the general
Internet. Supporting the behavior described in this document does
not affect interoperability with other TCP implementations when
using IPv4 or non-jumbogram IPv6. This document states that
jumbograms are to only be used when it can be guaranteed that all
receiving nodes, including each router in the end-to-end path,
will support jumbograms. If even a single node that that does not
support jumbograms is attached to a local network, then no host on
that network may use jumbograms. This explains why jumbogram use
has been rare, and why this document is considered a performance
optimzation rather than part of TCP over IPv6's basic
functionality.
RFC 3168 S: "The Addition of Explicit Congestion Notification (ECN) RFC 3168 S: "The Addition of Explicit Congestion Notification (ECN)
to IP" (September 2001) to IP" (September 2001)
This document [RFC3168] defines a means of detecting congestion This document [RFC3168] defines a means for end hosts to detect
without resorting to packet loss. Although congestion congestion before congested routers are forced to discard packets.
notification takes place at the IP level, ECN requires support at Although congestion notification takes place at the IP level, ECN
the transport level (e.g., in TCP) to echo the bits and adapt the requires support at the transport level (e.g., in TCP) to echo the
sending rate. This document updates RFC 793 to define two bits and adapt the sending rate. This document updates RFC 793 to
previously-unused flag bits in the TCP header for ECN support. define two previously-unused flag bits in the TCP header for ECN
RFC 3540 provides a supplementary (experimental) means for making support. RFC 3540 provides a supplementary (experimental) means
ECN use more secure, and RFC 2884 provides some sample results for more secure use of ECN, and RFC 2884 provides some sample
from using ECN. results from using ECN.
3.1 Congestion Control and Loss Recovery Extensions 3.1 Congestion Control and Loss Recovery Extensions
Two of the most important aspects of TCP are its congestion control Two of the most important aspects of TCP are its congestion control
and loss recovery features. Since TCP traditionally (in the absence and loss recovery features. Since TCP traditionally (in the absence
of ECN) uses losses to infer congestion, there is a rather intimate of ECN) uses losses to infer congestion, there is a rather intimate
coupling between congestion control and loss recovery mechanisms. coupling between congestion control and loss recovery mechanisms.
There are several extensions to both features, and more often than There are several extensions to both features, and more often than
not, a particular extension applies to both. In this sub-section, we not, a particular extension applies to both. In this sub-section, we
group enhancements to either congestion control, loss recovery, or group enhancements to either congestion control, loss recovery, or
both, which can be performed unilaterally - without negotiating both, which can be performed unilaterally - without negotiating
support between endpoints. In the next sub-section, we group the support between endpoints. In the next sub-section, we group the
extensions which specify or rely on the SACK option, whose use must extensions which specify or rely on the SACK option, which must be
be negotiated bilaterally. TCP implementations should include the negotiated bilaterally. TCP implementations should include the
enhancements from both sub-sections so that they can perform well enhancements from both sub-sections so that TCP senders can perform
without regard to the feature sets of other hosts they connect to. well without regard to the feature sets of other hosts they connect
For example, if SACK use is not successfully negotiated, a TCP should to. For example, if SACK use is not successfully negotiated, a host
use the NewReno behavior as a fall-back. should use the NewReno behavior as a fall-back.
RFC 3042 S: "Enhancing TCP's Loss Recovery Using Limited Transmit" RFC 3042 S: "Enhancing TCP's Loss Recovery Using Limited Transmit"
(January 2001) (January 2001)
Abstract: "This document proposes Limited Transmit, a new Abstract: "This document proposes Limited Transmit, a new
Transmission Control Protocol (TCP) mechanism that can be used to Transmission Control Protocol (TCP) mechanism that can be used to
more effectively recover lost segments when a connection's more effectively recover lost segments when a connection's
congestion window is small, or when a large number of segments are congestion window is small, or when a large number of segments are
lost in a single transmission window." [RFC3042] lost in a single transmission window." [RFC3042]
Tests from 2004 showed that Limited Transmit was deployed in Tests from 2004 showed that Limited Transmit was deployed in
skipping to change at page 9, line 48 skipping to change at page 10, line 30
available. While it is only a slight modification, the NewReno available. While it is only a slight modification, the NewReno
behavior can make a significant difference in performance when behavior can make a significant difference in performance when
multiple segments are lost from a single window of data. multiple segments are lost from a single window of data.
RFC 4015 S: "The Eifel Response Algorithm for TCP" (February 2005) RFC 4015 S: "The Eifel Response Algorithm for TCP" (February 2005)
This document [RFC4015] describes the response portion of the This document [RFC4015] describes the response portion of the
Eifel algorithm, which can be used in conjunction with one of Eifel algorithm, which can be used in conjunction with one of
several methods of detecting when loss recovery has been several methods of detecting when loss recovery has been
spuriously entered, such as the Eifel detection algorithm in RFC spuriously entered, such as the Eifel detection algorithm in RFC
3522, the algorithm in RFC 3708, or F-RTO. 3522, the algorithm in RFC 3708, or F-RTO [f-rto].
Abstract: "Based on an appropriate detection algorithm, the Eifel Abstract: "Based on an appropriate detection algorithm, the Eifel
response algorithm provides a way for a TCP sender to respond to a response algorithm provides a way for a TCP sender to respond to a
detected spurious timeout. It adapts the retransmission timer to detected spurious timeout. It adapts the retransmission timer to
avoid further spurious timeouts, and can avoid - depending on the avoid further spurious timeouts, and can avoid - depending on the
detection algorithm - the often unnecessary go-back-N retransmits detection algorithm - the often unnecessary go-back-N retransmits
that would otherwise be sent. In addition, the Eifel response that would otherwise be sent. In addition, the Eifel response
algorithm restores the congestion control state in such a way that algorithm restores the congestion control state in such a way that
packet bursts are avoided." packet bursts are avoided."
skipping to change at page 11, line 15 skipping to change at page 12, line 7
connection. connection.
The TCPM working group is currently in progress towards fully The TCPM working group is currently in progress towards fully
understanding and defining mechanisms for preventing spoofing attacks understanding and defining mechanisms for preventing spoofing attacks
(including both spoofed TCP segments and ICMP datagrams). Some of (including both spoofed TCP segments and ICMP datagrams). Some of
the solutions being considered rely on TCP modifications, while the solutions being considered rely on TCP modifications, while
others rely on security at lower layers (like IPsec) for protection. others rely on security at lower layers (like IPsec) for protection.
RFC 1948 I: "Defending Against Sequence Number Attacks" (May 1996) RFC 1948 I: "Defending Against Sequence Number Attacks" (May 1996)
This document [RFC1948] describes the TCP vulnerability based upon This document [RFC1948] describes the TCP vulnerability that
guessing sequence numbers, as well as defenses against allows an attacker to send forged TCP packets, based upon guessing
exploitation. Some variation is implemented in most the initial sequence number in the three-way handshake. Simple
currently-used operating systems. defenses against exploitation are then described. Some variation
is implemented in most currently-used operating systems.
RFC 2385 S: "Protection of BGP Sessions via the TCP MD5 Signature RFC 2385 S: "Protection of BGP Sessions via the TCP MD5 Signature
Option" (August 1998) Option" (August 1998)
From document: "This document describes currrent existing practice From document: "This document describes currrent existing practice
for securing BGP against certain simple attacks. It is understood for securing BGP against certain simple attacks. It is understood
to have security weaknesses against concerted attacks. to have security weaknesses against concerted attacks.
This memo describes a TCP extension to enhance security for BGP. This memo describes a TCP extension to enhance security for BGP.
It defines a new TCP option for carrying an MD5 [RFC1321] digest It defines a new TCP option for carrying an MD5 [RFC1321] digest
skipping to change at page 11, line 40 skipping to change at page 12, line 33
segment, incorporating information known only to the connection segment, incorporating information known only to the connection
end points. Since BGP uses TCP as its transport, using this end points. Since BGP uses TCP as its transport, using this
option in the way described in this paper significantly reduces option in the way described in this paper significantly reduces
the danger from certain security attacks on BGP." [RFC2385] the danger from certain security attacks on BGP." [RFC2385]
TCP MD5 options are currently only used in very limited contexts, TCP MD5 options are currently only used in very limited contexts,
primarily for defending BGP exchanges between routers. Some primarily for defending BGP exchanges between routers. Some
deployment notes for those using TCP MD5 are found in the later deployment notes for those using TCP MD5 are found in the later
RFC 3562, "Key Management Considerations for the TCP MD5 Signature RFC 3562, "Key Management Considerations for the TCP MD5 Signature
Option" [RFC3562]. A draft that is currently in the RFC Editor's Option" [RFC3562]. A draft that is currently in the RFC Editor's
queue for publication (draft-iesg-tcpmd5app) deprecates TCP MD5 queue for publication [tcpmd5app] deprecates TCP MD5 for use
for use outside BGP. outside BGP.
4. Experimental Extensions 4. Experimental Extensions
The RFCs in this section are still experimental, but may become The RFCs in this section are still experimental, but may become
proposed standards in the future. At least part of the reason that proposed standards in the future. At least part of the reason that
they are still experimental is to gain more wide-scale experience they are still experimental is to gain more wide-scale experience
with them before making a standards track decision. By their with them before making a standards track decision. By their
publication as experimental RFCs, it is hoped that the community of publication as experimental RFCs, it is hoped that the community of
TCP researchers will analyze and test the contents of these RFCs. TCP researchers will analyze and test the contents of these RFCs.
Although encouraged for experimentation, there is not yet formal Although encouraged for experimentation, there is not yet formal
consensus that these are fully logical and safe behaviors. consensus that these are fully logical and safe behaviors. Wide-
Wide-scale deployment of implementations that use these features scale deployment of implementations that use these features should be
should be well thought-out in terms of consequences. well thought-out in terms of consequences.
RFC 2140 I: "TCP Control Block Interdependence" (April 1997) RFC 2140 I: "TCP Control Block Interdependence" (April 1997)
This document [RFC2140] suggests how TCP connections between the This document [RFC2140] suggests how TCP connections between the
same endpoints might share information, such as their congestion same endpoints might share information, such as their congestion
control state. To some degree, this is done in practice by a few control state. To some degree, this is done in practice by a few
operating systems; for example, Linux currently has a destination operating systems; for example, Linux currently has a destination
cache. Although this RFC is technically informational, the cache. Although this RFC is technically informational, the
concepts it describes are in experimental use, so we include it in concepts it describes are in experimental use, so we include it in
this section. this section.
skipping to change at page 12, line 52 skipping to change at page 14, line 11
aggressive than that specified in RFC 2581, which says that a TCP aggressive than that specified in RFC 2581, which says that a TCP
sender SHOULD set its congestion window to the initial window sender SHOULD set its congestion window to the initial window
after an idle period of an RTO or greater. after an idle period of an RTO or greater.
RFC 3465 E: "TCP Congestion Control with Appropriate Byte Counting RFC 3465 E: "TCP Congestion Control with Appropriate Byte Counting
(ABC)" (February 2003) (ABC)" (February 2003)
This document [RFC3465] suggests that congestion control use the This document [RFC3465] suggests that congestion control use the
number of bytes acknowledged rather than the number of number of bytes acknowledged rather than the number of
acknowledgements received. This has been implemented in Linux. acknowledgements received. This has been implemented in Linux.
The ABC mechanism behaves differently than the standard means when The ABC mechanism behaves differently than the standard method
there is not a one-to-one relationship between data segments and when there is not a one-to-one relationship between data segments
acknowledgements. ABC still operates within the accepted and acknowledgements. ABC still operates within the accepted
guidelines, but is more robust to delayed ACKs and ACK-division guidelines, but is more robust to delayed ACKs and ACK-division
[SCWA99]. [SCWA99][RFC3449].
RFC 3522 E: "The Eifel Detection Algorithm for TCP" (April 2003) RFC 3522 E: "The Eifel Detection Algorithm for TCP" (April 2003)
This document [RFC3522] suggests using timestamps to detect This document [RFC3522] suggests using timestamps to detect
spurious timeouts. spurious timeouts.
RFC 3540 E: "Robust Explicit Congestion Notification (ECN) signaling RFC 3540 E: "Robust Explicit Congestion Notification (ECN) signaling
with Nonces" (June 2003) with Nonces" (June 2003)
This document [RFC3540] suggests a modified ECN to address This document [RFC3540] suggests a modified ECN to address
security concerns, and updates RFC 3168. security concerns, and updates RFC 3168.
RFC 3649 E: "HighSpeed TCP for Large Congestion Windows" (December RFC 3649 E: "HighSpeed TCP for Large Congestion Windows" (December
2003) 2003)
This document [RFC3649] suggests a modification to TCP's This document [RFC3649] suggests a modification to TCP's steady-
steady-state behavior to efficiently use very large windows. state behavior to efficiently use very large windows.
RFC 3708 E: "Using TCP Duplicate Selective Acknowledgement (DSACKs) RFC 3708 E: "Using TCP Duplicate Selective Acknowledgement (DSACKs)
and Stream Control Transmission Protocol (SCTP) Duplicate and Stream Control Transmission Protocol (SCTP) Duplicate
Transmission Sequence Numbers (TSNs) to Detect Spurious Transmission Sequence Numbers (TSNs) to Detect Spurious
Retransmissions" (February 2004) Retransmissions" (February 2004)
Abstract: "TCP and Stream Control Transmission Protocol (SCTP) Abstract: "TCP and Stream Control Transmission Protocol (SCTP)
provide notification of duplicate segment receipt through provide notification of duplicate segment receipt through
Duplicate Selective Acknowledgement (DSACKs) and Duplicate Duplicate Selective Acknowledgement (DSACKs) and Duplicate
Transmission Sequence Number (TSN) notification, respectively. Transmission Sequence Number (TSN) notification, respectively.
skipping to change at page 13, line 50 skipping to change at page 15, line 15
Windows" (March 2004) Windows" (March 2004)
This document [RFC3742] describes a more conservative slow-start This document [RFC3742] describes a more conservative slow-start
behavior to prevent massive packet losses when a connection uses a behavior to prevent massive packet losses when a connection uses a
very large window. very large window.
Work in progress: Forward RTO-Recovery (F-RTO): An Algorithm for Work in progress: Forward RTO-Recovery (F-RTO): An Algorithm for
Detecting Spurious Retransmission Timeouts with TCP and SCTP Detecting Spurious Retransmission Timeouts with TCP and SCTP
(Internet Draft name: draft-ietf-tcpm-frto) (Internet Draft name: draft-ietf-tcpm-frto)
The F-RTO detection algorithm provides another option for The F-RTO detection algorithm [f-rto]provides another option for
inferring spurious retransmission timeouts. Unlike some similar inferring spurious retransmission timeouts. Unlike some similar
detection methods, F-RTO does not rely on the use of any TCP detection methods, F-RTO does not rely on the use of any TCP
options. At the time of this writing, the TCP Maintenance and options. At the time of this writing, the TCP Maintenance and
Minor Extensions Working Group had completed a document describing Minor Extensions Working Group had completed a document describing
F-RTO (by Pasi Sarolahti and Markku Kojo), and planned to make F-RTO (by Pasi Sarolahti and Markku Kojo), and planned to make
this an Experimental part of the RFC series. this an Experimental part of the RFC series.
5. Historic Extensions 5. Historic Extensions
The RFCs listed here define extensions that have thus far failed to The RFCs listed here define extensions that have thus far failed to
arouse substantial interest, or were found to be defective. arouse substantial interest from implementers, or were found to be
defective for general use.
RFC 1106 "TCP Big Window and NAK Options" (June 1989) - found RFC 1106 "TCP Big Window and NAK Options" (June 1989) - found
defective defective
This RFC [RFC1106] defined an alternative to the Window Scale This RFC [RFC1106] defined an alternative to the Window Scale
option for using large windows, and described the "negative option for using large windows, and described the "negative
acknowledgement" or NAK option. There is a comparison of NAK and acknowledgement" or NAK option. There is a comparison of NAK and
SACK methods, and early discussion of TCP over satellite issues. SACK methods, and early discussion of TCP over satellite issues.
RFC 1110 explains some problems with the approaches described in RFC 1110 explains some problems with the approaches described in
RFC 1106. The options described in this document have not been RFC 1106. The options described in this document have not been
adopted by the larger community, although NAKs are used in the adopted by the larger community, although NAKs are used in the
SCPS-TP adaptation of TCP, developed by the Consultive Committee SCPS-TP adaptation of TCP for satellite and spacecraft use,
for Space Data Systems (CCSDS). developed by the Consultive Committee for Space Data Systems
(CCSDS) .
RFC 1110 "A Problem with the TCP Big Window Option" (August 1989) - RFC 1110 "A Problem with the TCP Big Window Option" (August 1989) -
deprecates RFC 1106 deprecates RFC 1106
Abstract: "The TCP Big Window option discussed in RFC 1106 will Abstract: "The TCP Big Window option discussed in RFC 1106 will
not work properly in an Internet environment which has both a high not work properly in an Internet environment which has both a high
bandwidth * delay product and the possibility of disordering and bandwidth * delay product and the possibility of disordering and
duplicating packets. In such networks, the window size must not duplicating packets. In such networks, the window size must not
be increased without a similar increase in the sequence number be increased without a similar increase in the sequence number
space. Therefore, a different approach to big windows should be space. Therefore, a different approach to big windows should be
skipping to change at page 16, line 4 skipping to change at page 17, line 10
This document [RFC1263] argues against "backwards compatible" TCP This document [RFC1263] argues against "backwards compatible" TCP
extensions. Specifically mentioned are several TCP enhancements extensions. Specifically mentioned are several TCP enhancements
that have been successful, including timestamps, window scaling, that have been successful, including timestamps, window scaling,
PAWS, and SACK. RFC 1263 presents an alternative approach called PAWS, and SACK. RFC 1263 presents an alternative approach called
"protocol evolution", whereby several evolutionary versions of TCP "protocol evolution", whereby several evolutionary versions of TCP
would exist on hosts. These distinct TCP versions would represent would exist on hosts. These distinct TCP versions would represent
upgrades to each other and could be header-incompatible. upgrades to each other and could be header-incompatible.
Interoperability would be provided by having a virtualization Interoperability would be provided by having a virtualization
layer select the right TCP version for a particular connection. layer select the right TCP version for a particular connection.
This idea did not catch on with the community, while the type of This idea did not catch on with the community, while the type of
extensions RFC 1263 specifically targeted as harmful did become extensions RFC 1263 specifically targeted as harmful did become
popular. popular.
RFC 1379 I "Extending TCP for Transactions -- Concepts" (November RFC 1379 I "Extending TCP for Transactions -- Concepts" (November
1992) - found defective 1992) - found defective
See RFC 1644. See RFC 1644.
RFC 1644 E "T/TCP -- TCP Extensions for Transactions Functional RFC 1644 E "T/TCP -- TCP Extensions for Transactions Functional
Specification" (July 1994) - found defective Specification" (July 1994) - found defective
The inventors of TCP believed that cached connection state could The inventors of TCP believed that cached connection state could
have been used to eliminate TCP's 3-way handshake, to support have been used to eliminate TCP's 3-way handshake, to support two-
two-packet request/response exchanges. RFCs 1379 [RFC1379] and packet request/response exchanges. RFCs 1379 [RFC1379] and 1644
1644 [RFC1644] show that this is far from simple. Furthermore, [RFC1644] show that this is far from simple. Furthermore, T/TCP
T/TCP floundered on the ease of denial-of-service attacks that can floundered on the ease of denial-of-service attacks that can
result. One idea pioneered by T/TCP lives on in RFC 2140, in the result. One idea pioneered by T/TCP lives on in RFC 2140, in the
sharing of state across connections. sharing of state across connections.
RFC 1693 E "An Extension to TCP: Partial Order Service" (November RFC 1693 E "An Extension to TCP: Partial Order Service" (November
1994) - lacked interest 1994) - lacked interest
This document [RFC1693] defines a TCP extension for applications This document [RFC1693] defines a TCP extension for applications
that do not care about the order in which application-layer that do not care about the order in which application-layer
objects are received. Examples are multimedia and database objects are received. Examples are multimedia and database
applications. In practice, these applications either accept the applications. In practice, these applications either accept the
skipping to change at page 19, line 44 skipping to change at page 21, line 10
T/TCP, larger initial windows, byte counting, delayed T/TCP, larger initial windows, byte counting, delayed
acknowledgements, slow start thresholds, NewReno and SACK-based acknowledgements, slow start thresholds, NewReno and SACK-based
loss recovery, FACK [MM96], ECN, various corruption-detection loss recovery, FACK [MM96], ECN, various corruption-detection
mechanisms, congestion avoidance changes for fairness, use of mechanisms, congestion avoidance changes for fairness, use of
multiple parallel flows, pacing, header compression, state multiple parallel flows, pacing, header compression, state
sharing, and ACK congestion control, filtering, and sharing, and ACK congestion control, filtering, and
reconstruction. While RFC 2488 looks at standard extensions, this reconstruction. While RFC 2488 looks at standard extensions, this
document focuses on more experimental means of performance document focuses on more experimental means of performance
enhancement. enhancement.
RFC 3135 I: "Performance Enhancing Proxies Intended to Mitigate RFC 3135 I: "Performance Enhancing Proxies Intended to Mitigate Link-
Link-Related Degradations" (June 2001) Related Degradations" (June 2001)
From abstract: "This document is a survey of Performance Enhancing From abstract: "This document is a survey of Performance Enhancing
Proxies (PEPs) often employed to improve degraded TCP performance Proxies (PEPs) often employed to improve degraded TCP performance
caused by characteristics of specific link environments, for caused by characteristics of specific link environments, for
example, in satellite, wireless WAN, and wireless LAN example, in satellite, wireless WAN, and wireless LAN
environments. Different types of Performance Enhancing Proxies environments. Different types of Performance Enhancing Proxies
are described as well as the mechanisms used to improve are described as well as the mechanisms used to improve
performance." [RFC3135] performance." [RFC3135]
RFC 3449 B: "TCP Performance Implications of Network Path Asymmetry" RFC 3449 B: "TCP Performance Implications of Network Path Asymmetry"
skipping to change at page 21, line 33 skipping to change at page 23, line 16
From abstract: "This memo catalogs a number of known TCP From abstract: "This memo catalogs a number of known TCP
implementation problems. The goal in doing so is to improve implementation problems. The goal in doing so is to improve
conditions in the existing Internet by enhancing the quality of conditions in the existing Internet by enhancing the quality of
current TCP/IP implementations." [RFC2525] current TCP/IP implementations." [RFC2525]
RFC 2923 I: "TCP Problems with Path MTU Discovery" (September 2000) RFC 2923 I: "TCP Problems with Path MTU Discovery" (September 2000)
From abstract: "This memo catalogs several known Transmission From abstract: "This memo catalogs several known Transmission
Control Protocol (TCP) implementation problems dealing with Path Control Protocol (TCP) implementation problems dealing with Path
Maximum Transmission Unit Discovery (PMTUD), including the Maximum Transmission Unit Discovery (PMTUD), including the long-
long-standing black hole problem, stretch acknowlegements (ACKs) standing black hole problem, stretch acknowlegements (ACKs) due to
due to confusion between Maximum Segment Size (MSS) and segment confusion between Maximum Segment Size (MSS) and segment size, and
size, and MSS advertisement based on PMTU." [RFC2923] MSS advertisement based on PMTU." [RFC2923]
RFC 3360 B: "Inappropriate TCP Resets Considered Harmful" (August RFC 3360 B: "Inappropriate TCP Resets Considered Harmful" (August
2002) 2002)
This document [RFC3360] is a plea that firewall vendors not send This document [RFC3360] is a plea that firewall vendors not send
gratuitous TCP RST (Reset) packets when unassigned TCP header bits gratuitous TCP RST (Reset) packets when unassigned TCP header bits
are used. This practice prevents desirable extension and are used. This practice prevents desirable extension and
evolution of the protocol and hence is potentially harmful to the evolution of the protocol and hence is potentially harmful to the
future of the Internet. future of the Internet.
skipping to change at page 22, line 16 skipping to change at page 23, line 47
6.4 Management Information Bases 6.4 Management Information Bases
The first MIB module defined for use with SNMP (in RFC 1066 and its The first MIB module defined for use with SNMP (in RFC 1066 and its
update, RFC 1156) was a single monolithic MIB module, called MIB-I. update, RFC 1156) was a single monolithic MIB module, called MIB-I.
This evolved over time to be MIB-II (RFC 1213). It then became This evolved over time to be MIB-II (RFC 1213). It then became
apparent that having a single monolithic MIB module was not scalable, apparent that having a single monolithic MIB module was not scalable,
given the number and breadth of MIB data definitions that needed to given the number and breadth of MIB data definitions that needed to
be included. Thus, additional MIB modules were defined, and those be included. Thus, additional MIB modules were defined, and those
parts of MIB-II which needed to evolve were split off. Eventually, parts of MIB-II which needed to evolve were split off. Eventually,
the remaining parts of MIB-II were also split off, with the the remaining parts of MIB-II were also split off, with the TCP-
TCP-specific part being documented in RFC 2012. specific part being documented in RFC 2012.
RFC 2012 was obsoleted by RFC 4022, which is the primary TCP MIB RFC 2012 was obsoleted by RFC 4022, which is the primary TCP MIB
document today. MIB-I, defined in RFC 1156, has been obsoleted by document today. MIB-I, defined in RFC 1156, has been obsoleted by
the MIB-II specification in RFC 1213. For current TCP implementers, the MIB-II specification in RFC 1213. For current TCP implementers,
RFC 4022 should be supported. RFC 4022 should be supported.
RFC 1066: "Management Information Base for Network Management of RFC 1066: "Management Information Base for Network Management of TCP/
TCP/IP-based Internets" (August 1988) IP-based Internets" (August 1988)
This document [RFC1066] was the description of the TCP MIB. It This document [RFC1066] was the description of the TCP MIB. It
was obsoleted by RFC 1156. was obsoleted by RFC 1156.
RFC 1156 S: "Management Information Base for Network Management of RFC 1156 S: "Management Information Base for Network Management of
TCP/IP-based Internets" (May 1990) TCP/IP-based Internets" (May 1990)
This document [RFC1156] describes the required MIB fields for TCP This document [RFC1156] describes the required MIB fields for TCP
implementations, with minor corrections and no technical changes implementations, with minor corrections and no technical changes
from RFC 1066, which it obsoletes. This is the standards track from RFC 1066, which it obsoletes. This is the standards track
skipping to change at page 23, line 8 skipping to change at page 24, line 40
out the TCP-specific portions. out the TCP-specific portions.
RFC 2012 S: "SNMPv2 Management Information Base for the Transmission RFC 2012 S: "SNMPv2 Management Information Base for the Transmission
Control Protocol using SMIv2" (November 1996) Control Protocol using SMIv2" (November 1996)
This document [RFC2012] defined the TCP MIB, in an update to RFC This document [RFC2012] defined the TCP MIB, in an update to RFC
1213. It is now obsoleted by RFC 4022. 1213. It is now obsoleted by RFC 4022.
RFC 2452 S: "IP Version 6 Management Information Base for the RFC 2452 S: "IP Version 6 Management Information Base for the
Transmission Control Protocol" (December 1998) Transmission Control Protocol" (December 1998)
This document [RFC2452] augments RFC 2012 by adding an This document [RFC2452] augments RFC 2012 by adding an IPv6-
IPv6-specific connection table. The rest of 2012 holds for any IP specific connection table. The rest of 2012 holds for any IP
version. version.
Although it is a standards track document, RFC 2452 is considered Although it is a standards track document, RFC 2452 is considered
a historic mistake by the MIB community, as it is based on the a historic mistake by the MIB community, as it is based on the
idea of parallel IPv4 and IPv6 structures. Although IPv6 requires idea of parallel IPv4 and IPv6 structures. Although IPv6 requires
new structures, the community has decided to define a single new structures, the community has decided to define a single
generic structure for both IPv4 and IPv6. This will aid in generic structure for both IPv4 and IPv6. This will aid in
definition, implementation, and transition between IPv4 and IPv6. definition, implementation, and transition between IPv4 and IPv6.
RFC 4022 S: "Management Information Base for the Transmission Control RFC 4022 S: "Management Information Base for the Transmission Control
skipping to change at page 25, line 39 skipping to change at page 27, line 39
Header Prediction Header Prediction
Header prediction is a trick to speed up the processing of Header prediction is a trick to speed up the processing of
segments. Van Jacobson and Mike Karels developed the technique in segments. Van Jacobson and Mike Karels developed the technique in
the late 1980s. The basic idea is that some processing time can the late 1980s. The basic idea is that some processing time can
be saved when most of a segment's fields can be predicted from be saved when most of a segment's fields can be predicted from
previous segments. A good description of this was sent to the previous segments. A good description of this was sent to the
TCP-IP mailing list by Van Jacobson on March 9, 1988: TCP-IP mailing list by Van Jacobson on March 9, 1988:
Quite a bit of the speedup comes from an algorithm that we Quite a bit of the speedup comes from an algorithm that we
(`we' refers to collaborator Mike Karels and myself) are ('we' refers to collaborator Mike Karels and myself) are
calling "header prediction". The idea is that if you're in the calling "header prediction". The idea is that if you're in the
middle of a bulk data transfer and have just seen a packet, you middle of a bulk data transfer and have just seen a packet, you
know what the next packet is going to look like: It will look know what the next packet is going to look like: It will look
just like the current packet with either the sequence number or just like the current packet with either the sequence number or
ack number updated (depending on whether you're the sender or ack number updated (depending on whether you're the sender or
receiver). Combining this with the "Use hints" epigram from receiver). Combining this with the "Use hints" epigram from
Butler Lampson's classic "Epigrams for System Designers", you Butler Lampson's classic "Epigrams for System Designers", you
start to think of the tcp state (rcv.nxt, snd.una, etc.) as start to think of the tcp state (rcv.nxt, snd.una, etc.) as
"hints" about what the next packet should look like. "hints" about what the next packet should look like.
skipping to change at page 28, line 5 skipping to change at page 30, line 5
protocol processing. Otherwise, you're done with this packet. protocol processing. Otherwise, you're done with this packet.
So, the *total* tcp protocol processing, exclusive of So, the *total* tcp protocol processing, exclusive of
checksumming, is on the order of 6 compares and an add. checksumming, is on the order of 6 compares and an add.
8. Security Considerations 8. Security Considerations
This document introduces no new security considerations. Each RFC This document introduces no new security considerations. Each RFC
listed in this document attempts to address the security listed in this document attempts to address the security
considerations of the specification it contains. considerations of the specification it contains.
9. Acknowledgments 9. IANA Considerations
This document contains no IANA considerations.
10. Acknowledgments
This document grew out of a discussion on the end2end-interest This document grew out of a discussion on the end2end-interest
mailing list, the public list of the End-to-End Research Group of the mailing list, the public list of the End-to-End Research Group of the
IRTF, and continued development under the IETF's TCP Maintenance and IRTF, and continued development under the IETF's TCP Maintenance and
Minor Extensions (TCPM) working group. We thank Joe Touch, Reiner Minor Extensions (TCPM) working group. We thank Joe Touch, Reiner
Ludwig, Pekka Savola, Gorry Fairhurst, and Sally Floyd for their Ludwig, Pekka Savola, Gorry Fairhurst, and Sally Floyd for their
contributions, in particular. The chairs of the TCPM working group, contributions, in particular. The chairs of the TCPM working group,
Mark Allman and Ted Faber, have been instrumental in the development Mark Allman and Ted Faber, have been instrumental in the development
of this document. Keith McCloghrie provided some useful notes and of this document. Keith McCloghrie provided some useful notes and
clarification on the various MIB-related RFCs. clarification on the various MIB-related RFCs.
10. References 11. Informative References
10.1 Basic Functionality 11.1 Basic Functionality
[RFC0793] Postel, J., "Transmission Control Protocol", STD 7, [RFC0793] Postel, J., "Transmission Control Protocol", STD 7,
RFC 793, September 1981. RFC 793, September 1981.
[RFC1122] Braden, R., "Requirements for Internet Hosts - [RFC1122] Braden, R., "Requirements for Internet Hosts -
Communication Layers", STD 3, RFC 1122, October 1989. Communication Layers", STD 3, RFC 1122, October 1989.
[RFC2026] Bradner, S., "The Internet Standards Process -- Revision
3", BCP 9, RFC 2026, October 1996.
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998. (IPv6) Specification", RFC 2460, December 1998.
[RFC2474] Nichols, K., Blake, S., Baker, F. and D. Black, [RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black,
"Definition of the Differentiated Services Field (DS "Definition of the Differentiated Services Field (DS
Field) in the IPv4 and IPv6 Headers", RFC 2474, December Field) in the IPv4 and IPv6 Headers", RFC 2474,
1998. December 1998.
[RFC2581] Allman, M., Paxson, V. and W. Stevens, "TCP Congestion [RFC2581] Allman, M., Paxson, V., and W. Stevens, "TCP Congestion
Control", RFC 2581, April 1999. Control", RFC 2581, April 1999.
[RFC2675] Borman, D., Deering, S. and R. Hinden, "IPv6 Jumbograms", [RFC2675] Borman, D., Deering, S., and R. Hinden, "IPv6 Jumbograms",
RFC 2675, August 1999. RFC 2675, August 1999.
[RFC2873] Xiao, X., Hannan, A., Paxson, V. and E. Crabbe, "TCP [RFC2873] Xiao, X., Hannan, A., Paxson, V., and E. Crabbe, "TCP
Processing of the IPv4 Precedence Field", RFC 2873, June Processing of the IPv4 Precedence Field", RFC 2873,
2000. June 2000.
[RFC2988] Paxson, V. and M. Allman, "Computing TCP's Retransmission [RFC2988] Paxson, V. and M. Allman, "Computing TCP's Retransmission
Timer", RFC 2988, November 2000. Timer", RFC 2988, November 2000.
10.2 Standard Enhancements 11.2 Standard Enhancements
[RFC1323] Jacobson, V., Braden, B. and D. Borman, "TCP Extensions [RFC1323] Jacobson, V., Braden, B., and D. Borman, "TCP Extensions
for High Performance", RFC 1323, May 1992. for High Performance", RFC 1323, May 1992.
[RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", [RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks",
RFC 1948, May 1996. RFC 1948, May 1996.
[RFC2018] Mathis, M., Mahdavi, J., Floyd, S. and A. Romanow, "TCP [RFC2018] Mathis, M., Mahdavi, J., Floyd, S., and A. Romanow, "TCP
Selective Acknowledgment Options", RFC 2018, October 1996. Selective Acknowledgment Options", RFC 2018, October 1996.
[RFC2385] Heffernan, A., "Protection of BGP Sessions via the TCP MD5 [RFC2385] Heffernan, A., "Protection of BGP Sessions via the TCP MD5
Signature Option", RFC 2385, August 1998. Signature Option", RFC 2385, August 1998.
[RFC2883] Floyd, S., Mahdavi, J., Mathis, M. and M. Podolsky, "An [RFC2883] Floyd, S., Mahdavi, J., Mathis, M., and M. Podolsky, "An
Extension to the Selective Acknowledgement (SACK) Option Extension to the Selective Acknowledgement (SACK) Option
for TCP", RFC 2883, July 2000. for TCP", RFC 2883, July 2000.
[RFC3042] Allman, M., Balakrishnan, H. and S. Floyd, "Enhancing [RFC3042] Allman, M., Balakrishnan, H., and S. Floyd, "Enhancing
TCP's Loss Recovery Using Limited Transmit", RFC 3042, TCP's Loss Recovery Using Limited Transmit", RFC 3042,
January 2001. January 2001.
[RFC3168] Ramakrishnan, K., Floyd, S. and D. Black, "The Addition of [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
Explicit Congestion Notification (ECN) to IP", RFC 3168, of Explicit Congestion Notification (ECN) to IP",
September 2001. RFC 3168, September 2001.
[RFC3390] Allman, M., Floyd, S. and C. Partridge, "Increasing TCP's [RFC3390] Allman, M., Floyd, S., and C. Partridge, "Increasing TCP's
Initial Window", RFC 3390, October 2002. Initial Window", RFC 3390, October 2002.
[RFC3517] Blanton, E., Allman, M., Fall, K. and L. Wang, "A [RFC3517] Blanton, E., Allman, M., Fall, K., and L. Wang, "A
Conservative Selective Acknowledgment (SACK)-based Loss Conservative Selective Acknowledgment (SACK)-based Loss
Recovery Algorithm for TCP", RFC 3517, April 2003. Recovery Algorithm for TCP", RFC 3517, April 2003.
[RFC3562] Leech, M., "Key Management Considerations for the TCP MD5 [RFC3562] Leech, M., "Key Management Considerations for the TCP MD5
Signature Option", RFC 3562, July 2003. Signature Option", RFC 3562, July 2003.
[RFC3782] Floyd, S., Henderson, T. and A. Gurtov, "The NewReno [RFC3782] Floyd, S., Henderson, T., and A. Gurtov, "The NewReno
Modification to TCP's Fast Recovery Algorithm", RFC 3782, Modification to TCP's Fast Recovery Algorithm", RFC 3782,
April 2004. April 2004.
[RFC4015] Ludwig, R. and A. Gurtov, "The Eifel Response Algorithm [RFC4015] Ludwig, R. and A. Gurtov, "The Eifel Response Algorithm
for TCP", RFC 4015, February 2005. for TCP", RFC 4015, February 2005.
10.3 Experimental Extensions [tcpmd5app]
Bellovin, S. and A. Zinin, "Standards Maturity Variance
Regarding the TCP MD5 Signature Option (RFC 2385) and the
BGP-4 Specification", (draft-iesg-tcpmd5app-01 in RFC
Editor queue), September 2004.
11.3 Experimental Extensions
[RFC2140] Touch, J., "TCP Control Block Interdependence", RFC 2140, [RFC2140] Touch, J., "TCP Control Block Interdependence", RFC 2140,
April 1997. April 1997.
[RFC2861] Handley, M., Padhye, J. and S. Floyd, "TCP Congestion [RFC2861] Handley, M., Padhye, J., and S. Floyd, "TCP Congestion
Window Validation", RFC 2861, June 2000. Window Validation", RFC 2861, June 2000.
[RFC3124] Balakrishnan, H. and S. Seshan, "The Congestion Manager", [RFC3124] Balakrishnan, H. and S. Seshan, "The Congestion Manager",
RFC 3124, June 2001. RFC 3124, June 2001.
[RFC3465] Allman, M., "TCP Congestion Control with Appropriate Byte [RFC3465] Allman, M., "TCP Congestion Control with Appropriate Byte
Counting (ABC)", RFC 3465, February 2003. Counting (ABC)", RFC 3465, February 2003.
[RFC3522] Ludwig, R. and M. Meyer, "The Eifel Detection Algorithm [RFC3522] Ludwig, R. and M. Meyer, "The Eifel Detection Algorithm
for TCP", RFC 3522, April 2003. for TCP", RFC 3522, April 2003.
[RFC3540] Spring, N., Wetherall, D. and D. Ely, "Robust Explicit [RFC3540] Spring, N., Wetherall, D., and D. Ely, "Robust Explicit
Congestion Notification (ECN) Signaling with Nonces", Congestion Notification (ECN) Signaling with Nonces",
RFC 3540, June 2003. RFC 3540, June 2003.
[RFC3649] Floyd, S., "HighSpeed TCP for Large Congestion Windows", [RFC3649] Floyd, S., "HighSpeed TCP for Large Congestion Windows",
RFC 3649, December 2003. RFC 3649, December 2003.
[RFC3708] Blanton, E. and M. Allman, "Using TCP Duplicate Selective [RFC3708] Blanton, E. and M. Allman, "Using TCP Duplicate Selective
Acknowledgement (DSACKs) and Stream Control Transmission Acknowledgement (DSACKs) and Stream Control Transmission
Protocol (SCTP) Duplicate Transmission Sequence Numbers Protocol (SCTP) Duplicate Transmission Sequence Numbers
(TSNs) to Detect Spurious Retransmissions", RFC 3708, (TSNs) to Detect Spurious Retransmissions", RFC 3708,
February 2004. February 2004.
[RFC3742] Floyd, S., "Limited Slow-Start for TCP with Large [RFC3742] Floyd, S., "Limited Slow-Start for TCP with Large
Congestion Windows", RFC 3742, March 2004. Congestion Windows", RFC 3742, March 2004.
10.4 Historic Extensions [f-rto] Sarolahti, P. and M. Kojo, "Forward RTO-Recovery (F-RTO):
An Algorithm for Detecting Spurious retransmission
Timeouts with TCP and SCTP", (draft-ietf-tcpm-frto-02 in
RFC Editor queue), November 2004.
[RFC1106] Fox, R., "TCP big window and NAK options", RFC 1106, June 11.4 Historic Extensions
1989.
[RFC1106] Fox, R., "TCP big window and NAK options", RFC 1106,
June 1989.
[RFC1110] McKenzie, A., "Problem with the TCP big window option", [RFC1110] McKenzie, A., "Problem with the TCP big window option",
RFC 1110, August 1989. RFC 1110, August 1989.
[RFC1146] Zweig, J. and C. Partridge, "TCP alternate checksum [RFC1146] Zweig, J. and C. Partridge, "TCP alternate checksum
options", RFC 1146, March 1990. options", RFC 1146, March 1990.
[RFC1263] O'Malley, S. and L. Peterson, "TCP Extensions Considered [RFC1263] O'Malley, S. and L. Peterson, "TCP Extensions Considered
Harmful", RFC 1263, October 1991. Harmful", RFC 1263, October 1991.
[RFC1379] Braden, B., "Extending TCP for Transactions -- Concepts", [RFC1379] Braden, B., "Extending TCP for Transactions -- Concepts",
RFC 1379, November 1992. RFC 1379, November 1992.
[RFC1644] Braden, B., "T/TCP -- TCP Extensions for Transactions [RFC1644] Braden, B., "T/TCP -- TCP Extensions for Transactions
Functional Specification", RFC 1644, July 1994. Functional Specification", RFC 1644, July 1994.
[RFC1693] Connolly, T., Amer, P. and P. Conrad, "An Extension to TCP [RFC1693] Connolly, T., Amer, P., and P. Conrad, "An Extension to
: Partial Order Service", RFC 1693, November 1994. TCP : Partial Order Service", RFC 1693, November 1994.
10.5 Support Documents 11.5 Support Documents
[RFC0813] Clark, D., "Window and Acknowledgement Strategy in TCP", [RFC0813] Clark, D., "Window and Acknowledgement Strategy in TCP",
RFC 813, July 1982. RFC 813, July 1982.
[RFC0814] Clark, D., "Name, addresses, ports, and routes", RFC 814, [RFC0814] Clark, D., "Name, addresses, ports, and routes", RFC 814,
July 1982. July 1982.
[RFC0816] Clark, D., "Fault isolation and recovery", RFC 816, July [RFC0816] Clark, D., "Fault isolation and recovery", RFC 816,
1982. July 1982.
[RFC0817] Clark, D., "Modularity and efficiency in protocol [RFC0817] Clark, D., "Modularity and efficiency in protocol
implementation", RFC 817, July 1982. implementation", RFC 817, July 1982.
[RFC0872] Padlipsky, M., "TCP-on-a-LAN", RFC 872, September 1982. [RFC0872] Padlipsky, M., "TCP-on-a-LAN", RFC 872, September 1982.
[RFC0879] Postel, J., "TCP maximum segment size and related topics", [RFC0879] Postel, J., "TCP maximum segment size and related topics",
RFC 879, November 1983. RFC 879, November 1983.
[RFC0896] Nagle, J., "Congestion control in IP/TCP internetworks", [RFC0896] Nagle, J., "Congestion control in IP/TCP internetworks",
RFC 896, January 1984. RFC 896, January 1984.
[RFC0964] Sidhu, D. and T. Blumer, "Some problems with the [RFC0964] Sidhu, D. and T. Blumer, "Some problems with the
specification of the Military Standard Transmission specification of the Military Standard Transmission
Control Protocol", RFC 964, November 1985. Control Protocol", RFC 964, November 1985.
[RFC1066] McCloghrie, K. and M. Rose, "Management Information Base [RFC1066] McCloghrie, K. and M. Rose, "Management Information Base
for network management of TCP/IP-based internets", for network management of TCP/IP-based internets",
RFC 1066, August 1988. RFC 1066, August 1988.
[RFC1071] Braden, R., Borman, D., Partridge, C. and W. Plummer, [RFC1071] Braden, R., Borman, D., Partridge, C., and W. Plummer,
"Computing the Internet checksum", RFC 1071, September "Computing the Internet checksum", RFC 1071,
1988. September 1988.
[RFC1072] Jacobson, V. and R. Braden, "TCP extensions for long-delay [RFC1072] Jacobson, V. and R. Braden, "TCP extensions for long-delay
paths", RFC 1072, October 1988. paths", RFC 1072, October 1988.
[RFC1156] McCloghrie, K. and M. Rose, "Management Information Base [RFC1156] McCloghrie, K. and M. Rose, "Management Information Base
for network management of TCP/IP-based internets", for network management of TCP/IP-based internets",
RFC 1156, May 1990. RFC 1156, May 1990.
[RFC1180] Socolofsky, T. and C. Kale, "TCP/IP tutorial", RFC 1180, [RFC1180] Socolofsky, T. and C. Kale, "TCP/IP tutorial", RFC 1180,
January 1991. January 1991.
[RFC1185] Jacobson, V., Braden, B. and L. Zhang, "TCP Extension for [RFC1185] Jacobson, V., Braden, B., and L. Zhang, "TCP Extension for
High-Speed Paths", RFC 1185, October 1990. High-Speed Paths", RFC 1185, October 1990.
[RFC1213] McCloghrie, K. and M. Rose, "Management Information Base [RFC1213] McCloghrie, K. and M. Rose, "Management Information Base
for Network Management of TCP/IP-based internets:MIB-II", for Network Management of TCP/IP-based internets:MIB-II",
STD 17, RFC 1213, March 1991. STD 17, RFC 1213, March 1991.
[RFC1337] Braden, B., "TIME-WAIT Assassination Hazards in TCP", [RFC1337] Braden, B., "TIME-WAIT Assassination Hazards in TCP",
RFC 1337, May 1992. RFC 1337, May 1992.
[RFC1470] Enger, R. and J. Reynolds, "FYI on a Network Management [RFC1470] Enger, R. and J. Reynolds, "FYI on a Network Management
Tool Catalog: Tools for Monitoring and Debugging TCP/IP Tool Catalog: Tools for Monitoring and Debugging TCP/IP
Internets and Interconnected Devices", RFC 1470, June Internets and Interconnected Devices", RFC 1470,
1993. June 1993.
[RFC1624] Rijsinghani, A., "Computation of the Internet Checksum via [RFC1624] Rijsinghani, A., "Computation of the Internet Checksum via
Incremental Update", RFC 1624, May 1994. Incremental Update", RFC 1624, May 1994.
[RFC1936] Touch, J. and B. Parham, "Implementing the Internet [RFC1936] Touch, J. and B. Parham, "Implementing the Internet
Checksum in Hardware", RFC 1936, April 1996. Checksum in Hardware", RFC 1936, April 1996.
[RFC2012] McCloghrie, K., "SNMPv2 Management Information Base for [RFC2012] McCloghrie, K., "SNMPv2 Management Information Base for
the Transmission Control Protocol using SMIv2", RFC 2012, the Transmission Control Protocol using SMIv2", RFC 2012,
November 1996. November 1996.
[RFC2398] Parker, S. and C. Schmechel, "Some Testing Tools for TCP [RFC2398] Parker, S. and C. Schmechel, "Some Testing Tools for TCP
Implementors", RFC 2398, August 1998. Implementors", RFC 2398, August 1998.
[RFC2415] Poduri, K., "Simulation Studies of Increased Initial TCP [RFC2415] Poduri, K., "Simulation Studies of Increased Initial TCP
Window Size", RFC 2415, September 1998. Window Size", RFC 2415, September 1998.
[RFC2416] Shepard, T. and C. Partridge, "When TCP Starts Up With [RFC2416] Shepard, T. and C. Partridge, "When TCP Starts Up With
Four Packets Into Only Three Buffers", RFC 2416, September Four Packets Into Only Three Buffers", RFC 2416,
1998. September 1998.
[RFC2452] Daniele, M., "IP Version 6 Management Information Base for [RFC2452] Daniele, M., "IP Version 6 Management Information Base for
the Transmission Control Protocol", RFC 2452, December the Transmission Control Protocol", RFC 2452,
1998. December 1998.
[RFC2488] Allman, M., Glover, D. and L. Sanchez, "Enhancing TCP Over [RFC2488] Allman, M., Glover, D., and L. Sanchez, "Enhancing TCP
Satellite Channels using Standard Mechanisms", BCP 28, Over Satellite Channels using Standard Mechanisms",
RFC 2488, January 1999. BCP 28, RFC 2488, January 1999.
[RFC2525] Paxson, V., Allman, M., Dawson, S., Fenner, W., Griner, [RFC2525] Paxson, V., Allman, M., Dawson, S., Fenner, W., Griner,
J., Heavens, I., Lahey, K., Semke, J. and B. Volz, "Known J., Heavens, I., Lahey, K., Semke, J., and B. Volz, "Known
TCP Implementation Problems", RFC 2525, March 1999. TCP Implementation Problems", RFC 2525, March 1999.
[RFC2757] Montenegro, G., Dawkins, S., Kojo, M., Magret, V. and N. [RFC2757] Montenegro, G., Dawkins, S., Kojo, M., Magret, V., and N.
Vaidya, "Long Thin Networks", RFC 2757, January 2000. Vaidya, "Long Thin Networks", RFC 2757, January 2000.
[RFC2760] Allman, M., Dawkins, S., Glover, D., Griner, J., Tran, D., [RFC2760] Allman, M., Dawkins, S., Glover, D., Griner, J., Tran, D.,
Henderson, T., Heidemann, J., Touch, J., Kruse, H., Henderson, T., Heidemann, J., Touch, J., Kruse, H.,
Ostermann, S., Scott, K. and J. Semke, "Ongoing TCP Ostermann, S., Scott, K., and J. Semke, "Ongoing TCP
Research Related to Satellites", RFC 2760, February 2000. Research Related to Satellites", RFC 2760, February 2000.
[RFC2884] Hadi Salim, J. and U. Ahmed, "Performance Evaluation of [RFC2884] Hadi Salim, J. and U. Ahmed, "Performance Evaluation of
Explicit Congestion Notification (ECN) in IP Networks", Explicit Congestion Notification (ECN) in IP Networks",
RFC 2884, July 2000. RFC 2884, July 2000.
[RFC2914] Floyd, S., "Congestion Control Principles", BCP 41, [RFC2914] Floyd, S., "Congestion Control Principles", BCP 41,
RFC 2914, September 2000. RFC 2914, September 2000.
[RFC2923] Lahey, K., "TCP Problems with Path MTU Discovery", [RFC2923] Lahey, K., "TCP Problems with Path MTU Discovery",
RFC 2923, September 2000. RFC 2923, September 2000.
[RFC3135] Border, J., Kojo, M., Griner, J., Montenegro, G. and Z. [RFC3135] Border, J., Kojo, M., Griner, J., Montenegro, G., and Z.
Shelby, "Performance Enhancing Proxies Intended to Shelby, "Performance Enhancing Proxies Intended to
Mitigate Link-Related Degradations", RFC 3135, June 2001. Mitigate Link-Related Degradations", RFC 3135, June 2001.
[RFC3360] Floyd, S., "Inappropriate TCP Resets Considered Harmful", [RFC3360] Floyd, S., "Inappropriate TCP Resets Considered Harmful",
BCP 60, RFC 3360, August 2002. BCP 60, RFC 3360, August 2002.
[RFC3449] Balakrishnan, H., Padmanabhan, V., Fairhurst, G. and M. [RFC3449] Balakrishnan, H., Padmanabhan, V., Fairhurst, G., and M.
Sooriyabandara, "TCP Performance Implications of Network Sooriyabandara, "TCP Performance Implications of Network
Path Asymmetry", BCP 69, RFC 3449, December 2002. Path Asymmetry", BCP 69, RFC 3449, December 2002.
[RFC3481] Inamura, H., Montenegro, G., Ludwig, R., Gurtov, A. and F. [RFC3481] Inamura, H., Montenegro, G., Ludwig, R., Gurtov, A., and
Khafizov, "TCP over Second (2.5G) and Third (3G) F. Khafizov, "TCP over Second (2.5G) and Third (3G)
Generation Wireless Networks", BCP 71, RFC 3481, February Generation Wireless Networks", BCP 71, RFC 3481,
2003. February 2003.
[RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J. and W. [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W.
Stevens, "Basic Socket Interface Extensions for IPv6", Stevens, "Basic Socket Interface Extensions for IPv6",
RFC 3493, February 2003. RFC 3493, February 2003.
[RFC3819] Karn, P., Bormann, C., Fairhurst, G., Grossman, D., [RFC3819] Karn, P., Bormann, C., Fairhurst, G., Grossman, D.,
Ludwig, R., Mahdavi, J., Montenegro, G., Touch, J. and L. Ludwig, R., Mahdavi, J., Montenegro, G., Touch, J., and L.
Wood, "Advice for Internet Subnetwork Designers", BCP 89, Wood, "Advice for Internet Subnetwork Designers", BCP 89,
RFC 3819, July 2004. RFC 3819, July 2004.
[RFC4022] Raghunarayan, R., "Management Information Base for the [RFC4022] Raghunarayan, R., "Management Information Base for the
Transmission Control Protocol (TCP)", RFC 4022, March Transmission Control Protocol (TCP)", RFC 4022,
2005. March 2005.
10.6 Informative References Outside the RFC Series 11.6 Informative References Outside the RFC Series
[JK92] Jacobson, V. and M. Karels, "Congestion Avoidance and [JK92] Jacobson, V. and M. Karels, "Congestion Avoidance and
Control", This paper is a revised version of [Jac88], that Control", This paper is a revised version of [Jac88], that
includes an additional appendix. This paper has not been includes an additional appendix. This paper has not been
traditionally published, but is currently available at traditionally published, but is currently available at
ftp://ftp.ee.lbl.gov/papers/congavoid.ps.Z. 1992. ftp://ftp.ee.lbl.gov/papers/congavoid.ps.Z. 1992.
[Jac88] Jacobson, V., "Congestion Avoidance and Control", ACM [Jac88] Jacobson, V., "Congestion Avoidance and Control", ACM
SIGCOMM 1988 Proceedings, in ACM Computer Communication SIGCOMM 1988 Proceedings, in ACM Computer Communication
Review, 18 (4), pp. 314-329, August 1988. Review, 18 (4), pp. 314-329, August 1988.
[KP87] Karn, P. and C. Partridge, "Round Trip Time Estimation", [KP87] Karn, P. and C. Partridge, "Round Trip Time Estimation",
ACM SIGCOMM 1987 Proceedings, in ACM Computer Communication ACM SIGCOMM 1987 Proceedings, in ACM Computer Communication
Review, 17 (5), pp. 2-7, August 1987. Review, 17 (5), pp. 2-7, August 1987.
[MAF04] Medina, A., Allman, M. and S. Floyd, "Measuring the [MAF04] Medina, A., Allman, M., and S. Floyd, "Measuring the
Evolution of Transport Protocols in the Internet", ACM Evolution of Transport Protocols in the Internet", ACM
Computer Communication Review, 35 (2), April 2005. Computer Communication Review, 35 (2), April 2005.
[MM96] Mathis, M. and J. Mahdavi, "Forward Acknowledgement: [MM96] Mathis, M. and J. Mahdavi, "Forward Acknowledgement:
Refining TCP Congestion Control", ACM SIGCOMM 1996 Refining TCP Congestion Control", ACM SIGCOMM 1996
Proceedings, in ACM Computer Communication Review 26 (4), Proceedings, in ACM Computer Communication Review 26 (4),
pp. 281-292, October 1996. pp. 281-292, October 1996.
[SCWA99] Savage, S., Cardwell, N., Wetherall, D. and T. Anderson, [SCWA99] Savage, S., Cardwell, N., Wetherall, D., and T. Anderson,
"TCP Congestion Control with a Misbehaving Receiver", ACM "TCP Congestion Control with a Misbehaving Receiver", ACM
Computer Communication Review, 29 (5), pp. 71-78, October Computer Communication Review, 29 (5), pp. 71-78,
1999. October 1999.
Authors' Addresses Authors' Addresses
Martin Duke Martin Duke
Boeing Phantom Works Boeing Phantom Works
PO Box 3707, MC 3W-51 PO Box 3707, MC 3W-51
Seattle, WA 98124-2207 Seattle, WA 98124-2207
Phone: 253-657-8203 Phone: 253-657-8203
Email: mduke26@comcast.net Email: mduke26@comcast.net
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/