WAN Optimization TCP Congestion
With the advent of more diverse networks coming online throughout the world it is inevitable that such networks will be bound by the laws of TCP (Transmission Control Protocol) that govern how reliable networks communicate. TCP provides the ability to guarantee the sending and receiving of segments as those segments traverse diverse networking paths. Basic fundamentals of TCP include the sliding window algorithm (TCP’s window field is used by the receiver to tell the sender how many bytes of data the receiver is willing to accept) to adjust dynamically to changing network latencies.
With more and more corporations/users coming online it is apparent that there is a great need of TCP congestion control. For every segment that is sent out, this segment is stored in a queue and awaits the acknowledgment of the segment. Should the segment acknowledgement not be received within the default time the segment would be transmitted once again.
When TCP transmits a segment the initial sender of the segment starts a timer (much like a TTL time for DNS) which logs and calculates how long it took for an acknowledgment for that segment to return from the receiving client. If an acknowledgement is returned before the time reaches zero the timer is reset. If an acknowledgement for the segment does not return within the timeout period, the sender will once again send the segment and double the retransmission timer value for each consecutive timeout (up to 64 seconds). If there are network problems such as flopping ISP lines or high latency lines (i.e.: satellite connections) segments may take a high amount of time to be successfully transmitted before the sender eventually times out the segment and generates an error. Crucial to TCP is the measurement of the round trip time between two communicating TCP hosts (referred to as the RTT or Round Trip Time). The round trip time may vary during the TCP connection as network traffic patterns fluctuate and as routes become available or unavailable due to latencies experienced on the line.
TCP (Transmission Control Protocol) uses a NCAA (network congestion avoidance algorithm) that includes aspects of an AIMD (additive increase/multiplicative decrease) scheme along with other schemes.
The TCP congestion avoidance algorithm is the primary basis for congestion control in the Internet.
Two of the major congestion control schemes are listed below:
Tahoe and Reno/NewReno
Tahoe was implemented in 1988 which included the following:
1 – Slow Start and Congestion Avoidance (Increases window size)
2 – Fast Retransmit (detects congestion)
One fault of the TCP congestion algorithm Tahoe TCP is that it is sensitive to packet loss. A 1% packet loss rate may cause up to a 75% decrease in throughput.
Reno was implemented around 1990 and included the following:
1 – Fast Recovery after Fast Retransmit
One of the problems with the TCP congestion algorithm Reno TCP is that if two or more segments are lost in the current window (sliding), Fast Recovery cannot retransmit all lost packets and TCP would have to wait for the retransmit timeout.
One of the enhancements that NewReno TCP brings to the aforementioned TCP congestion algorithm Reno TCP is that it improves performance against the loss of multiple packets. As before stated with two or more segments being lost the result can be a sever decrease in network performance. (The NewReno TCP congestion algorithm will also be a bit more aggressive to the retransmission of packets.)
A few other TCP congestion algorithms exist and are listed below.
TCP Congestion Algorithm - TCP Vegas
Until recently all of TCP's set timeouts and measured round trip delays were based upon only the last transmitted segment in the transmit buffer. TCP Vegas was introduced in which timeouts were set and round trip delays were measured for every segment in the transmit buffer.
TCP Congestion Algorithm - TCP Hybla
TCP Hybla eliminates the penalizing of TCP connections that incorporate a high latency terrestrial or ISP satellite link, due to their longer round trip times thus increasing the time it takes for segments to be transmitted and received. Due to these line types the RTT (Round Trip Time is greatly affected). Therefore the timers for TCP congestion control are increased and may have an overall effect on the network.
As the above shows many algorithms have been implemented to try and increase the speed and performance of TCP. This attempt is to keep intact the reliability of TCP as well as increase its performance wherever possible by not taxing networking lines with unneeded packets and the retransmission of packets. TCP congestion control schemes have been put in place to address these issues. As more and more users connect to the Internet and their local Internetworks, more and more segments traverse the already taxed Internet networking lines. With the diverse TCP congestion algorithms in place this will bring TCP to the new optimal world.