[e2e] Transport Protocol Road Map(s)
martin.duke at boeing.com
Fri Sep 19 10:34:02 PDT 2003
I quickly incorporated some of the suggestions that already arrived.
I'll be away for the next week, but I'll address comments as soon as I
Aside from the feedback points I requested previously, some other things
- What is the appropriate status of this document? Is it a readme on
the IETF website? An RFC itself? In what capacity does it become a
- Is there some housecleaning that needs to be done? I think 2581 and
2988 should become standards. If someone has proposed a TCP option,
where the syntax is universally accepted, does that make it a standard
(I have 1323 in mind)? Any EXPERIMENTALs that should become PROPOSED
Section 6.2 of RFC 2026 indicates that proposed standards may be
sunset after 24 months and reviewed annually thereafter. I think there
are a few listed below which deserve this treatment.
Summary of TCP RFCs
This Document lists the Requests for Comment (RFC) of importance to
implementers of TCP. An effort has been made to exclude RFCs that are
obsolete or irrelevant, while distinguishing standards that MUST be
followed by TCP from various proposals that MAY be implemented.
The intent of this document is twofold. First, it provides the novice
to TCP with a brief summary of the relevant IETF-approved documents that
summarize the "state" of TCP. Second, it is a snapshot of the current
status of these proposals so that the community at large can more easily
initiate action to update the status of old RFCs.
This document consists of three parts:
(1) A list of the RFCs that lay out the basic specifications for TCP;
(2) A list of various proposals, some of which are broadly deployed in
the internet, that are alive in the IETF and that may be implemented in
some TCP stacks;
(3) suggestions to optimize implementations, particularly for specific
(4) Studies of TCP performance in specific environments or with
particular modifications; and
(5) Tutorials and tools for the TCP implementor.
Each RFC number has a letter code after it indicating its status in the
IETF. The codes are:
S - Standard
P - Proposed Standard
E - Experimental
B - Best Current Practice
I - Informational
The status of each RFC does not necessarily reflect how it is
categorized below. For instance, even though RFC 2581 is a "Proposed
Standard," it is virtually universally employed, and TCP proposals are
informally expected to show that they are fair to the congestion control
mechanism explained it. Also, some "Informational" RFCs actually
contain proposals about ways to change TCP.
0793S "Transmission Control Protocol" (Sep 81): The core document that
describes the semantics of data transmission, reliability, flow control,
multiplexing, acknowledgement, precedence, and security.
1122S "Requirements for Internet Hosts - Communication Layers" (Oct 89):
update and clarification of RFC 793.
1213S "Management Information Base for Network Management of
TCP/IP-based internets:MIB-II" (Mar 91): the data fields that a TCP
implementation is required to keep track of.
2581P "TCP Congestion Control" (Apr 99): Latest version of standards in
sender rate control.
2988P "Computing TCP's Retransmission Timer" (Nov 00): specifies
algorithm for computing the RTO.
1144P "Compressing TCP/IP headers for low-speed serial links" (Feb 90):
not many people have this problem anymore.
1146E "TCP alternate checksum options" (Mar 90): for those who insist
that the standard checksum algorithm is insufficiently robust.
1323P "TCP Extensions for High Performance" (May 92): introduces window
scaling, timestamps, and protection against wrapped sequence numbers for
long, fat pipes. Implemented in Linux and BSD; a non-default option in
1337I "TIME-WAIT Assassination Hazards in TCP" (May 92): resolves some
bad corner cases at connection close.
1644E "T/TCP -- TCP Extensions for Transactions Functional
Specification" (Jul 94)
1693E "An Extension to TCP: Partial Order Service" (Nov 94): for
applications where total reliability isn't necessary.
2012P "SNMPv2 Management Information Base for the Transmission Control
Protocol using SMIv2" (Nov 96): an extension to the MIB to support IPv6.
2018P "TCP Selective Acknowledgement Options" (Oct 96): introduces SACK.
2140I "TCP Control Block Interdependence" (Apr 97): enables TCP
connections to share information. Partially implemented in Linux.
2452P "IP Version 6 Management Information Base for the Transmission
Control Protocol" (Dec 98): further MIB extensions for IPv6.
2582E "The NewReno Modification to TCP's Fast Recovery Algorithm" (Apr
99): tweaks to congestion control.
2861E "TCP Congestion Window Validation" (Jun 00): decays congestion
window if it hasn't been recently utilized.
2873P "TCP Processing of the IPv4 Precendence Field" (Jun 00): resolves
a conflict between different uses of bits in the IP header.
2883P "An Extension to the Selective Acknowledgement (SACK) Option for
TCP" (Jul 00): introduces the concept of duplicate SACK.
3042P "Enhancing TCP's Loss Recovery Using Limited Transmit" (Jan 01): a
means of avoiding coarse timeouts when the window is small.
3168P "The Addition of Explicit Congestion Notification (ECN) to IP"
(Sep 01): a means of detecting congestion without resorting to loss.
3390P "Increasing TCP'S Initial Window" (Oct 02): starts with a larger
window, given larger modern bandwidths.
3465E "TCP Congestion Control with Appropriate Byte Counting (ABC)" (Feb
03): congestion control uses number of bytes acknowledged rather than
number of acknowledgements received. Implemented in Linux.
3493I "Basic Socket Interface Extensions for IPv6" (Feb 03)
3517P "A Conservative Selective Acknowledgement (SACK)-based Loss
Recovery Algorithm for TCP" (Apr 03): tweaks the response to SACK.
3522E "The Eifel Detection Algorithm for TCP" (Apr 03): uses timestamps
to detect spurious timeouts.
3540E "Robust Explicit Congestion Notificaiton (ECN) signaling with
Nonces" (Jun 03): re-introduces ECN with security concerns addressed.
IV. BEST PRACTICE NOTES
2488B "Enhancing TCP Over Satellite Channels using Standard Mechanisms
2525I "Known TCP Implementation Problems" (Mar 99)
3155B "End-to-end Performance Implications of Links with Errors" (Aug
3360B "Inappropriate TCP Resets Considered Harmful" (Aug 02)
3449B "TCP Performance Implications of Network Path Asymmetry" (Dec 02)
3481B "TCP over Second (2.5G) and Third (3G) Generation Wireless
Networks" (Feb 03)
V. CASE STUDIES
2415I "Simulation Studies of Increased Initial TCP Window Size" (Sep 98)
2416I "When TCP Starts Up With Four Packets Into Only Three Buffers"
2760I "Ongoing TCP Research Related to Satellites" (Feb 00)
2884I "Performance Evaluation of Explicit Congestion Notification (ECN)
in IP Networks" (Jul 00)
2923I "TCP Problems with Path MTU Discovery" (Sep 00)
2963I "A Rate Adaptive Shaper for Differentiated Services" (Oct 2000):
optimizing TCP performance in the presence of a DiffServ scheme.
3135I "Performance Enhancing Proxies Intended to Mitigate Link-Related
Degradations" (Jun 01)
VI. TOOLS AND TUTORIALS
1180I "TCP/IP tutorial" (Jan 91): the basics
1379I "Extending TCP for Transactions -- Concepts" (Nov 92)
1470I "FYI on a Network Management Tool Catalog: Tools for Monitoring
and Debugging TCP/IP Internets and Interconnected Devices" (Jun 93)
2151I "A Primer on Internet and TCP/IP Tools and Utilities" (Jun 97)
2398I "Some Testing Tools for TCP Implementors" (Aug 98)
More information about the end2end-interest