%% You should probably cite draft-mathis-tcpm-tcp-laminar-01 instead of this revision. @techreport{mathis-tcpm-tcp-laminar-00, number = {draft-mathis-tcpm-tcp-laminar-00}, type = {Internet-Draft}, institution = {Internet Engineering Task Force}, publisher = {Internet Engineering Task Force}, note = {Work in Progress}, url = {https://datatracker.ietf.org/doc/draft-mathis-tcpm-tcp-laminar/00/}, author = {Matt Mathis}, title = {{Laminar TCP and the case for refactoring TCP congestion control}}, pagetotal = 14, year = 2012, month = feb, day = 21, abstract = {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 loss recovery during cwnd validation. 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 invoked in isolation but will to 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 will technically be in violation of all existing TCP standards, even if it is fully compliant with their principles and intent.}, }