longer time scales, to its response to a dropped packet as
an indication of congestion.
Over smaller time scales (e.g., one or two round trip
times), TCP’s response to ECN can be less conservative
than its response to a dropped packet as an indication of
congestion. In Tahoeand Reno implementations of TCP,
after a packet has been dropped the TCP source stops
sending for a time period on the order of a round trip
time (half a round trip time for Reno implementations),
allowing network queues to dissipate somewhat. This
delay is not necessary as a response to an ECN, which
does not indicate a queue overflow.
For TCP, the receipt of a single ECN (e.g., a single
Source Quench packet, or a single packet with the ECN
bit set) should trigger a response to congestion. This
is unlike the DECbit congestion control scheme, where
the source responds to congestion only if at least half
of the packets in the last window had the ECN bit set
[RJ90]. The decision to allow a single ECN message to
trigger a response to congestion requires a minimum of
overhead. In addition, because the gateway does not set
the ECN field in every arriving packet when the average
queue size is too high, the gateway can use probabilis-
tic algorithms to inform particular sources of congestion
[FJ93]. Because the probability that a connection is no-
tified of congestion is proportional to that connection’s
share of the bandwidth at the congested gateway, these
probabilistic algorithms reduce global synchronization
and improve fairness.
TCP should react to an ECN at most once per
roundtrip time. The TCP source should ignore succeed-
ing ECNs if the source has reacted to a previous ECN
or to a dropped packet in the last roundtrip time. This
also means that if, immediately after reacting to an ECN,
the TCP source receives three duplicate ACKs indicat-
ing a dropped packet, the TCP source should not repeat
the reduction of the congestion window; the packet was
probably dropped before the source reduced its window
in response to the ECN.
TCP should follow the existing algorithms for send-
ing data packets in response to incoming ACKs. The
response to an ECN does not trigger the sending of any
new (or retransmitted) data packets.
TCP should follow the normal procedure after the
timeout of a retransmit timer. That is, after a retransmit
timer timeout the TCP source should slow-start and re-
transmit the dropped packet. However, the TCP source
should not decrease the slow-start threshold ssthresh if
it has been decreased within the last roundtrip time.
5 Implementing ECN in our simula-
tor
In this section we describe the implementation of TCP’s
response to ECN in our simulator. This implementation
of ECN was made to a version of TCP that incorpo-
rates the Fast Recovery congestion control algorithm in
Reno TCP (4.3-reno BSD TCP), as well as the Slow-
Start, Congestion Avoidance, and Fast Retransmit algo-
rithms in the earlier Tahoe TCP (4.3-tahoe BSD TCP
[J88, S94]).
For the simulations in this paper the RED gateways
were given an option to set the ECN bit in the packet
header, rather than dropping the packet, as an indication
of congestion when the buffer had not yet overflowed.
When the TCP receiver receives a data packet with the
ECN bit set in the packet header, the receiver sets the
ECN bit in the next outgoing ACK packet.
First we briefly describe the Slow-Start, Congestion
Avoidance, Fast Retransmit, and Fast Recovery algo-
rithms in TCP. There are two phases to the window-
adjustment algorithm. The connection begins in slow-
start phase, and the current congestion window cwnd is
doubled each roundtrip time until the congestion win-
dow reaches the slow-start threshold ssthresh. Then the
congestion-avoidance phase is entered, and the conges-
tion window is increased by roughly one packet each
roundtrip time. The congestion window is never allowed
to increase to more than the receiver’s advertised win-
dow, which we refer to as the “maximum window”.
In addition to using retransmit timers to detect lost
packets, the source uses the Fast Retransmit procedure
to discover a packet loss. If three duplicate ACK packets
are received acknowledging a previously-acknowledged
data packet, the source infers that a packet has been
dropped.
In the Tahoe version of TCP, the source reacts to a
packet loss by setting the slow start threshold to half
the congestion window, decreasing the congestion win-
dow to one packet, and entering the slow-start phase. In
contrast, with Reno’s Fast Recovery algorithm the TCP
source does not slow-start after inferring that a packet
has been dropped. Instead, the TCP source effectively
waits half a round trip time and halves the congestion
window. The source retransmits the dropped packet and
uses incoming duplicate ACKs to clock additional out-
going packets. The FastRecovery algorithm isdescribed
in more detail in [S94].
2
2
The description of the Fast Recovery algorithm in [S94] is quite
good, and is the only complete publicly-available description of this
algorithm that we are aware of. However, we have a caution to readers.
First, the earlier printings (prior to the 4th) do not distinguish between
the Fast Retransmit and the Fast Recovery algorithms. Second, in
the description of the window increase algorithm in the congestion