Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
From: Jonathan Morton <chromatix99@gmail.com>
To: "Toke Høiland-Jørgensen" <toke@toke.dk>
Cc: Dave Taht <dave.taht@gmail.com>, cake@lists.bufferbloat.net
Subject: Re: [Cake] cake dual hash for dualdst, dualsrc
Date: Mon, 21 Dec 2015 18:06:26 +0200	[thread overview]
Message-ID: <7CCCD9FC-0DCB-4934-8D59-E0F997972AB4@gmail.com> (raw)
In-Reply-To: <877fk7lts4.fsf@toke.dk>


> On 21 Dec, 2015, at 17:12, Toke Høiland-Jørgensen <toke@toke.dk> wrote:
> 
> Jonathan Morton <chromatix99@gmail.com> writes:
> 
>>> you thought that isolating individual machines into roughly 8 queues
>>> each would help defeat bittorrent and other forms of too-many-flow
>>> abuse... and that you'd get some of the benefits of fq for everyone
>>> and that codel could correctly compensate for it!
>> 
>> Um, no.  That isn’t what I had in mind at all.
>> 
>> I’m not at all surprised that your version doesn’t work.
> 
> Do explain; or maybe show us the code, even?

The scheme described above stops working as well as standard flow-isolation just as soon as any single host (or host pair) has more than eight flows.  Note that the ordinary RRUL test employs *thirteen* flows, and the only reason the results still look good is because most of them aren’t bulk, so half the queues do double or triple duty.  The 50:1 test completely destroys it, for obvious reasons, whereas this was something that Cake did comparatively well at.

Additionally, hosts can still get up to an 8x throughput advantage over another using multiple flows.  If both source and destination hosts are considered in the host hash, sharding gains further advantages, evading the dual-isolation measure entirely.

This is not progress.

An early design I had in mind imposed an explicit two-layer structure, with a DRR structure for hosts, and each host bucket having an independent DRR structure for flows.  This would have both avoided the host-to-host competition by flow count (which was the whole point of dual isolation), and avoided restricting the number of flows each host could use without losing the entire benefit of flow isolation.

However, this still forced the user to choose between source-address or destination-address host isolation, in order to avoid the “sharding” cheat.  So I searched further for a way to treat both addresses equally with the same overall benefit.

What I now have in mind restores primary DRR control to the flow level, but adds per-source and per-destination deficit counters which are indexed to from the flows.  All three deficit counters must be non-negative before the queue will be serviced, making it an *implicit* two-level structure with the upper level in two interlocked branches.  This should work well outside of pathological cases, since our set-associative flow isolation doesn’t often suffer collisions.

The challenge is maintaining the new deficit counters accurately, since we can’t rely on the monotonic sweep behaviour as ordinary DRR does.  That’s what I’m currently trying to focus on.

 - Jonathan Morton


  parent reply	other threads:[~2015-12-21 16:06 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-21 14:57 Dave Taht
2015-12-21 15:05 ` Jonathan Morton
     [not found]   ` <877fk7lts4.fsf@toke.dk>
2015-12-21 16:06     ` Jonathan Morton [this message]
2015-12-21 15:06 ` Loganaden Velvindron
2015-12-21 15:54 ` moeller0
2015-12-22 12:29 ` 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/cake.lists.bufferbloat.net/

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

  git send-email \
    --in-reply-to=7CCCD9FC-0DCB-4934-8D59-E0F997972AB4@gmail.com \
    --to=chromatix99@gmail.com \
    --cc=cake@lists.bufferbloat.net \
    --cc=dave.taht@gmail.com \
    --cc=toke@toke.dk \
    /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