From: Jonathan Morton <chromatix99@gmail.com>
To: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
Cc: bloat <bloat@lists.bufferbloat.net>
Subject: Re: [Bloat] Remarkably simple bloat managing use by a UK ISP
Date: Fri, 5 Jun 2015 19:35:03 +0300 [thread overview]
Message-ID: <CAJq5cE1hr_=+pXa3Sc0mug8-HOVwCes3dqz8aXO-pTW-nzJxJQ@mail.gmail.com> (raw)
In-Reply-To: <5571B636.8050908@darbyshire-bryant.me.uk>
[-- Attachment #1: Type: text/plain, Size: 2074 bytes --]
Going back to fundamentals, there's a clear distinction between traffic
which is latency sensitive and traffic which is bandwidth sensitive.
Perhaps surprisingly, web traffic tends to fall into the former category,
unless the link bandwidth is very low by current standards (analogue modem
territory).
It sounds like that router's default settings attempt to make that
distinction based on port number, and then perform strict prioritization.
The example of SSH demonstrates why that doesn't work; interactive shell
over SSH is latency sensitive, but SCP and rsync-over-SSH are bandwidth
sensitive, and they all use the same port. The need for explicit
configuration (a database of port numbers) is also a black mark against it,
especially since they managed to leave out such a common protocol as DNS.
Packet size is a better heuristic than port number. Most latency sensitive
protocols do tend to use small packets, and nearly all bandwidth sensitive
traffic uses the largest packets it can. SSH also naturally switches
between small and large packets depending on the type of traffic it's
carrying. If you simply sort your traffic by packet size, you don't even
need to configure it - but otherwise you just have a threshold to set and
forget. Cunningly, this also naturally performs ack and ping promotion.
The downside of packet size as a heuristic is that it's possible to game
it, especially with strict priority in force. All you have to do is send
packets below the threshold if there is one, or slightly smaller than the
competing traffic if there isn't one. The receiver can influence this by
setting the MSS low during TCP handshakes.
That is why fq_codel uses the sparse/saturating flow distinction for
priority. It's a much more robust heuristic than packet size, requires no
configuration at all, and is not so easy to game. The downside? It's only
available if you're already doing flow isolation, which basically solves
the core problem on its own. Still, making that distinction does help with
new flow startup and jitter reduction.
- Jonathan Morton
[-- Attachment #2: Type: text/html, Size: 2224 bytes --]
next prev parent reply other threads:[~2015-06-05 16:35 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-05 14:46 Kevin Darbyshire-Bryant
2015-06-05 15:50 ` Dave Taht
2015-06-05 16:35 ` Jonathan Morton [this message]
2015-06-05 16:46 ` Dave Taht
2015-06-05 16:59 ` Jonathan Morton
2015-06-05 17:39 ` Sebastian Moeller
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='CAJq5cE1hr_=+pXa3Sc0mug8-HOVwCes3dqz8aXO-pTW-nzJxJQ@mail.gmail.com' \
--to=chromatix99@gmail.com \
--cc=bloat@lists.bufferbloat.net \
--cc=kevin@darbyshire-bryant.me.uk \
/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