netdev
[Top] [All Lists]

Re: snd_cwnd drawn and quartered

To: kuznet@xxxxxxxxxxxxx
Subject: Re: snd_cwnd drawn and quartered
From: Werner Almesberger <wa@xxxxxxxxxxxxxxx>
Date: Wed, 15 Jan 2003 15:25:04 -0300
Cc: netdev@xxxxxxxxxxx, chengjin@xxxxxxxxxxxxxx
In-reply-to: <200301151750.UAA15907@sex.inr.ac.ru>; from kuznet@ms2.inr.ac.ru on Wed, Jan 15, 2003 at 08:50:50PM +0300
References: <20030114033651.S1516@almesberger.net> <200301151750.UAA15907@sex.inr.ac.ru>
Sender: netdev-bounce@xxxxxxxxxxx
kuznet@xxxxxxxxxxxxx wrote:
>> This is precisely what NewReno does. If you lose anything within
>> that cwnd, recovery is extended.
> 
> Werner, where did you get this information? In that case recovery
> will not finish. :-)

Maybe I used the wrong word. The sequence number we're waiting
for (high_seq) doesn't change, of course. But the recovery
takes longer than just one RTT, because it takes longer for
snd_una to reach high_seq - due to the second loss.

And because recovery takes longer than one RTT, we decrement
cwnd too much.

>> 100:  we've recovered our initial loss, but snd_una is still
>>       below high_seq, because of all the other losses in that
>>       cwnd
> 
> This must not happen. I did not mean this in code and cannot see
> how it can happen. high_seq is set once while single recovery cycle.
> Something is buggy.

Yes, high_seq is set only once. That's okay. It's snd_una that
(correctly) takes more than one RTT to reach high_seq.

1) tcp_enter_loss sets high_seq = snd_nxt. At that time (t = 0),
   snd_una is 0, snd_nxt is 100.
2) tcp_fastretrans_alert tries to exit recovery only if snd_una
   reaches high_seq

Am I reading this right ?

- Werner

-- 
  _________________________________________________________________________
 / Werner Almesberger, Buenos Aires, Argentina         wa@xxxxxxxxxxxxxxx /
/_http://www.almesberger.net/____________________________________________/


<Prev in Thread] Current Thread [Next in Thread>