General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: Pete Heist <pete@heistp.net>
To: bloat <bloat@lists.bufferbloat.net>
Subject: [Bloat] when does the CoDel part of fq_codel help in the real world?
Date: Mon, 26 Nov 2018 20:08:49 +0100	[thread overview]
Message-ID: <65EAC6C1-4688-46B6-A575-A6C7F2C066C5@heistp.net> (raw)

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

In Toke’s thesis defense, there was an interesting exchange with examination committee member Michael (apologies for not catching the last name) regarding how the CoDel part of fq_codel helps in the real world:

https://www.youtube.com/watch?v=upvx6rpSLSw&t=2h16m20s <https://www.youtube.com/watch?v=upvx6rpSLSw&t=2h16m20s>

My attempt at a transcript is at the end of this message. (I probably won’t attempt a full defense transcript, but if someone wants more of a particular section I can try. :)

So I just thought to continue the discussion- when does the CoDel part of fq_codel actually help in the real world? I’ll speculate with a few possibilities:

1) Multiplexed HTTP/2.0 requests containing both a saturating stream and interactive traffic. For example, a game that uses HTTP/2.0 to download new map data while position updates or chat happen at the same time. Standalone programs could use HTTP/2.0 this way, or for web apps, the browser may multiplex concurrent uses of XHR over a single TCP connection. I don’t know of any examples.

2) SSH with port forwarding while using an interactive terminal together with a bulk transfer?

3) Does CoDel help the TCP protocol itself somehow? For example, does it speed up the round-trip time when acknowledging data segments, improving behavior on lossy links? Similarly, does it speed up the TCP close sequence for saturating flows?

Pete

---

M: In fq_codel what is really the point of CoDel?
T: Yeah, uh, a bit better intra-flow latency...
M: Right, who cares about that?
T: Apparently some people do.
M: No I mean specifically, what types of flows care about that?
T: Yeah, so, um, flows that are TCP based or have some kind of- like, elastic flows that still want low latency.
M: Elastic flows that are TCP based that want low latency...
T: Things where you want to discover the- like, you want to utilize the full link and sort of probe the bandwidth, but you still want low latency.
M: Can you be more concrete what kind of application is that?
T: I, yeah, I…
M: Give me any application example that’s gonna benefit from the CoDel part- CoDel bits in fq_codel? Because I have problems with this.
T: I, I do too... So like, you can implement things this way but equivalently if you have something like fq_codel you could, like, if you have a video streaming application that interleaves control…
M: <inaudible> that runs on UDP often.
T: Yeah, but I, Netflix…
M: Ok that’s a long way… <inaudible>
T: No, I tend to agree with you that, um…
M: Because the biggest issue in my opinion is, is web traffic- for web traffic, just giving it a huge queue makes the chance bigger that uh, <inaudible, ed: because of the slow start> so you may end up with a (higher) faster completion time by buffering a lot. Uh, you’re not benefitting at all by keeping the queue very small, you are simply <inaudible> Right, you’re benefitting altogether by just <inaudible> which is what the queue does with this nice sparse flow, uh… <inaudible>
T: You have the infinite buffers in the <inaudible> for that to work, right. One benefit you get from CoDel is that - you screw with things like - you have to drop eventually.
M: You should at some point. The chances are bigger that the small flow succeeds (if given a huge queue). And, in web surfing, why does that, uh(?)
T: Yeah, mmm...
M: Because that would be an example of something where I care about latency but I care about low completion. Other things where I care about latency they often don’t send very much. <inaudible...> bursts, you have to accommodate them basically. Or you have interactive traffic which is UDP and tries to, often react from queueing delay <inaudible>. I’m beginning to suspect that fq minus CoDel is really the best <inaudible> out there.
T: But if, yeah, if you have enough buffer.
M: Well, the more the better.
T: Yeah, well.
M: Haha, I got you to say yes. [laughter :] That goes in history. I said the more the better and you said yeah.
T: No but like, it goes back to good-queue bad-queue, like, buffering in itself has value, you just need to manage it.
M: Ok.
T: Which is also the reason why just having a small queue doesn’t help in itself.
M: Right yeah. Uh, I have a silly question about fq_codel, a very silly one and there may be something I missed in the papers, probably I did, but I'm I was just wondering I mean first of all this is also a bit silly in that <inaudible> it’s a security thing, and I think that’s kind of a package by itself silly because fq_codel often probably <inaudible> just in principle, is that something I could easily attack by creating new flows for every packet?
T: No because, they, you will…
M: With the sparse flows, and it’s gonna…
T: Yeah, but at some point you’re going to go over the threshold, I, you could, there there’s this thing where the flow goes in, it’s sparse, it empties out and then you put it on the normal round robin implementation before you queue <inaudible> And if you don’t do that than you can have, you could time packets so that they get priority just at the right time and you could have lockout.
M: Yes.
T: But now you will just fall back to fq.
M: Ok, it was just a curiousity, it’s probably in the paper. <inaudible>
T: I think we added that in the RFC, um, you really need to, like, this part is important.


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

             reply	other threads:[~2018-11-26 19:08 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-26 19:08 Pete Heist [this message]
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
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=65EAC6C1-4688-46B6-A575-A6C7F2C066C5@heistp.net \
    --to=pete@heistp.net \
    --cc=bloat@lists.bufferbloat.net \
    /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