TCP CONGESTION CONTROL
Dr.Nalina V
• One key takeaway was that a transport protocol using an AIMD
(Additive Increase Multiplicative Decrease) control law in response to
binary congestion signals from the network would converge to a fair
and efficient bandwidth allocation. TCP congestion control is based
on implementing this approach using a window and with packet loss
as the binary signal.
• To do so, TCP maintains a congestion window whose size is the
number of bytes the sender may have in the network at any time.
• The corresponding rate is the window size divided by the round-trip
time of the connection. TCP adjusts the size of the window according
to the AIMD rule.
• Fig. 6-43 shows what happens when a sender on a fast network (the
1-Gbps link) sends a small burst of four packets to a receiver on a
slow network (the 1-Mbps link) that is the bottleneck or slowest part
of the path. Initially the four packets travel over the link as quickly as
they can be sent by the sender. At the router, they are queued while
being sent because it takes longer to send a packet over the slow link
than to receive the next packet over the fast link. But the queue is not
large because only a small number of packets were sent at once. Note
the increased length of the packets on the slow link. The same
packet, of 1 KB say, is now longer because it takes more time to send
it on a slow link than on a fast one.
• This algorithm is called slow start, but it is not slow at all—it is
exponential growth—except in comparison to the previous algorithm
that let an entire flow control window be sent all at once. Slow start
is shown in Fig. 6-44. In the first round-trip time, the sender injects
one packet into the network (and the receiver receives one packet).
Two packets are sent in the next round-trip time, then four packets in
the third round-trip time.
• An illustration of the congestion algorithm we have built up so far is
shown in Fig. 6-46. This version of TCP is called TCP Tahoe. The
maximum segment size here is 1 KB.Initially, the congestion window
was 64 KB, but a timeout occurred, so the threshold is set to 32 KB
and the congestion window to 1 KB for transmission 0. The
congestion window grows exponentially until it hits the threshold (32
KB).
• The window is increased every time a new acknowledgement arrives
rather than continuously, which leads to the discrete staircase
pattern. After the threshold is passed, the window grows linearly. It is
increased by one segment every RTT.
TCP RENO
• TCP Reno with its mechanisms for adjusting the congestion window has
formed the basis for TCP congestion control for more than two decades.
Most of the changes in the intervening years have adjusted these
mechanisms in minor ways, for example, by changing the choices of the
initial window and removing various ambiguities.
• Some improvements have been made for recovering from two or more
losses in a window of packets. For example, the TCP NewReno version uses
a partial advance of the acknowledgement number after a retransmission
to find and repair another loss. Since the mid-1990s, several variations
have emerged that follow the principles we have described but use slightly
different control laws. For example, Linux uses a variant called CUBIC TCP
and Windows includes a variant called Compound TCP.
• The second change is the use of ECN (Explicit Congestion Notification) in addition
to packet loss as a congestion signal. ECN is an IP layer mechanism to notify hosts
of congestion.
• With it, the TCP receiver can receive congestion signals from IP. The use of ECN is
enabled for a TCP connection when both the sender and receiver indicate that
they are capable of using ECN by setting the ECE and CWR bits during connection
establishment.
• If ECN is used, each packet that carries a TCP segment is flagged in the IP header
to show that it can carry an ECN signal. Routers that support ECN will set a
congestion signal on packets that can carry ECN flags when congestion is
approaching, instead of dropping those packets after congestion has occurred.
• The TCP receiver is informed if any packet that arrives carries an ECN congestion
signal. The receiver then uses the ECE (ECN Echo) flag to signal the TCP sender
that its packets have experienced congestion. The sender tells the receiver that it
has heard the signal by using the CWR (Congestion Window Reduced) flag.