TCP Congestion Control
An Introduction
Prof. David Bernstein
James Madison University
Computer Science Department
bernstdh@jmu.edu
Motivation
History:
In the late 1980s congestion became a serious problem (leading to many dropped packets)
Kinds of Responses:
Pre-allocate resources to avoid congestion
Detect congestion and control it when it occurs
Where to Manage Resources
Routers in the Network:
This is a queueing problem
Hosts at the Edges:
This is a transport protocol issue
Congestion and Window Size
Smaller Window:
Fewer packets "in flight"
Larger Window:
More packets "in flight"
TCP Tahoe
History:
Van Jacobson (1988)
Components:
Additive Increase, Multiplicative Decrease (AIMD)
Slow Start
Fast Retransmit
TCP Tahoe (cont.)
AIMD:
Increase the size of the congestion window by a fixed increment (e.g., one packet) for each successful round trip
Divide the size of the congestion window by 2 each time there is a timeout (or four ACKS for a given segment -- an
implicit loss event
)
Slow Start:
Start with a congestion window size of 1
Use additive increase until there's a timeout or a threshold is exceeded
Fast Retransmit:
Send an ACK for each packet
Send a duplicate ACK when a packet is received out of order
Use duplicate ACKs to force retransmission
TCP Reno (and Derivatives)
Startup:
Don't use slow start; use the last successful congestion window instead.
Consecutive Packet Drops:
Use slow start (to try and determine the available capacity)
In Case of Fast Retransmit:
Decrease size of congestion window by 2
Retransmission Timers in Tahoe/Reno
Calculate the mean and variance of the round trip transmission times
The retransmission interval is based on the mean and the variance
TCP Vegas
The Concept:
Predict the onset of congestion and react accordingly
Possible Congestion Indicators:
Increasing round trip time
Flat sending rate
Aside: Congestion Avoidance in Routers
DECbit:
Router uses the queue length to predict congestion
Use a congestion bit in the packet header to inform hosts
Random Early Detection (RED):
Drop packets (probabilistically) before the queue becomes full (which will result in a TCP timeout)
RED with In and Out (RIO):
Categorize packets and drop the low priority (a.k.a., out of profile) packets before the high priority (a.k.a., in profile) packets
There's Always More to Learn