This document describes four key TCP algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. These algorithms have not been fully documented as Internet standards. RFC 1122 requires TCP to implement slow start and congestion avoidance, but fast retransmit and fast recovery were added later. The purpose of this document is to document these algorithms for the Internet.
Slow start is used to avoid overwhelming the network by starting with a small number of segments and exponentially increasing the number of segments sent until the network capacity is reached. Congestion avoidance is used to prevent network congestion by gradually increasing the number of segments sent. Fast retransmit and fast recovery are used to quickly retransmit lost packets without waiting for a timeout. Fast retransmit detects lost packets through duplicate ACKs and retransmits the missing segment. Fast recovery then adjusts the congestion window to continue sending data without entering slow start.
The four algorithms are implemented together, with congestion avoidance and slow start being independent but complementary. Congestion avoidance and slow start require maintaining two variables: congestion window (cwnd) and slow start threshold (ssthresh). When congestion occurs, cwnd is reduced and slow start is used to increase it again. Fast retransmit and fast recovery are implemented together, with fast recovery adjusting the congestion window to continue sending data without entering slow start.
The fast retransmit algorithm was first introduced in the 4.3BSD Tahoe release, and fast recovery was introduced in the 4.3BSD Reno release. Security considerations are not discussed in this memo.This document describes four key TCP algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. These algorithms have not been fully documented as Internet standards. RFC 1122 requires TCP to implement slow start and congestion avoidance, but fast retransmit and fast recovery were added later. The purpose of this document is to document these algorithms for the Internet.
Slow start is used to avoid overwhelming the network by starting with a small number of segments and exponentially increasing the number of segments sent until the network capacity is reached. Congestion avoidance is used to prevent network congestion by gradually increasing the number of segments sent. Fast retransmit and fast recovery are used to quickly retransmit lost packets without waiting for a timeout. Fast retransmit detects lost packets through duplicate ACKs and retransmits the missing segment. Fast recovery then adjusts the congestion window to continue sending data without entering slow start.
The four algorithms are implemented together, with congestion avoidance and slow start being independent but complementary. Congestion avoidance and slow start require maintaining two variables: congestion window (cwnd) and slow start threshold (ssthresh). When congestion occurs, cwnd is reduced and slow start is used to increase it again. Fast retransmit and fast recovery are implemented together, with fast recovery adjusting the congestion window to continue sending data without entering slow start.
The fast retransmit algorithm was first introduced in the 4.3BSD Tahoe release, and fast recovery was introduced in the 4.3BSD Reno release. Security considerations are not discussed in this memo.