From: Jonathan Morton <chromatix99@gmail.com>
To: Justin Kilpatrick <justin@althea.net>
Cc: cake@lists.bufferbloat.net
Subject: Re: [Cake] diffserv3 vs diffserv4
Date: Sat, 25 Jul 2020 06:13:20 +0300 [thread overview]
Message-ID: <1904547A-DC0A-497F-AB7C-624733E2F60A@gmail.com> (raw)
In-Reply-To: <d5f74f85-7d72-40f9-a965-8335163d8cec@www.fastmail.com>
> On 24 Jul, 2020, at 6:56 pm, Justin Kilpatrick <justin@althea.net> wrote:
>
> "sqm-scripts used 3 tiers of priority pretty successfully as does free.fr. - de-prioritization seems a good idea, prioritization not so much."
>
> This is the best comment on why diffserv3 is the default that I could find on bufferbloat.net. I'm interested in hearing about what data (anecdotes welcome) lead to this conclusion.
In Cake, Diffserv4 maps conceptually (but not in detail) to the four priority buckets in Wifi - BK, BE, VI, VO. In Diffserv3 the VI bucket is dropped, because Cake's flow isolation within BE is already good enough to give decent video streaming performance. The BK and VO buckets are still useful to deal with certain specific problems; BK is the place to put "swarm" protocols which intend to be scavengers but which flow-isolation tends to prioritise, and VO is for latency-sensitive protocols which the user wants to specifically protect from random traffic fluctuations.
Thinking more broadly, I believe Diffserv would have been far more successful if it had replaced Precedence/TOS with a simple two-bit, four-way set of PHBs:
00: High Throughput - equivalent to traditional Best Effort service.
01: High Reliability - "Every Packet's Sacred".
10: Low Cost - a scavenging service for altruistic applications.
11: Low Latency - for the many protocols that are sensitive to delays more than throughput.
It may also have been reasonable to include a couple of extra bits for uses internal to an AS, on the understanding that the basic two bits would be preserved end-to-end as an indication of application intent.
Of the above four classes, Diffserv3 provides three - omitting only the High Reliability class. But that is a class most useful within a datacentre, where it is actually practical to implement a lossless backplane with backpressure signals instead of loss.
What we *actually* have is a six-bit field with ill-defined semantics, that is neither preserved nor respected end-to-end, is consequently ignored by most applications, and consumes all the space in the former TOS byte that is not specifically set aside for ECN (a field which could profitably have been larger). It is a serious problem.
Implementations of PHBs still tend to think in terms of bandwidth reservation (a Bell-head paradigm) and/or strict priority (like the Precedence system which was lifted directly from telegraphy practice). Both approaches are inefficient, and go along with the misconception that if we can merely categorise traffic on the fly into a large enough number of pigeonholes, some magical method of dealing with the pigeonholes will make itself obvious. However, both the easy, universal method of categorisation and the magical delivery strategy have failed to materialise. It rather suggests that they're doing it wrong.
So that is why Diffserv3 is the default in Cake. It offers explicit "low cost" and "low latency" service for suitably marked traffic, and for everything else the Best Effort service uses flow and host isolation strategies to maintain good behaviour. It usually works well.
- Jonathan Morton
next prev parent reply other threads:[~2020-07-25 3:13 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-24 15:56 Justin Kilpatrick
2020-07-24 17:42 ` Kevin Darbyshire-Bryant
2020-07-25 10:12 ` Kevin Darbyshire-Bryant
2020-07-25 17:18 ` Sebastian Moeller
2020-07-25 17:47 ` Jonathan Morton
2020-07-25 17:48 ` David P. Reed
2020-07-25 17:54 ` Kevin Darbyshire-Bryant
2020-07-25 19:35 ` David P. Reed
2020-07-25 20:04 ` Sebastian Moeller
2020-07-25 21:33 ` Kevin Darbyshire-Bryant
2020-07-25 21:27 ` Jonathan Morton
2020-07-25 3:13 ` Jonathan Morton [this message]
2020-07-25 17:05 ` David P. Reed
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=1904547A-DC0A-497F-AB7C-624733E2F60A@gmail.com \
--to=chromatix99@gmail.com \
--cc=cake@lists.bufferbloat.net \
--cc=justin@althea.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