From: Eric Dumazet <eric.dumazet@gmail.com>
To: "Ilpo Järvinen" <ilpo.jarvinen@helsinki.fi>
Cc: Netdev <netdev@vger.kernel.org>
Subject: Re: [PATCH net 5/5] tcp: send real dupACKs by locking advertized window for non-SACK flows
Date: Wed, 07 Mar 2018 12:13:57 -0800 [thread overview]
Message-ID: <1520453637.109662.53.camel@gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1803072055160.30307@whs-18.cs.helsinki.fi>
On Wed, 2018-03-07 at 22:09 +0200, Ilpo Järvinen wrote:
> Thanks for taking a look.
>
> On Wed, 7 Mar 2018, Eric Dumazet wrote:
> > On Wed, 2018-03-07 at 14:59 +0200, Ilpo Järvinen wrote:
> > > Currently, the TCP code is overly eager to update window on
> > > every ACK. It makes some of the ACKs that the receiver should
> > > sent as dupACKs look like they update window update that are
> > > not considered real dupACKs by the non-SACK sender-side code.
> > >
> > > Make sure that when an ofo segment is received, no change to
> > > window is applied if we are going to send a dupACK. It's ok
> > > to change the window for non-dupACKs (such as the first ACK
> > > after ofo arrivals start if that ACK was using delayed ACKs).
> >
> > This looks dangerous to me.
> >
> > We certainly want to lower the window at some point, or risk
> > expensive
> > pruning and/or drops.
>
> I see you're conspiring for "treason" (if you recall those charmy
> times) ;-).
>
> > It is not clear by reading your changelog/patch, but it looks like
> > some
> > malicious peers could hurt us.
>
> The malicious peers can certainly send out-of-window data already at
> will
> (with all of such packets being dropped regardless of that being
> expensive or not) so I don't see there's a big change for malicious
> case
> really. The window is only locked for what we've already promised for
> in
> an earlier ACK! ...Previously, reneging that promise (advertising
> smaller
> than the previous value) was called "treason" by us (unfortunately,
> the
> message is no longer as charmy).
>
> Even with this change, the window is free to change when the ack
> field is
> updated which for legimate senders occurs typically once per RTT.
>
> > By current standards, non TCP sack flows are not worth any
> > potential
> > issues.
>
> Currently non-SACK senders cannot identify almost any duplicate ACKs
> because the window keeps updating for almost all ACKs. As a result,
> non-SACK senders end up doing loss recovery only with RTO. RTO
> recovery
> without SACK is quite annoying because it potentially sends
> large number of unnecessary rexmits.
I get that, but switching from "always" to "never" sounds dangerous.
May I suggest you refine your patch, to maybe allow win reductions, in
a logarithmic fashion maybe ?
This way, when you send 1000 DUPACK, only few of them would actually
have to lower the window, and 99% of them would be considered as DUPACK
by these prehistoric TCP stacks.
next prev parent reply other threads:[~2018-03-07 20:13 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-07 12:59 [PATCH net 0/5] tcp: fixes to non-SACK TCP Ilpo Järvinen
2018-03-07 12:59 ` [PATCH net 1/5] tcp: feed correct number of pkts acked to cc modules also in recovery Ilpo Järvinen
2018-03-07 12:59 ` [PATCH net 2/5] tcp: prevent bogus FRTO undos with non-SACK flows Ilpo Järvinen
2018-03-07 19:24 ` Neal Cardwell
2018-03-07 19:54 ` Yuchung Cheng
2018-03-07 22:19 ` Ilpo Järvinen
2018-03-07 12:59 ` [PATCH net 3/5] tcp: move false FR condition into tcp_false_fast_retrans_possible() Ilpo Järvinen
2018-03-07 15:50 ` Eric Dumazet
2018-03-07 12:59 ` [PATCH net 4/5] tcp: prevent bogus undos when SACK is not enabled Ilpo Järvinen
2018-03-07 20:19 ` Neal Cardwell
2018-03-07 23:48 ` Yuchung Cheng
2018-03-09 14:11 ` Ilpo Järvinen
2018-03-09 14:32 ` Eric Dumazet
2018-03-09 15:28 ` David Miller
2018-03-09 15:23 ` David Miller
2018-03-09 19:23 ` Ilpo Järvinen
2018-03-13 10:24 ` Ilpo Järvinen
2018-03-07 12:59 ` [PATCH net 5/5] tcp: send real dupACKs by locking advertized window for non-SACK flows Ilpo Järvinen
2018-03-07 15:58 ` Eric Dumazet
2018-03-07 20:09 ` Ilpo Järvinen
2018-03-07 20:13 ` Eric Dumazet [this message]
2018-03-07 21:39 ` Ilpo Järvinen
2018-03-07 22:01 ` Eric Dumazet
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=1520453637.109662.53.camel@gmail.com \
--to=eric.dumazet@gmail.com \
--cc=ilpo.jarvinen@helsinki.fi \
--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).