General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: Luca Muscariello <luca.muscariello@gmail.com>
To: Dave Taht <dave.taht@gmail.com>
Cc: Jonathan Morton <chromatix99@gmail.com>,
	bloat <bloat@lists.bufferbloat.net>
Subject: Re: [Bloat] when does the CoDel part of fq_codel help in the real world?
Date: Tue, 27 Nov 2018 23:19:15 +0100	[thread overview]
Message-ID: <CAHx=1M58jvWDP=Om8PMNSt2V=PP1SNPm_PLVTByzS062+BnsEg@mail.gmail.com> (raw)
In-Reply-To: <CAA93jw58DXMvM_zDtxN98GCBUNxTpJ4V+ZZoTCE29w3yWXDX-A@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 6419 bytes --]

I suggest re-reading this

https://queue.acm.org/detail.cfm?id=3022184


On Tue 27 Nov 2018 at 21:58, Dave Taht <dave.taht@gmail.com> wrote:

> OK, wow, this conversation got long. and I'm still 20 messages behind.
>
> Two points, and I'm going to go back to work, and maybe I'll try to
> summarize a table
> of the competing viewpoints, as there's far more than BDP of
> discussion here, and what
> we need is sqrt(bdp) to deal with all the different conversational flows.
> :)
>
> On Tue, Nov 27, 2018 at 1:24 AM Luca Muscariello
> <luca.muscariello@gmail.com> wrote:
> >
> > I think that this is a very good comment to the discussion at the
> defense about the comparison between
> > SFQ with longest queue drop and FQ_Codel.
> >
> > A congestion controlled protocol such as TCP or others, including QUIC,
> LEDBAT and so on
> > need at least the BDP in the transmission queue to get full link
> efficiency, i.e. the queue never empties out.
>
> no, I think it needs a BDP in flight.
>
> I think some of the confusion here is that your TCP stack needs to
> keep around a BDP in order to deal with
> retransmits, but that lives in another set of buffers entirely.
>
> > This gives rule of thumbs to size buffers which is also very practical
> and thanks to flow isolation becomes very accurate.
> >
> > Which is:
> >
> > 1) find a way to keep the number of backlogged flows at a reasonable
> value.
> > This largely depends on the minimum fair rate an application may need in
> the long term.
> > We discussed a little bit of available mechanisms to achieve that in the
> literature.
> >
> > 2) fix the largest RTT you want to serve at full utilization and size
> the buffer using BDP * N_backlogged.
> > Or the other way round: check how much memory you can use
> > in the router/line card/device and for a fixed N, compute the largest
> RTT you can serve at full utilization.
>
> My own take on the whole BDP argument is that *so long as the flows in
> that BDP are thoroughly mixed* you win.
>
> >
> > 3) there is still some memory to dimension for sparse flows in addition
> to that, but this is not based on BDP.
> > It is just enough to compute the total utilization of sparse flows and
> use the same simple model Toke has used
> > to compute the (de)prioritization probability.
> >
> > This procedure would allow to size FQ_codel but also SFQ.
> > It would be interesting to compare the two under this buffer sizing.
> > It would also be interesting to compare another mechanism that we have
> mentioned during the defense
> > which is AFD + a sparse flow queue. Which is, BTW, already available in
> Cisco nexus switches for data centres.
> >
> > I think that the the codel part would still provide the ECN feature,
> that all the others cannot have.
> > However the others, the last one especially can be implemented in
> silicon with reasonable cost.
> >
> >
> >
> >
> >
> > On Mon 26 Nov 2018 at 22:30, Jonathan Morton <chromatix99@gmail.com>
> wrote:
> >>
> >> > On 26 Nov, 2018, at 9:08 pm, Pete Heist <pete@heistp.net> wrote:
> >> >
> >> > So I just thought to continue the discussion- when does the CoDel
> part of fq_codel actually help in the real world?
> >>
> >> Fundamentally, without Codel the only limits on the congestion window
> would be when the sender or receiver hit configured or calculated rwnd and
> cwnd limits (the rwnd is visible on the wire and usually chosen to be large
> enough to be a non-factor), or when the queue overflows.  Large windows
> require buffer memory in both sender and receiver, increasing costs on the
> sender in particular (who typically has many flows to manage per machine).
> >>
> >> Queue overflow tends to result in burst loss and head-of-line blocking
> in the receiver, which is visible to the user as a pause and subsequent
> jump in the progress of their download, accompanied by a major fluctuation
> in the estimated time to completion.  The lost packets also consume
> capacity upstream of the bottleneck which does not contribute to
> application throughput.  These effects are independent of whether overflow
> dropping occurs at the head or tail of the bottleneck queue, though
> recovery occurs more quickly (and fewer packets might be lost) if dropping
> occurs from the head of the queue.
> >>
> >> From a pure throughput-efficiency standpoint, Codel allows using ECN
> for congestion signalling instead of packet loss, potentially eliminating
> packet loss and associated lead-of-line blocking entirely.  Even without
> ECN, the actual cwnd is kept near the minimum necessary to satisfy the BDP
> of the path, reducing memory requirements and significantly shortening the
> recovery time of each loss cycle, to the point where the end-user may not
> notice that delivery is not perfectly smooth, and implementing accurate
> completion time estimators is considerably simplified.
> >>
> >> An important use-case is where two sequential bottlenecks exist on the
> path, the upstream one being only slightly higher capacity but lacking any
> queue management at all.  This is presently common in cases where home CPE
> implements inbound shaping on a generic ISP last-mile link.  In that case,
> without Codel running on the second bottleneck, traffic would collect in
> the first bottleneck's queue as well, greatly reducing the beneficial
> effects of FQ implemented on the second bottleneck.  In this topology, the
> overall effect is inter-flow as well as intra-flow.
> >>
> >> The combination of Codel with FQ is done in such a way that a separate
> instance of Codel is implemented for each flow.  This means that congestion
> signals are only sent to flows that require them, and non-saturating flows
> are unmolested.  This makes the combination synergistic, where each
> component offers an improvement to the behaviour of the other.
> >>
> >>  - Jonathan Morton
> >>
> >> _______________________________________________
> >> Bloat mailing list
> >> Bloat@lists.bufferbloat.net
> >> https://lists.bufferbloat.net/listinfo/bloat
> >
> > _______________________________________________
> > Bloat mailing list
> > Bloat@lists.bufferbloat.net
> > https://lists.bufferbloat.net/listinfo/bloat
>
>
>
> --
>
> Dave Täht
> CTO, TekLibre, LLC
> http://www.teklibre.com
> Tel: 1-831-205-9740
>

