General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: Dave Taht <dave.taht@gmail.com>
To: Maximilian Bachl <maximilian.bachl@gmail.com>
Cc: bloat <bloat@lists.bufferbloat.net>
Subject: Re: [Bloat] Fair queuing detection for congestion control
Date: Sun, 3 Jul 2022 07:49:32 -0700	[thread overview]
Message-ID: <CAA93jw5ez_hTxq-DEK5SqMrzQh3Taxt5iZRaGiJciVBn5Uxkfg@mail.gmail.com> (raw)
In-Reply-To: <CAEXAmbuMHnyrPmHOVdf6OhXm_ou7Bg=4Jr661i07V9wJkPEojg@mail.gmail.com>

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

Hey, good start to my saturday!

1) Apple's fq_"codel" implementation did not actually implement the
codel portion of the algorithm when I last checked last year. Doesn't
matter what you set the target to.

2) fq_codel has a detectable (IMHO, have not tried) phase where the
"sparse flow optimization" allows non queue building flows to bypass
the queue building
flows entirely. See attached. fq-pie, also. Cake also has this, but
with the addition of per host FQ.

However to detect it, requires sending packets on an interval smaller
than the codel quantum. Most (all!?) TCP implementations, even the
paced ones, send 2 1514 packets back to back, so you get an ack back
on servicing either the first or second one. Sending individual TCP
packets paced, and bunching them up selectively should also oscillate
around the queue width. (width = number of queue building flows,
depth, the depth of the queue). The codel quantum defaults to 1514
bytes but is frequently autoscaled to less at low bandwidths.

3) It is also possible, (IMHO), to send a small secondary flow
isochronously as a "clock" and observe the width and depth of the
queue that way.

4) You can use a fq_codel RFC3168 compliant implementation to send
back a CE, which is (presently) a fairly reliable signal of fq_codel
on the path. A reduction in *pacing* different from what the RFC3168
behavior is (reduction by half), would be interesting.

Thx for this today! A principal observation of the BBR paper was that
you cannot measure for latency and bandwidth *at the same time* in a
single and you showing, in a FQ'd environment, that you can, I don't
remember seeing elsewhere (but I'm sure someone will correct me).

On Sun, Jul 3, 2022 at 7:16 AM Maximilian Bachl via Bloat
<bloat@lists.bufferbloat.net> wrote:
>
> Hi Sebastian,
>
> Thank you for your suggestions.
>
> Regarding
> a) I slightly modified the algorithm to make it work better with the small 5 ms threshold. I updated the paper on arXiv; it should be online by Tuesday morning Central European Time. Detection accuracy for Linux's fq_codel is quite high (high 90s) but it doesn't work that well with small bandwidths (<=10 Mbit/s).
> b) that's a good suggestion. I'm thinking how to do it best since also every experiment with every RTT/bandwidth was repeated and I'm not sure how to make a CDF that includes the RTTs/bandwidths and the repetitions.
> c) I guess for every experiment with pfifo, the resulting accuracy is a true negative rate, while for every experiment with fq* the resulting accuracy is a true positive rate. I updated the paper to include these terms to make it clearer. Summarizing, the true negative rate is 100%, the true positive rate for fq is >= 95% and for fq_codel it's also in that range except for low bandwidths.
>
> In case you're interested in reliable FQ detection but not in the combination of FQ detection and congestion control, I co-authored another paper which uses a different FQ detection method, which is more robust but has the disadvantage of causing packet loss (Detecting Fair Queuing for Better Congestion Control (https://arxiv.org/abs/2010.08362)).
>
> Regards,
> Max
> _______________________________________________
> Bloat mailing list
> Bloat@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/bloat



--
FQ World Domination pending: https://blog.cerowrt.org/post/state_of_fq_codel/
Dave Täht CEO, TekLibre, LLC

[-- Attachment #2: Analysing_the_Latency_of_Sparse_Flows_in_the_FQ-Co.pdf --]
[-- Type: application/pdf, Size: 507010 bytes --]

  reply	other threads:[~2022-07-03 14:49 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-27 16:23 Maximilian Bachl
2022-07-01  9:37 ` Sebastian Moeller
2022-07-03 14:16   ` Maximilian Bachl
2022-07-03 14:49     ` Dave Taht [this message]
2022-10-12 17:35       ` Maximilian Bachl
2022-10-12 18:16         ` Dave Taht
2022-10-13 14:17         ` 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=CAA93jw5ez_hTxq-DEK5SqMrzQh3Taxt5iZRaGiJciVBn5Uxkfg@mail.gmail.com \
    --to=dave.taht@gmail.com \
    --cc=bloat@lists.bufferbloat.net \
    --cc=maximilian.bachl@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