TCP congestion control

[2][3][4] Per the end-to-end principle, congestion control is largely a function of internet hosts, not the network itself.

There are several variations and versions of the algorithm implemented in protocol stacks of operating systems of computers that connect to the Internet.

For each connection, TCP maintains a CWND, limiting the total number of unacknowledged packets that may be in transit end-to-end.

Multiple flows using AIMD congestion control will eventually converge to use equal amounts of a contended link.

[6] In TCP, the congestion window (CWND) is one of the factors that determines the number of bytes that can be sent out at any time.

This means that if all segments are received and the acknowledgments reach the sender on time, some constant is added to the window size.

Slow start begins initially with a congestion window size (CWND) of 1, 2, 4 or 10 MSS.

While this is an acceptable assumption for many networks, segments may be lost for other reasons, such as poor data link layer transmission quality.

The naming convention for congestion control algorithms (CCAs) may have originated in a 1996 paper by Kevin Fall and Sally Floyd.

After a retransmit timeout, it records the highest sequence number transmitted in the recover variable and exits the fast recovery procedure.

University of Arizona researchers Larry Peterson and Lawrence Brakmo introduced TCP Vegas in which timeouts were set and round-trip delays were measured for every packet in the transmit buffer.

[20] TCP Vegas was not widely deployed outside Peterson's laboratory but was selected as the default congestion control method for DD-WRT firmware v24 SP2.

It is a receiver-side algorithm that employs a loss-based approach using a novel mechanism, called agility factor (AF).

TCP Proportional Rate Reduction (PRR)[27] is an algorithm designed to improve the accuracy of data sent during recovery.

In tests performed by Google, PRR resulted in a 3–10% reduction in average latency and recovery timeouts were reduced by 5%.

[30] While most CCAs are loss-based, in that they rely on packet loss to detect congestion and lower rates of transmission, BBR, like TCP Vegas, is model-based.

While Google's presentation shows BBRv1 co-existing well with CUBIC,[30] researchers like Geoff Huston and Hock, Bless and Zitterbart found it unfair to other streams and not scalable.

[35] Hock et al. also found "some severe inherent issues such as increased queuing delays, unfairness, and massive packet loss" in the BBR implementation of Linux 4.9.

[36] Soheil Abbasloo et al. (authors of C2TCP) show that BBRv1 doesn't perform well in dynamic environments such as cellular networks.

Version 2 attempts to deal with the issue of unfairness when operating alongside loss-based congestion management such as CUBIC.

There is also a variant, termed BBR.Swift, optimized for datacenter-internal links: it uses network_RTT (excluding receiver delay) as the main congestion control signal.

C2TCP aims to satisfy ultra-low latency and high-bandwidth requirements of applications such as virtual reality, video conferencing, online gaming, vehicular communication systems, etc.

Researchers at NYU[39] showed that C2TCP outperforms the delay and delay-variation performance of various state-of-the-art TCP schemes.

[11] Elastic-TCP was proposed in February 2019 to increase bandwidth utilization over high-BDP networks in support of cloud computing.

It is a receiver-side algorithm that employs a loss-delay-based approach using a novel mechanism called a window-correlated weighting function (WWF).

It has a high level of elasticity to deal with different network characteristics without the need for human tuning.

Elastic-TCP significantly improves the total performance in terms of average throughput, loss ratio, and delay.

[54] When the per-flow product of bandwidth and latency increases, regardless of the queuing scheme, TCP becomes inefficient and prone to instability.

They operate only on the binary feedback received upon congestion and do not assume any knowledge concerning the state of the networks which they manage.

Green box algorithms offer bimodal methods of congestion control which measures the fair share of total bandwidth which should be allocated for each flow, at any point, during the system's execution.