Transmission Control Protocol (TCP) uses a network congestion avoidance algorithm that encompasses various aspects of supplemental enhancement enhancement/multiplication (AIMD) schemes, with other schemes such as slow-start and bottlenecks for achieve congestion avoidance. TCP congestion-avoidance algorithm is the primary basis for congestion control on the Internet. As per end-to-end principle, congestion control is largely a function of the internet host, not the network itself. There are several variations and versions of the algorithm that are implemented in the computer operating system protocol stack connected to the Internet.
Video TCP congestion control
Operation
To avoid congestive collapse, TCP uses a multi-faceted congestion control strategy. For each connection, TCP maintains a congestion window, limiting the number of unacknowledged packets possible on an end-to-end journey. This is somewhat analogous to the TCP sliding window used for flow control. TCP uses a mechanism called slow start to increase the congestion window after the connection is initialized or after a timeout. It starts with a window with a small multiple of the maximum segment size (MSS) in size. Although the initial level is low, the rate of improvement is very rapid; for each recognized packet, the congestion window increases by 1 MSS so that the congestion window multiplies effectively for each round-trip time (RTT).
When the congestion window exceeds the slow start threshold, ssthresh , the algorithm enters a new state, called congestion avoidance. In case of congestion avoidance, as long as a non-duplicate ACK is received, the congestion window will be positively enhanced by one MSS each time round-trip.
Maps TCP congestion control
The congestion window
In TCP, the congestion window is one of the factors that determines the number of bytes that can be circulated at any time. The congestion window is guarded by the sender. Note that this is not to be confused with the size of the sliding window managed by the recipient. The congestion window is a means to stop the connection between sender and receiver from overloading with too much traffic. This is calculated by estimating how many bottlenecks are in the link.
When the connection is set, the congestion window, the value that is maintained independently on each host, is set to a small multiple of the allowed MSS on the connection. Further variations in the congestion window are dictated by the AIMD approach. This means that if all segments are received and thanks reach the sender on time, some constants are added to the window size. When the window reaches ssthresh . After the sender reaches this threshold, the congestion window increases linearly at the segment 1/(congestion window) level at each new acceptable reception. The window keeps growing until the time runs out. Time has run out:
- The congestion window is reset to 1 MSS.
- ssthresh is set to half the size of the congestion window before the deadline.
- slow start begins.
The system administrator can adjust the maximum window size limit, or adjust the constants added during additive additions, as part of TCP tuning.
The flow of data through a TCP connection is also controlled by the use of receiving windows advertised by the recipient. By comparing its own congestion window with the receive window, the sender can specify how much data can be sent at any given time.
Start slow
Slow-start is part of the congestion control strategy used by TCP, the data transmission protocol used by many Internet applications. Slow-start is used in conjunction with other algorithms to avoid transmitting more data than transmitting networks, that is, to avoid causing network congestion. This algorithm is determined by RFC 5681.
Starting slow starts initially with a congestion window size (cwnd) of 1, 2, 4 or 10 MSS. The value of the Congestion Window will be enhanced by one with each acknowledgment (ACK) received, effectively doubling the window size every time round-trip ("though not exactly exponential because the receiver can delay its ACK, usually sending one ACK for each two segments be accepted "). The transmission rate will be increased with a slow-start algorithm until the loss is detected, or the advertised receiver window (rwnd) is the limiting factor, or ssthresh is reached. If a loss event occurs, TCP assumes that it is due to network congestion and takes steps to reduce the burden offered on the network. This measurement depends on the TCP congestion avoidance algorithm used. After ssthresh is reached, TCP changes from the slow-start algorithm to a linear growth algorithm (congestion avoidance). At this point, the window is raised by 1 segment for each round-trip delay (RTT).
Although this strategy is referred to as "Slow-Start", its congestion window growth is quite aggressive, more aggressive than the congestion avoidance phase. Before slow-start was introduced in TCP, the early pre-congestion avoidance phase was even faster.
The behavior in packet loss depends on the TCP congestion avoidance algorithm used.
- TCP Tahoe
- In TCP Tahoe, when a loss occurs, fast delivery is sent, half of the current CWND is saved as ssthresh and starts slowly starting again from the initial CWND. After CWND reaches ssthresh , TCP changes to a congestion avoidance algorithm where every new ACK increases CWND by MSS/CWND. This results in a linear increase from CWND.
- TCP Reno
- TCP Reno implements an algorithm called quick recovery. Fast delivery is sent, half of the CWND is currently stored as ssthresh and as the new CWND, so skip the slow start and go straight to the congestion avoidance algorithm.
Start slowly assumes that unrecognized segment is due to network congestion. While this is an acceptable assumption for many networks, segments may be lost for other reasons, such as poor data link layer transmission quality. Thus, slow startups may perform poorly in situations with poor reception, such as wireless networks.
Slow start protocols perform poorly for short-lived connections. Older web browsers will make many short short connections to the web server, and will open and close connections for each file requested. It stores most of the connections in slow start mode, which results in poor response time. To avoid this problem, modern browsers open multiple connections simultaneously or reuse one connection for all requested files from a particular web server. However, the connection can not be reused for some third-party servers used by websites to implement web advertising, shared social networking service features, and web analytics counter scripts.
Improved additives/multiplication multiplication
Additive additon/multiplication (AIMD) algorithm is a feedback control algorithm. AIMD combines linear growth from the congestion window with exponential reductions when congestion occurs. Some streams using AIMD congestion control will eventually merge to use the same amount of links spent.
Fast retransmit
Fast retransmit is a TCP enhancement that reduces the sender's waiting time before retransmitting the missing segment.
The TCP sender uses a self-timer to identify missing segments. If the acknowledgment is not received for a particular segment within the specified time (a function of the estimated round-trip delay), the sender will assume the segment is lost in the network, and will resend the segment.
Duplicate acknowledgment is the basis for a fast retransmit mechanism that functions as follows: after receiving the packet (eg in sequence number 1), the receiver sends the recognition by adding 1 to the sequence number (ie the recognition number 2) meaning that the receiver receives packet number 1 and expects the packet the number 2 of the sender. Suppose the next three packets have been lost. In the meantime the receiver receives the packet number 5 and 6. After receiving packet number 5, the receiver sends the acknowledgment, but still only for serial number 2. When the receiver receives packet number 6, it sends again the recognition value 2. Because the sender receives more than one acknowledgment with the same sequential number (2 in this example) is called duplicate recognition .
A quick retransmit upgrade works as follows: if the TCP sender receives a certain number of thanksgiving usually set to three duplicate greetings with the same recognition number (ie, a total of four acknowledgments with the same recognition number), the sender can be reasonably confident that segment with the next higher serial number dropped, and will not exit the order. The sender will then resend the missing packet before waiting for the deadline.
Algorithm
The name "TCP Foo" for the algorithm appears to be derived from a 1996 paper by Kevin Fall and Sally Floyd.
The following is one classification that may correspond to the following properties:
- the type and amount of feedback received from the network
- incremental inaction on the Internet today
- performance aspect that aims to improve: high bandwidth-delay product network (B); lossy links (L); justice (F); advantage for short-circuit (S); variable-rate links (V); speed of convergence (C)
- the criteria of justice it uses
Some of the well known mechanisms for congestion avoidance are classified by this scheme as follows:
TCP Tahoe and Reno
Both algorithms are retrospectively named after the 4.3BSD operating system in June 1986 where each first appeared (which was named after Lake Tahoe and the nearby city of Reno, Nevada). The "Tahoe" algorithm first appeared in 4.3BSD-Tahoe (created to support CCI Power 6/32 "Tahoe" minicomputer), and made available to non-AT licensees & as part of the 4.3BSD Network Release 1; this ensures its wide distribution and application. Improvements were made in 4.3BSD-Reno and then released to the public as Networking Release 2 and then 4.4BSD-Lite.
While both consider retransmission (RTO) breaks and ACK duplicates as packet loss events, Tahoe and Reno's behavior differs mainly in how they react to duplicate ACK:
- Tahoe: If three ACK duplicates are received (ie four ACKs that recognize the same packet, which does not overwhelm the data and does not change the advertiser's advertised window), Tahoe re-transmits quickly, setting the slow threshold to half the current congestion window, reducing the window congestion to 1 MSS, and reset to a slow initial state.
- Reno: If three duplicate ACKs are received, Reno will perform a fast retransmit and pass through a slow start phase by halving the congestion window (instead of setting it to 1 MSS like Tahoe), setting the slow start threshold equal to the new congestion window, and entering a phase called quick recovery .
Both in Tahoe and Reno, if ACK is out of time (RTO timeout), it starts slowly in use, and both algorithms reduce the window congestion to 1 MSS.
Quick recovery (Reno only)
Under these circumstances, TCP retransmits the missing packet marked by three duplicate ACKs, and waits for recognition of the entire transmission window before returning to congestion avoidance. If there is no recognition, TCP Reno has a time limit and enters a slow start state.
TCP Vegas
Until the mid-1990s, all TCP delays and round-trip delays were measured only based on the last transmission packet in the transmission buffer. Researchers from the University of Arizona, Larry Peterson and Lawrence Brakmo introduced TCP Vegas, named after the largest Nevada city, where timeouts are set and round-trip delays are measured for each packet in the transmission buffer. Additionally, TCP Vegas uses an additional addition in the jam window. This variant is not widely used outside of Peterson's lab. In a comparative study of various TCP congestion control algorithms, TCP Vegas appears to be the most refined followed by TCP CUBIC.
TCP Vegas is used as the default congestion control method for the DD-WRT v24 SP2 firmware.
TCP New Reno
TCP New Reno, defined by RFC 6582 (which obscures the previous definitions in RFC 3782 and RFC 2582), improves retransmission during the rapid recovery phase of TCP Reno. During a quick recovery, for every duplicate ACK that is returned to TCP New Reno, a new unsent packet from the end of the congestion window is sent, to keep the transmission window full. For each ACK that makes partial progress in the sequence space, the sender assumes that the ACK points to a new hole, and the next packet outside the sequence number of the ACK is sent.
Since the timer timer is reset every time there is an improvement in the transmission buffer, this allows New Reno to fill a large hole, or multiple holes, in sequence space - such as TCP SACK. Because New Reno can send new packets at the end of the congestion window during a quick recovery, high throughput is maintained during the hole filling process, even when there are multiple holes, from several packets each. When TCP enters a speedy recovery, it records the highest unrecorded packet sequence number highest. When this serial number is recognized, TCP returns to a state of congestion avoidance.
There was a problem with New Reno when no packets were lost but vice versa, the packets were reordered by more than 3 serial numbers of packets. When this happens, New Reno mistakenly enters a quick recovery, but when the archived packet is sent, the ACK sequence number occurs and from there until the end of fast recovery, every bit of the progress sequence produces duplicate and unnecessary transmissions that are immediately ACKed.
New Reno performs as well as SACK at a low packet error rate, and substantially beat Reno at a high error rate.
TCP Hybla
TCP Hybla aims to eliminate the punishment of TCP connections that incorporate terrestrial or satellite high-level radio connections, due to longer travel times. This comes from an analytical evaluation of the congestion window dynamics, which indicates the modifications required to remove performance dependence on the RTT.
TCP BIC
Binary Enhancement Control bottleneck is a TCP implementation with a congestion control algorithm optimized for high-latency high-speed networks (called LFN , long fat networks, in RFC 1072). BIC is used by default in the Linux 2.6.8 to 2.6.18 kernels.
TCP CUBIC
CUBIC is a less aggressive and more systematic derivative of the BIC, where windows is a cubic function of time since the last congestion event, with an inflection point set to the window before the event. CUBIC is used by default in the Linux kernel between versions 2.6.19 and 3.2.
Agile-SD TCP
Agile-SD is a Linux-based Congestion Control Algorithm (CCA) designed for the original Linux kernel. This is a receiver-side algorithm using a loss-based approach using a new mechanism, called Agility Factor (AF). It has been proposed by Mohamed A. Alrshah et al. to increase bandwidth utilization through high-speed networks and short distances (low-BDP networks) such as local area networks or fiber-optic networks, especially when small buffer sizes are applied. It has been evaluated by comparing its performance with Compound-TCP (default CCA in MS Windows) and CUBIC (standard Linux) using NS-2 simulator. This increases the total performance up to 55% in terms of average throughput.
TCP Westwood
Westwood is a sender-only modification of the Reno TCP protocol stack that optimizes the performance of TCP congestion control over wireline and wireless networks. TCP Westwood is based on an approximate end-to-end bandwidth to set the congestion window and the threshold starts slowly after a jamming episode, that is, after three duplicate or deadline greetings. The bandwidth is estimated with the correct low-pass filtering rate of return of the recognition packet. The rationale for this strategy is simple: in contrast to Reno's TCP, which divides half the congestion windows after three duplicate ACKs, TCP Westwood adaptively sets a slow start threshold and a congestion window that takes into account the bandwidth used during the congestion experienced.. TCP Westwood significantly improves throughput through wireless connection and reasonableness compared to TCP Reno/New Reno in wired networks.
Compound TCP
Compound TCP is a TCP implementation of Microsoft that manages two different congestion windows simultaneously, with the goal of achieving good performance on the LFN while not destroying justice. It has been widely used in Windows versions since Microsoft Windows Vista and Windows Server 2008 and has been moved to older versions of Microsoft Windows as well as Linux.
Proportional Value Reduction TCP
TCP Proportional Rate Reduction (PRR) is an algorithm designed to improve the accuracy of data transmitted during recovery. The algorithm ensures that the window size after recovery is as close as possible to a slow starting threshold. In tests conducted by Google, PRR resulted in a 3-10% reduction in average latency and reduced recovery time by 5%. PRR is used by default in the Linux kernel since version 3.2.
TCP BBR
Bottleneck Bandwidth and Round-trip propagation time (BBR) is a TCP congestion control algorithm developed at Google in 2016. While most loss-based congestion control algorithms, in this case they depend on packet loss as a signal to lower transmission rates, BBR is a model based. This algorithm uses maximum bandwidth and round-trip times in which the network delivers the latest flight of data packets out to build explicit network models. Any cumulative or selective recognition of packet deliveries produces a level sample that records the amount of data transmitted during the time interval between packet data transmission and packet recognition. Because network interface controllers evolve from megabits per second to gigabit per second performance, packet loss should no longer be considered a key determinant of identifying bottlenecks, creating congestion-based control algorithms that provide higher throughput and lower latency, such as BBR, a more reliable alternative to more popular algorithms like CUBIC.
When implemented in YouTube, BBR generates an average network throughput of 4% higher and up to 14% in some countries.
BBR is also available for QUIC and Linux TCP on Linux 4.9.
According to Geoff Huston BBR is efficient and fast, but very unfair to other non-BBR streams. He calls it "immeasurable" and says it "has the ability to slaughter a stream of concurrent losses". Hock, Bless and Zitterbart evaluate BBR implementation in Linux 4.9. If used with a single stream, they confirm the claimed feature, but also find "some severely inherent problems such as increased queue delay, injustice, and massive packet loss".
Other TCP congestion avoidance algorithms
- TCP FAST
- TCP FAST General
- H-TCP
- TCP Data Center
- High Speed ââTCP
- HSTCP-LP
- TCP-Illinois
- TCP-LP
- TCP SACK
- Scalable TCP
- TCP Veno
- Westwood
- XCP
- YeAH-TCP
- TCP-FIT
- Confidentiality Destruction with Normative Time Interval (CANIT)
- Non-linear neural network congestion control based on genetic algorithm for TCP/IP network
TCP New Reno is the most commonly applied algorithm, SACK support is very common and is an extension to Reno/New Reno. Most other competing proposals still require evaluation. Starting with 2.6.8 the Linux kernel changed the default implementation from New Reno to BIC. The default implementation again turned into CUBIC in version 2.6.19. FreeBSD uses New Reno as the default algorithm. However, it supports a number of other options.
As product per-stream bandwidth and latency increase, regardless of queue scheme, TCP becomes inefficient and vulnerable to instability. This is becoming increasingly important as the Internet evolves to incorporate high-bandwidth optical links.
TCP Interactive (iTCP) allows applications to subscribe to TCP events and respond accordingly which allows various functional extensions to TCP from outside the TCP layer. Most TCP congestion schemes work internally. iTCP also allows advanced applications to directly participate in congestion controls such as controlling the rate of generation of sources.
Zeta-TCP detects bottlenecks from both latency and loss-level measurements, and implements different congestion bottlenecks strategies based on the possibility of congestion to maximize goodput. It also has several other fixes to accurately detect packet loss, avoiding retransmission timeout retransmission; and speeding/controlling incoming traffic (download).
Network-based classification
The congestion control algorithm is classified in terms of network awareness, which means the extent to which the algorithm is aware of the state of the network, and consists of three main categories: black boxes, gray boxes, and green boxes.
The black box algorithm offers a method of blind control congestion. They only operate on received binary feedback on congestion and do not assume knowledge of the state of the network they manage.
Gray gray algorithm uses time-sampling to obtain measurements and bandwidth estimates, flow of contention, and other knowledge of network conditions.
The green box algorithm offers a bimodal method of congestion control that measures the fair share of total bandwidth that must be allocated to each stream, at any point, during system execution.
Black box
- Highspeed-TCP
- The BIC TCP (Binary Increase Congestion Control Protocol) uses concrete improvements from the source level after each congestion event until the window is equal to before the event, to maximize network usage time completely. After that, he checked aggressively.
- CUBIC TCP - a less aggressive and more systemic BIC derivative, where windows is a cubic function of time since the last congestion event, with an inflection point set to the window before the event.
- AIMD-FC (Additive Enhance Multiplicative Decrease with Fast Convergence), AIMD enhancement.
- Binomial Mechanism
- SIMD Protocol
- GAIMD
Gray box
- TCP Vegas - estimates the queue delay, and linearly increases or decreases the window so that a number of packets constant per stream are queued up in the network. Vegas applies proportional justice.
- TCP FAST - achieves the same equilibrium as Vegas, but uses proportional control instead of a linear increase, and intentionally scales the gain down as bandwidth increases in order to ensure stability.
- TCP-Westwood (TCPW) - the loss causes the window to be reset to the expected sender of the bandwidth delay product, which is the smallest RTT time measured from the received ACK receiver rate.
- TFRC
- TCP-Real
- TCP-Jersey
Greenbox
- The Bimodal Mechanism - The Mechanism of Avoidance and Control of Bimodal Kongesti.
- The signaling method is applied by the router
- Random Detection (RED) randomly drops packets proportionately to the size of the router queue, triggering multiplicative reductions in multiple streams.
- Honest Traffic Notice (ECN)
- Network-Assisted Congestion Control
- VCP - The variable structure congestion control protocol (VCP) uses two ECN bits to explicitly feed back on the network status of the congestion. This includes the host end side algorithm as well.
Source of the article : Wikipedia