Thread (15 messages) flat view 15 messages, 6 authors, 2011-03-23

Re: [PATCH] tcp: avoid cwnd moderation in undo

From: Carsten Wolff <hidden>
Date: 2011-03-15 10:07:50

Hi,

On Monday 14 March 2011, Yuchung Cheng wrote:
On Mon, Mar 14, 2011 at 3:06 AM, Carsten Wolff [off-list ref] 
wrote:
quoted
The moderation is in place to avoid gigantic segment bursts, which could
cause unnecessary pressure on buffers. In my eyes it's already
suboptimal that the moderation is weakened in the presence of (detected)
reordering, let alone removing it completely.
In the presence of reordering, cwnd is already moderated in Disorder
state before
 entering the (false) recovery.
Sure, cwnd moderation to in_flight + 1 segment is applied in disorder state, 
because this is implementing a form of extended limited transmit. 
Nevertheless, after a reordering event that caused a spurious fast retransmit, 
there can be an undo of congestion state changes (either after recovery or 
interrupting recovery, depending on the options enabled in the connection). I 
just wanted to point out, that the moderation step happening upon an undo may 
allow a larger burst, if a previous reordering event was detected and caused 
tp->reordering to be increased.
quoted
More importantly, the prior ssthresh is restored and not affected by
moderation. This means, if moderation reduces cwnd to a small value, then
cwnd < ssthresh and TCP will quickly slow-start back to the previous
state, without sending a big burst of segments.
This is actually the more important point, because it means that the 
moderation does not negate the effects of the undo operation, as suggested by 
your patch-description.
quoted
Also, you intended to remove cwnd moderation only from an undo during
recovery, but I think your patch also removes cwnd moderation when the
undo is caused by D-SACK, i.e. most likely after recovery already ended.
Thanks. I will update my patch description. But the same principle
applies that cwnd
should not be moderated on false events. Whether it should be moderated on
reordering or other events is another (complex) design issue. But this
patch does not touch that.
False fast retransmits are mostly caused by reordering, spurious RTOs can also 
be caused by delay variations that do not exhibit reordering. Your patch 
touches all cases of spurious events. Anyway, I just mentioned reordering, 
because it is the event in which Linux already allows larger bursts of size 
tp->reordering in the moderation function (i.e. tp->reordering might be 
increased). It's also not important to me if the undo is happening duringor 
after recovery, the important question is, if burst protection in general is 
an important goal, or not (and I think it's there for a reason).

Carsten
-- 
           /\-´-/\
          (  @ @  )
________o0O___^___O0o________
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help