[e2e] How often does congestion control react upon loss?
francesco at net.infocom.uniroma1.it
Tue Jan 16 06:50:58 PST 2007
When NewReno TCP and SACK TCP are in the Fast Recovery phase (after the
Fast Retransmit) the congestion window is not halved if a further packet
loss is detected.
In the following the procedure used by NewReno:
After the Fast Retransmit retransmission the TCP protocol enters in the
Fast Recovery phase.
This phase lasts till the ACK for the highest transmitted packet at the
beginning of this phase (stored in the "recover" variable) is received.
During this phase, for each additional duplicate ACK, the congestion
window is incremented by one packet, to reflect the departure from the
network of an additional segment. A new segment is transmitted if it is
allowed by the congestion window and the receiver advertised window.
When an ACK is received acknowledging new packets, but with sequence
number lower than "recover" (partial ACK), the first unacknowledged
packet is retransmitted, the congestion window is deflated by the amount
of packet acknowledged by the partial ACK. The window deflation attempts
to keep the congestion window at the level of the number of outstanding
packets when the "Fast Recovery" phase ends. When an ACK acknowledging a
packet greater or equal to "recover" is received, the congestion window
is set to the value of ssthresh and TCP exits from the “Fast Recovery”
Detlef Bosau wrote:
> I apologize, if this is a beginner´s question.
> During simulations with large buffers I often have several "drop bursts"
> when a buffer overruns because the RTT is quite large (due to the large
> buffers) and therefore it takes some time for a receiver to detect a drop.
> Now I wonder (and I´m currently reading RFC 3517 to get this question
> answered but perhaps someone can help me here to understand this)
> whether it is possible to do several congestion actions in a round. To
> my understanding it is by all means possible (and makes sense) to get
> several sequence numbers in the scoreboard marked "lost" within a round.
> Of course, when a sequence number is marked lost, the sender has to
> retransmit the appropriate segment.
> However, is the congestion window halved each time a sequence number is
> recognized as "lost"? Or is there a limit, e.g. the congestion window is
> halved only once a round?
More information about the end2end-interest