General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: Dave Taht <dave.taht@gmail.com>
To: Michael Welzl <michawe@ifi.uio.no>
Cc: bloat <bloat@lists.bufferbloat.net>, David Ros <dros@simula.no>
Subject: Re: [Bloat] benefits of ack filtering
Date: Wed, 29 Nov 2017 23:45:12 -0800	[thread overview]
Message-ID: <CAA93jw6DpuhPt+N4bak3BctmfcaReRLTvJ2VQ8WSj+RQ6eF1Kw@mail.gmail.com> (raw)
In-Reply-To: <7B92DF4D-B6B5-4A64-9E10-119DCA2D4A6F@ifi.uio.no>

On Wed, Nov 29, 2017 at 11:03 PM, Michael Welzl <michawe@ifi.uio.no> wrote:
> Hi Bloaters,
>
> I’d like to give offer some information and thoughts on AckCC, at the bottom
> of this email.
>
>
> On Nov 29, 2017, at 4:53 PM, Luca Muscariello <luca.muscariello@gmail.com>
> wrote:
>
>
>
> On Wed, Nov 29, 2017 at 3:31 PM, Mikael Abrahamsson <swmike@swm.pp.se>
> wrote:
>>
>> On Wed, 29 Nov 2017, Luca Muscariello wrote:
>>
>>>> Why does it say to do this? What benefit is there to either end system
>>>> to
>>>> send 35kPPS of ACKs in order to facilitate a 100 megabyte/s of TCP
>>>> transfer?
>>>
>>>
>>> Did you check RFC 3449 ?
>>> https://tools.ietf.org/html/rfc3449#section-5.2.1
>>
>>
>> RFC3449 is all about middleboxes doing things.
>>
>> I wanted to understand why TCP implementations find it necessary to send
>> one ACK per 2xMSS at really high PPS. Especially when NIC offloads and
>> middleboxes frequently strip out this information anyway so it never reaches
>> the IP stack (right?).
>>
>
> I would say because it is complex to guess at which PPS to work. You would
> need an adaptation mechanism. Need also to change the client and the server
> sides. The AckCC Jonathan has mentioned
> might be a solution to that.
> Probably an ACK pacer in the end host, out of the TCP stack, doing Ack
> filtering and decimation can be simpler to implement than the proper
> adaptation mechanism in TCP.
> Maybe inside sch_fq it would be doable. Maybe not.
>
>
> I’m adding the response from Jonathan Morton here to make this more
> self-contained:
> ***
> Given an RTT estimate and knowledge of the congestion window, the AckCC
> option could be used to target a handful of acks (maybe 4 to 10) per RTT.
> As usual, extra acks would be sent when loss is suspected, on ECN events,
> and when the push flag is set.
>
> That would be perfectly sufficient.
>
> - Jonathan Morton
>
> ***
>
> A few years ago, David Ros, whom I’m adding in cc, one of the original
> authors of RFC 5690 did a sabbatical with me at the University of Oslo. As
> part of that, we advised a master student to carry out tests with AckCC, and
> analyze the RFC to understand how it would have to change if we were to
> proceed to Proposed Standard. The result of his investigation is here:
> http://heim.ifi.uio.no/michawe/teaching/dipls/marius-olsen/mastersthesis-mariusno.pdf
> and his code is here: http://folk.uio.no/mariusno/master/
>
> Now, after finishing the thesis, when it came to writing a paper about it,
> we got stuck in the discussion of “how are we going to explain that this is
> really necessary?”
> - we didn’t want to submit a “solution searching for a problem” paper and
> didn’t want to get rejected for not having shown that the problem truly
> exists. Searching for this a little in the academic world (papers) gave us
> no result, at least back then.
>
> Interestingly, at IETF 98, not so long ago, Ingemar Johansson explained to
> folks at TSVWG that the problem IS real:
> https://datatracker.ietf.org/meeting/98/materials/slides-98-tsvwg-sessb-7-transport-protocol-feedback-overhead-issues-and-solutions/
>
> So, let me now try to answer “why is TCP not doing that?”.
> - First, AFAIK, AckCC isn’t implemented anywhere  (except that we have this
> old patch - please feel free to download, adapt, and play with it !!)
> - Second, if someone was to update TCP to support this, a bit more than
> simple statements about the amount of traffic being large would be good IMO
> - I mean, some convincing proof that the large number of ACKs *really* is a
> problem.
> - Third, once this is implemented and deployed and found to be beneficial,
> it would be useful to follow up in the IETF and update RFC 5690.
>
> Since nobody seems to be doing any of these things, nothing changes. But
> consider this: I see folks from Google doing a lot of TCP updates in the
> IETF for which they themselves appear to have an immediate need. Given the
> heterogeneity and magnitude of traffic produced by Google, if they don’t see
> a pressing need for it, I suspect that, indeed, the problem might not be so
> real after all?!
>
> Also, a word of caution. In this thread, there seems to be general agreement
> that TCP sends way too many ACKs, and that reducing that number would be
> fantastic.
> I’m not so convinced. Okay, even if TCP isn’t that ACK-clocked anymore in
> Linux: 1) there isn’t only Linux in this world,

