TCP Congestion Control
RFC 5681
Document | Type |
RFC - Draft Standard
(September 2009; Errata)
Obsoletes RFC 2581
|
|
---|---|---|---|
Authors | Ethan Blanton , Vern Paxson , Mark Allman | ||
Last updated | 2020-01-21 | ||
Stream | IETF | ||
Formats | plain text html pdf htmlized with errata bibtex | ||
Stream | WG state | (None) | |
Document shepherd | No shepherd assigned | ||
IESG | IESG state | RFC 5681 (Draft Standard) | |
Consensus Boilerplate | Unknown | ||
Telechat date | |||
Responsible AD | Lars Eggert | ||
Send notices to | (None) |
Network Working Group M. Allman Request for Comments: 5681 V. Paxson Obsoletes: 2581 ICSI Category: Standards Track E. Blanton Purdue University September 2009 TCP Congestion Control Abstract This document defines TCP's four intertwined congestion control algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. In addition, the document specifies how TCP should begin transmission after a relatively long idle period, as well as discussing various acknowledgment generation methods. This document obsoletes RFC 2581. Status of This Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Copyright Notice Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents in effect on the date of publication of this document (http://trustee.ietf.org/license-info). Please review these documents carefully, as they describe your rights and restrictions with respect to this document. This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may Allman, et al. Standards Track [Page 1] RFC 5681 TCP Congestion Control September 2009 not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English. Table Of Contents 1. Introduction ....................................................2 2. Definitions .....................................................3 3. Congestion Control Algorithms ...................................4 3.1. Slow Start and Congestion Avoidance ........................4 3.2. Fast Retransmit/Fast Recovery ..............................8 4. Additional Considerations ......................................10 4.1. Restarting Idle Connections ...............................10 4.2. Generating Acknowledgments ................................11 4.3. Loss Recovery Mechanisms ..................................12 5. Security Considerations ........................................13 6. Changes between RFC 2001 and RFC 2581 ..........................13 7. Changes Relative to RFC 2581 ...................................14 8. Acknowledgments ................................................15 9. References .....................................................15 9.1. Normative References ......................................15 9.2. Informative References ....................................16 1. Introduction This document specifies four TCP [RFC793] congestion control algorithms: slow start, congestion avoidance, fast retransmit and fast recovery. These algorithms were devised in [Jac88] and [Jac90]. Their use with TCP is standardized in [RFC1122]. Additional early work in additive-increase, multiplicative-decrease congestion control is given in [CJ89]. Note that [Ste94] provides examples of these algorithms in action and [WS95] provides an explanation of the source code for the BSD implementation of these algorithms. In addition to specifying these congestion control algorithms, this document specifies what TCP connections should do after a relatively long idle period, as well as specifying and clarifying some of the issues pertaining to TCP ACK generation. This document obsoletes [RFC2581], which in turn obsoleted [RFC2001]. This document is organized as follows. Section 2 provides various definitions that will be used throughout the document. Section 3 provides a specification of the congestion control algorithms. Section 4 outlines concerns related to the congestion control algorithms and finally, section 5 outlines security considerations.Show full document text