Sign in
Version 5.13.0, 2015-03-25
Report a bug

Laminar TCP and the case for refactoring TCP congestion control

Document type: Expired Internet-Draft (individual)
Document stream: No stream defined
Last updated: 2013-01-17 (latest revision 2012-07-16)
Intended RFC status: Unknown
Other versions: (expired, archived): plain text, pdf, html

Stream State:No stream defined
Document shepherd: No shepherd assigned

IESG State: Expired
Responsible AD: (None)
Send notices to: No addresses provided

This Internet-Draft is no longer active. A copy of the expired Internet-Draft can be found here:


The primary state variables used by all TCP congestion control algorithms, cwnd and ssthresh, are heavily overloaded, carrying different semantics in different states. This leads to excess implementation complexity and poorly defined behaviors under some combinations of events, such as application stalls during loss recovery. We propose a new framework for TCP congestion control, and to recast current standard algorithms to use new state variables. This new framework will not generally change the behavior of any of the primary congestion control algorithms when they are invoked in isolation. It will permit new algorithms with better behaviors in many corner cases, such as when two distinct primary algorithms are invoked concurrently. It will also foster the creation of new algorithms to address some events that are poorly treated by today's standards. For the vast majority of traditional algorithms the transformation to the new state variables is completely straightforward. However, the resulting implementation is likely to technically be in violation of existing TCP standards, even if it is fully compliant with their principles and intent.


Matt Mathis <>

(Note: The e-mail addresses provided for the authors of this Internet-Draft may no longer be valid)