Nor one Linux.

>2) ACKs are still quite
> important in Fast Recovery,

If you are already achieving twice the rate, what does occasionally
losing fast recovery cost?

>3) BBR might not need to clock out ACKs, but it
> measures their incoming rate.

 if it collapses to a punctuated paced source, it could also notice
acks being lost, and extrapolate.

> For another example, consider a non-BBR
> sender in slow start: without ABC, missing ACKs would let it grow its cwnd
> too cautiously. Thanks to ABC, this can be done more aggressively - but ABC
> recommends a limit on how quickly to “jump” in the rate in response to a
> single ACK, for good reason - to avoid producing even heavier bursts. But
> with this limit, again, the TCP sender is unnecessarily cautious in Slow
> Start just because it misses ACKs.

I'm not a huge fan of slow start in IW10.

And: Strike "unnecessarily is", and substitute "may not be", as
http://blog.cerowrt.org/flent/ack_filter/1Gbit-20Mbit-rrul_be.png
seems to show. The ack-filter result shows one flow growing rapidly,
and three others not.


> My point is: the ACKs ARE the feedback that TCP works on; when you take them
> away, TCP becomes “blind”, and whatever improvement is made to TCP will have
> to be developed on that basis.
>
> I’m not saying that 1 ACK for every two packets is really necessary…  but
> unless there’s hard proof that this really is a problem, I’d caution against
> a “downward spiral” here: the level of asymmetry offered to users today is
> probably somehow related to the commonly seen TCP ACK rate - so if TCP
> starts to reduce the ACK rate, folks may decide to make links even more
> asymmetric, etc. etc. … I’m not sure this is a good direction.
>
> Just some thoughts, and some context.
>
> Cheers,
> Michael
>
>
> _______________________________________________
> Bloat mailing list
> Bloat@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/bloat
>



-- 

