All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wenji Wu <wenji@fnal.gov>
To: "Ilpo Järvinen" <ilpo.jarvinen@helsinki.fi>
Cc: John Heffner <johnwheffner@gmail.com>, Netdev <netdev@vger.kernel.org>
Subject: Re: RE: A Linux TCP SACK Question
Date: Tue, 15 Apr 2008 13:01:29 -0500	[thread overview]
Message-ID: <fc3c25e72104.4804a729@fnal.gov> (raw)
In-Reply-To: <Pine.LNX.4.64.0804151035060.17123@wrl-59.cs.helsinki.fi>


> No, this is not right. The old_ack happens only if left edge 
> backtracks, in which case we obviously should discard as it's stale 
> information (except SACK may reveal something not yet known which is
> why sacktag is called there). This same applies regardless of SACK (no 
> 
> tagging of course).

Yes, I mis-present myself in the last email. What I meant is the left edge backtrack case as you have pointed out.
 
> 
> I think you might have found a bug though it won't affect you but 
> makes 
> that check easier to pass actually:
> 
> Questionable thing is that || in tcp_may_raise_cwnd (might not be 
> intentional)...
> 
> But in your case, during initial slow-start that condition in 
> tcp_may_raise_cwnd will always be true (if you've metrics are cleared 
> as 
> they should). Because: (...not important || 1) && 1 because cwnd < 
> ssthresh. After that, when you don't have ECE nor are in recovery, 
> tcp_may_raise_cwnd results in this: (1 || ...not calculated) && 1, so 
> it 
> should always allow increment in your case except when in recovery 
> which 
> hardly makes up for the difference you're seeing...

You are right, I just printed out the return value of tcp_may_raise_cwnd(). It is all one!


> This would only make difference if any of those SACK blocks were new. 
> If 
> they're not, DATA_SACKED_ACKED won't be set in flag.
> 
> > >  Not quite sure, just a guess.
> 
> You seem to be missing the third case, which I tried to point out
> earlier. The case where left edge remains the same. I think it makes a 
> 
> huge difference here (I'll analyse non-recovery case here):
> 
> NewReno goes always to fastretrans_alert, to default branch, and 
> because 
> it's is_dupack, it increments sacked_out through tcp_add_reno_sack. 
> Effectively packets_in_flight is reduced by one and TCP is able to 
> send 
> a new segment out.
> 
> Now with SACK there are two cases:
> 
> SACK and newly discovere SACK info (for simplicity, lets assume just 
> one 
> newly discovered sacked segment). Sacktag marks that segment and 
> increment 
> sacked_out, effectively making packets_in_flight equal to the case 
> with 
> NewReno. It goes to fastretrans_alert and makes all similar maneuvers 
> as 
> NewReno (except if enough SACK blocks have arrived to trigger recovery 
> 
> while NewReno would not have enough dupACKs collected, I doubt that 
> this 
> makes the difference though, I'll need no-metricsed logs to verify the 
> 
> number of recoveries to confirm that they're quite few).
> 
> SACK and no new SACK info. Sacktag won't find anything to mark, thus 
> sacked_out remains the same. It goes to fastretrans_alert because 
> ca_state 
> is CA_Disorder. But, now we did lose one segment compared with NewReno 
> 
> because we didn't increment sacked_out making packets_in_flight to 
> stay in 
> the amount it was before. Thus we cannot send new data segment out and 
> 
> fall behind the NewReno.

Agree with you. Thanks. You did give me a good class on Linux ACK/SACK implementation. Thank you.

> > I had considered this, but it would seem that tcp_may_raise_cwnd() in
> > this case *should* return true, right?
> 
> Yes, it seems. Though I think that it's unintentional. I'd say that 
> that 
> || should be && but I might be wrong.

Yes, It is all ture!

wenji

  reply	other threads:[~2008-04-15 18:03 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-04  4:54 A Linux TCP SACK Question Wenji Wu
2008-04-04 16:27 ` John Heffner
2008-04-04 17:49   ` Wenji Wu
2008-04-04 18:07     ` John Heffner
2008-04-04 20:00     ` Ilpo Järvinen
2008-04-04 20:07       ` Wenji Wu
2008-04-04 21:15       ` Wenji Wu
2008-04-04 21:33         ` Ilpo Järvinen
2008-04-04 21:39           ` Ilpo Järvinen
2008-04-04 22:14             ` Wenji Wu
2008-04-05 17:42               ` Ilpo Järvinen
2008-04-05 21:17               ` Sangtae Ha
2008-04-06 20:27                 ` Wenji Wu
2008-04-06 22:43                   ` Sangtae Ha
2008-04-07 14:56                     ` Wenji Wu
2008-04-08  6:36                       ` Ilpo Järvinen
2008-04-08 12:33                         ` Wenji Wu
2008-04-08 13:45                           ` Ilpo Järvinen
2008-04-08 14:30                             ` Wenji Wu
2008-04-08 14:59                               ` Ilpo Järvinen
2008-04-08 15:27                                 ` Wenji Wu
2008-04-08 17:26                                   ` Ilpo Järvinen
2008-04-14 22:47                                 ` Wenji Wu
2008-04-15  0:48                                   ` John Heffner
2008-04-15  8:25                                     ` Ilpo Järvinen
2008-04-15 18:01                                       ` Wenji Wu [this message]
2008-04-15 22:40                                         ` John Heffner
2008-04-16  8:27                                           ` David Miller
2008-04-16  9:21                                             ` Ilpo Järvinen
2008-04-16  9:35                                               ` David Miller
2008-04-16 14:50                                                 ` Wenji Wu
2008-04-18  6:52                                                   ` David Miller
2008-08-27 14:38                                                 ` about Linux adaptivly adjusting ssthresh Wenji Wu
2008-08-27 22:48                                                   ` John Heffner
2008-08-28  0:53                                                     ` Wenji Wu
2008-08-28  6:34                                                       ` Ilpo Järvinen
2008-08-28 14:20                                                         ` about Linux adaptivly adjusting dupthresh Wenji Wu
2008-08-28 18:53                                                           ` Ilpo Järvinen
2008-08-28 19:30                                                             ` Wenji Wu
2008-04-16 14:40                                               ` A Linux TCP SACK Question John Heffner
2008-04-16 15:03                                                 ` Ilpo Järvinen
2008-04-16 14:46                                           ` Wenji Wu
2008-04-15 15:45                                     ` Wenji Wu
2008-04-15 16:39                                     ` Wenji Wu
2008-04-15 17:01                                       ` John Heffner
2008-04-15 17:08                                         ` Ilpo Järvinen
2008-04-15 17:23                                           ` John Heffner
2008-04-15 18:00                                             ` Matt Mathis
2008-04-15 17:55                                         ` Wenji Wu
2008-04-08 15:57                           ` John Heffner
2008-04-08 14:07                         ` John Heffner
2008-04-14 16:10                         ` Wenji Wu
2008-04-14 16:48                           ` Ilpo Järvinen
2008-04-14 22:07                             ` Wenji Wu
2008-04-15  8:23                               ` Ilpo Järvinen
2008-04-04 21:40           ` Wenji Wu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fc3c25e72104.4804a729@fnal.gov \
    --to=wenji@fnal.gov \
    --cc=ilpo.jarvinen@helsinki.fi \
    --cc=johnwheffner@gmail.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.