[e2e] How often does congestion control react upon loss?

Francesco Vacirca 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?

> Thanks.
> Detlef

More information about the end2end-interest mailing list