Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
From: Pete Heist <pete@heistp.net>
To: "Toke Høiland-Jørgensen" <toke@toke.dk>
Cc: Jonathan Morton <chromatix99@gmail.com>,
	Cake List <cake@lists.bufferbloat.net>
Subject: Re: [Cake] dual-src/dsthost unfairness, only with bi-directional traffic
Date: Thu, 3 Jan 2019 23:06:28 +0100	[thread overview]
Message-ID: <E7503143-C9CD-4BED-8EA4-2CA444FC739E@heistp.net> (raw)
In-Reply-To: <316524A2-FEB5-46DC-AC96-4E1AED27695A@heistp.net>

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

I have a simpler setup now to remove some variables, both hosts are APU2 on Debian 9.6, kernel 4.9.0-8:

apu2a (iperf3 client) <— default VLAN —>  apu2b (iperf3 server)

Both have cake at 100mbit only on egress, with dual-srchost on client and dual-dsthost on server. With this setup (and probably previous ones, I just didn’t test it this way), bi-directional fairness with these flow counts works:

	IP1 8-flow TCP up: 46.4
	IP2 1-flow TCP up: 47.3
	IP1 8-flow TCP down: 46.8
	IP2 1-flow TCP down: 46.7

but with the original flow counts reported it’s still similarly imbalanced as before:

	IP1 8-flow TCP up: 82.9
	IP2 1-flow TCP up: 10.9
	IP1 1-flow TCP down: 10.8
	IP2 8-flow TCP down: 83.3

and now with ack-filter on both ends (not much change):

	IP1 8-flow TCP up: 82.8
	IP2 1-flow TCP up: 10.9
	IP1 1-flow TCP down: 10.5
	IP2 8-flow TCP down: 83.2

Before I go further, what I’m seeing with this rig is that when “interplanetary” is used and the number of iperf3 TCP flows goes above the number of CPUs minus one (in my case, 4 cores), the UDP send rate starts dropping. This only happens with interplanetary for some reason, but such as it is, I’m changed my tests to pit 8 UDP flows against 1 TCP flow instead, giving the UDP senders more CPU, as this seems to work much better. All tests except the last are with “interplanetary”.

UDP upload competition (looks good):

	IP1 1-flow TCP up: 48.6
	IP2 8-flow UDP 48-mbit up: 48.2 (0% loss)

UDP download competition (some imbalance, maybe a difference in how iperf3 reverse mode works?):

	IP1 8-flow UDP 48-mbit down: 43.1 (0% loss)
	IP2 1-flow TCP down: 53.4 (0% loss)

All four at once (looks similar to previous two tests not impacting one another, which is good):

	IP1 1-flow TCP up: 47.7
	IP2 8-flow UDP 48-mbit up: 48.2 (0% loss)
	IP1 8-flow UDP 48-mbit down: 43.3 (0% loss)
	IP2 1-flow TCP down: 52.3

All four at once, up IPs flipped (less fair):

	IP1 8-flow UDP 48-mbit up: 37.7 (0% loss)
	IP2 1-flow TCP up: 57.9
	IP1 8-flow UDP 48-mbit down: 38.9 (0% loss)
	IP2 1-flow TCP down: 56.3

All four at once, interplanetary off again, to double check it, and yes, UDP gets punished in this case:

	IP1 1-flow TCP up: 60.6
	IP2 8-flow UDP 48-mbit up: 6.7 (86% loss)
	IP1 8-flow UDP 48-mbit down: 2.9 (94% loss)
	IP2 1-flow TCP down: 63.1

So have we learned something from this? Yes, fairness is improved when using UDP instead of TCP for the 8-flow clients, but by turning AQM off we’re also testing a very different scenario, one that’s not too realistic. Does this prove the cause of the problem is TCP ack traffic?

Thanks again for the help on this. After a whole day on it, I’ll have to shift gears tomorrow to FreeNet router changes. I’ll show them the progress on Monday so of course I’d like to have a great host fairness story for Cake, as this is one of the main reasons to use it instead of fq_codel, but perhaps this will get sorted out before then. :)

I agree with George that we’ve been through this before, and also with how he explained it in his latest email, but there have been many changes to Cake since we tested in 2017, so this could be a regression. I’m almost sure I tested this exact scenario, and would not have put 8 up / 8 down on one IP and 1 up / 1 down on the other, which works with fairness for some reason.

FWIW, I also reproduced it in flent between the same APU2s used above, to be sure iperf3 wasn’t somehow causing it:

https://www.heistp.net/downloads/fairness_8_1/ <https://www.heistp.net/downloads/fairness_8_1/>


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

  parent reply	other threads:[~2019-01-03 22:06 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-01 23:04 Pete Heist
2019-01-03  3:57 ` Georgios Amanakis
2019-01-03  4:15   ` Georgios Amanakis
2019-01-03  5:18     ` Jonathan Morton
2019-01-03 10:46       ` Pete Heist
2019-01-03 11:03         ` Toke Høiland-Jørgensen
2019-01-03 13:02           ` Pete Heist
2019-01-03 13:20             ` Toke Høiland-Jørgensen
2019-01-03 16:35               ` Pete Heist
2019-01-03 18:24                 ` Georgios Amanakis
2019-01-03 22:06                 ` Pete Heist [this message]
2019-01-04  2:08                   ` Georgios Amanakis
2019-01-04  8:09                     ` Pete Heist
2019-01-04  7:37                   ` Pete Heist
2019-01-04 11:34             ` Pete Heist
2019-01-15 19:22               ` George Amanakis
2019-01-15 22:42                 ` Georgios Amanakis
2019-01-16  3:34                   ` George Amanakis
2019-01-16  3:47                     ` gamanakis
2019-01-16  7:58                       ` Pete Heist
2019-01-26  7:35                       ` Pete Heist
2019-01-28  1:34                         ` Georgios Amanakis
2019-01-18 10:06                     ` Toke Høiland-Jørgensen
2019-01-18 12:07                       ` Georgios Amanakis
2019-01-18 13:33                         ` Toke Høiland-Jørgensen
2019-01-18 13:40                           ` Sebastian Moeller
2019-01-18 14:30                             ` Toke Høiland-Jørgensen
2019-01-18 13:45                           ` Jonathan Morton
2019-01-18 14:32                             ` Toke Høiland-Jørgensen

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=E7503143-C9CD-4BED-8EA4-2CA444FC739E@heistp.net \
    --to=pete@heistp.net \
    --cc=cake@lists.bufferbloat.net \
    --cc=chromatix99@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