[-- Attachment #2: Type: text/html, Size: 7704 bytes --]

  reply	other threads:[~2018-11-27 22:19 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-26 19:08 Pete Heist
2018-11-26 19:28 ` Neal Cardwell
2018-11-27 20:42   ` Dave Taht
2018-11-27 20:54     ` Toke Høiland-Jørgensen
2018-11-27 21:00       ` Dave Taht
2018-11-27 21:05         ` Toke Høiland-Jørgensen
2018-11-26 21:29 ` Jonathan Morton
2018-11-27  9:24   ` Luca Muscariello
2018-11-27 10:26     ` Bless, Roland (TM)
2018-11-27 10:29       ` Luca Muscariello
2018-11-27 10:35         ` Bless, Roland (TM)
2018-11-27 10:40           ` Luca Muscariello
2018-11-27 10:50             ` Mikael Abrahamsson
2018-11-27 11:01               ` Luca Muscariello
2018-11-27 11:21                 ` Mikael Abrahamsson
2018-11-27 12:17                   ` Jonathan Morton
2018-11-27 13:37                     ` Luca Muscariello
2018-11-27 13:49                       ` Mikael Abrahamsson
2018-11-27 14:07                         ` Luca Muscariello
2018-11-27 14:18                           ` Mikael Abrahamsson
2018-11-27 18:44                           ` Kathleen Nichols
2018-11-27 19:25                             ` Dave Taht
2018-11-27 21:57                             ` Roland Bless
2018-11-27 11:53                 ` Bless, Roland (TM)
2018-11-27 11:58                   ` Luca Muscariello
2018-11-27 12:22                     ` Bless, Roland (TM)
2018-11-27 11:06               ` Jonathan Morton
2018-11-27 11:07               ` Michael Welzl
2018-11-29  7:35               ` Dave Taht
2018-11-29 18:43                 ` Stephen Hemminger
2018-11-29 19:08                   ` Dave Taht
2018-11-30  5:51                   ` Mikael Abrahamsson
2018-11-30 19:02                     ` Dave Taht
2018-11-30 19:58                     ` Stephen Hemminger
2018-11-27 11:04             ` Michael Welzl
2018-11-27 12:48               ` Bless, Roland (TM)
2018-11-27 11:40             ` Bless, Roland (TM)
2018-11-27 11:43               ` Bless, Roland (TM)
2018-11-29  7:39               ` Dave Taht
2018-11-29  7:45                 ` Jonathan Morton
2018-11-29  7:54                   ` Dave Taht
2018-11-29  8:09                     ` Luca Muscariello
2018-11-29 13:49                   ` Bless, Roland (TM)
2018-11-29  8:41                 ` Bless, Roland (TM)
2018-11-29  7:33       ` Dave Taht
2018-11-29  8:13         ` Bless, Roland (TM)
2018-11-29 10:00         ` Pete Heist
2018-11-29 16:09       ` Luca Muscariello
2018-11-29 17:07         ` Mario Hock
2018-11-29 22:30           ` Luca Muscariello
2018-11-30  9:55             ` Mario Hock
2018-11-30 10:32               ` Luca Muscariello
2018-11-30 11:04                 ` Jonathan Morton
2018-11-30 11:53                   ` jf
2018-12-03  9:42                   ` Mario Hock
2018-11-27 11:52     ` Toke Høiland-Jørgensen
2018-11-28  3:37       ` [Bloat] AFD Dave Taht
2018-11-27 20:58     ` [Bloat] when does the CoDel part of fq_codel help in the real world? Dave Taht
2018-11-27 22:19       ` Luca Muscariello [this message]
2018-11-27 22:30         ` Roland Bless
2018-11-27 23:17           ` Dave Taht
2018-11-28  3:47             ` Kathleen Nichols
2018-11-28  9:56       ` Luca Muscariello
2018-11-28 10:40         ` Dave Taht
2018-11-28 10:48           ` Luca Muscariello
2018-11-28 12:10             ` Bless, Roland (TM)
2018-11-29  7:22               ` Dave Taht
2018-11-29  7:20             ` Dave Taht
2018-11-27 20:50   ` Dave Taht
2018-11-26 21:56 ` Michael Welzl
2018-11-26 22:13   ` Toke Høiland-Jørgensen
2018-11-27  8:54     ` Pete Heist
2018-11-27  9:31       ` Jonathan Morton
2018-11-27 13:19       ` Michael Richardson
2018-11-27 18:59         ` Jonathan Morton
2018-11-27 20:10   ` Dave Taht
2018-11-27 21:17     ` Michael Welzl
2018-11-27 21:20       ` Michael Welzl
2018-11-29  7:11         ` Dave Taht
2018-11-29  7:28           ` [Bloat] incremental deployment, transport and L4S (Re: when does the CoDel part of fq_codel help in the real world?) Mikael Abrahamsson
2018-11-29  7:36             ` Jonathan Morton
2018-11-29  7:46               ` Mikael Abrahamsson
2018-11-29  8:08                 ` Michael Welzl
2018-11-29 10:30                   ` Jonathan Morton
2018-11-29 12:06                     ` Michael Welzl
2018-11-29 12:52                       ` Jonathan Morton
2018-11-30  7:54                         ` Michael Welzl
2019-02-03 18:20                           ` Dave Taht
2018-11-29 12:12                   ` Michael Welzl
2018-11-29 12:56                     ` Jonathan Morton
2018-11-29 13:30                       ` Mikael Abrahamsson
2018-11-29 23:27                         ` Jonathan Morton
2018-11-30  6:01                           ` Mikael Abrahamsson
2018-11-29 14:06                     ` Bless, Roland (TM)
2018-11-29  8:09                 ` Jonathan Morton
2018-11-29  8:19                   ` Mikael Abrahamsson
2018-11-29  8:34                     ` Jonathan Morton
2018-11-29 10:15                 ` Sebastian Moeller
2018-11-29 10:53                   ` Mikael Abrahamsson
2018-11-30  4:54               ` Dave Taht
2018-11-28  2:04     ` [Bloat] when does the CoDel part of fq_codel help in the real world? Pete Heist
2018-11-28  3:52       ` Dave Taht

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='CAHx=1M58jvWDP=Om8PMNSt2V=PP1SNPm_PLVTByzS062+BnsEg@mail.gmail.com' \
    --to=luca.muscariello@gmail.com \
    --cc=bloat@lists.bufferbloat.net \
    --cc=chromatix99@gmail.com \
    --cc=dave.taht@gmail.com \
    /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