Dave Täht
CEO, TekLibre, LLC
http://www.teklibre.com
Tel: 1-669-226-2619

  parent reply	other threads:[~2017-11-30  7:45 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-28 21:48 Dave Taht
2017-11-29  6:09 ` Mikael Abrahamsson
2017-11-29  9:34   ` Sebastian Moeller
2017-11-29 12:49     ` Mikael Abrahamsson
2017-11-29 13:13       ` Luca Muscariello
2017-11-29 14:31         ` Mikael Abrahamsson
2017-11-29 14:36           ` Jonathan Morton
2017-11-29 15:24             ` Andrés Arcia-Moret
2017-11-29 15:53           ` Luca Muscariello
     [not found]             ` <CAJq5cE3qsmy8EFYZmQsLL_frm8Tty9Gkm92MQPZ649+kpM1oMw@mail.gmail.com>
2017-11-29 16:13               ` Jonathan Morton
2017-11-30  7:03             ` Michael Welzl
2017-11-30  7:24               ` Dave Taht
2017-11-30  7:45               ` Dave Taht [this message]
2017-11-30  7:48               ` Jonathan Morton
2017-11-30  8:00                 ` Luca Muscariello
2017-11-30 10:24                 ` Eric Dumazet
2017-11-30 13:04                   ` Mikael Abrahamsson
2017-11-30 15:51                     ` Eric Dumazet
2017-12-01  0:28                     ` David Lang
2017-12-01  7:09                       ` Jan Ceuleers
2017-12-01 12:53                         ` Toke Høiland-Jørgensen
2017-12-01 13:13                           ` [Bloat] [Make-wifi-fast] " Кирилл Луконин
2017-12-01 13:22                             ` Luca Muscariello
2017-12-11 17:42                             ` Simon Barber
2017-12-01 13:17                           ` [Bloat] " Luca Muscariello
2017-12-01 13:40                             ` Toke Høiland-Jørgensen
2017-12-01 17:42                               ` Dave Taht
2017-12-01 20:39                                 ` Juliusz Chroboczek
2017-12-03  5:20                                   ` [Bloat] [Make-wifi-fast] " Bob McMahon
2017-12-03 10:35                                     ` Juliusz Chroboczek
2017-12-03 11:40                                       ` Jan Ceuleers
2017-12-03 13:57                                         ` Juliusz Chroboczek
2017-12-03 14:07                                           ` Mikael Abrahamsson
2017-12-03 19:53                                             ` Juliusz Chroboczek
2017-12-03 14:09                                           ` Ryan Mounce
2017-12-03 19:54                                             ` Juliusz Chroboczek
2017-12-03 20:14                                               ` Sebastian Moeller
2017-12-03 22:27                                                 ` Dave Taht
2017-12-03 15:25                                           ` Robert Bradley
2017-12-04  3:44                                         ` Dave Taht
2017-12-04 14:38                                           ` David Collier-Brown
2017-12-04 15:44                                             ` Juliusz Chroboczek
2017-12-04 17:17                                               ` David Collier-Brown
2017-12-03 19:04                                       ` Bob McMahon
2017-12-01 21:17                                 ` Bob McMahon
2017-12-01  8:45                       ` [Bloat] " Sebastian Moeller
2017-12-01 10:45                         ` Luca Muscariello
2017-12-01 18:43                           ` Dave Taht
2017-12-01 18:57                             ` Luca Muscariello
2017-12-01 19:36                               ` Dave Taht
2017-11-30 14:51                   ` Neal Cardwell
2017-11-30 15:55                     ` Eric Dumazet
2017-11-30 15:57                       ` Neal Cardwell
2017-11-29 16:50       ` Sebastian Moeller
2017-12-12 19:27         ` Benjamin Cronce
2017-12-12 20:04           ` Dave Taht
2017-12-12 21:03           ` David Lang
2017-12-12 21:29             ` Jonathan Morton
2017-12-12 22:03           ` Jonathan Morton
2017-12-12 22:21             ` David Lang
     [not found]               ` <CAJq5cE3nfSQP0GCLjp=X0T-iHHgAs=YUCcr34e3ARgkrGZe-wg@mail.gmail.com>
2017-12-12 22:41                 ` Jonathan Morton
2017-12-13  9:46                   ` Mikael Abrahamsson
2017-12-13 10:03                     ` Jonathan Morton
2017-12-13 12:11                       ` Sebastian Moeller
2017-12-13 12:18                         ` Jonathan Morton
2017-12-13 12:36                     ` Sebastian Moeller
2017-12-13 12:39             ` Luca Muscariello
2017-11-29 18:21   ` Juliusz Chroboczek
2017-11-29 18:41     ` Dave Taht
2017-11-29 23:29       ` Steinar H. Gunderson
2017-11-29 23:59       ` Stephen Hemminger
2017-11-30  0:21         ` Eric Dumazet
2017-12-11 20:15   ` Benjamin Cronce
2017-11-29 18:28 ` Juliusz Chroboczek
2017-11-29 18:48   ` Dave Taht
2017-12-11 18:30   ` Jonathan Morton

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

  List information: https://lists.bufferbloat.net/postorius/lists/bloat.lists.bufferbloat.net/

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

  git send-email \
    --in-reply-to=CAA93jw6DpuhPt+N4bak3BctmfcaReRLTvJ2VQ8WSj+RQ6eF1Kw@mail.gmail.com \
    --to=dave.taht@gmail.com \
    --cc=bloat@lists.bufferbloat.net \
    --cc=dros@simula.no \
    --cc=michawe@ifi.uio.no \
    /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