netdev.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).