General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: Jonathan Morton <chromatix99@gmail.com>
To: Kartik Agaram <ak@akkartik.com>
Cc: Jordan Peacock <hewhocutsdown@gmail.com>,
	bloat <bloat@lists.bufferbloat.net>
Subject: Re: [Bloat] http/2
Date: Thu, 12 Mar 2015 17:02:41 +0200	[thread overview]
Message-ID: <CAJq5cE28yrYQEt8UMDZ6xTGOXbzXKY-a9BfQs3TOFPQ2KtyVgw@mail.gmail.com> (raw)
In-Reply-To: <CANOtCLVp_A3hXd_vto2_SO=trH8-bQnAJV3iWswHM4xUmr5XSA@mail.gmail.com>

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

I think you may be conflating several different buffers which exist in
different places and are controlled by different means.  I'll try to
illustrate this using a single scenario with which I'm personally familiar:
a half megabit 3G connection without AQM.

Status quo is that loading a web page with many resources on it is
unreliable. Early connections succeed and become established, the
congestion window opens, the buffer in the 3G tower begins to fill up,
inducing several seconds of latency, and subsequent DNS lookups and TCP
handshakes tend to time out. End result: often, half the images on the page
are broken.

Status quo is also that a single big, continuous download (such as a
software update) is capable of inducing 45 seconds of latency on the same
connection, making it virtually impossible to do anything else with it
concurrently. This corresponds to several megabytes of dumb buffering in
the tower AND several megabytes of TCP receive window AND several megabytes
of TCP congestion window. Lose any one of those three things and the
induced latency disappears. But it's there, with a single connection.

As far as bufferbloat is concerned, HTTP 2 just converts the first
situation into the second one. If images and other resources are loaded
from the same server as the base page, as they should be, then they'll load
more reliably. But any resource loaded externally (even just sharded off)
will become less reliable (if anything) in the presence of bufferbloat,
because a separate connection still has to be made per host server.

If the queue in the tower was less dumb, then TCP would be given congestion
signals when it began to fill up. In that situation, HTTP 2 helps because
there are fewer connections that need to receive that signal to be
effective.

- Jonathan Morton

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

  reply	other threads:[~2015-03-12 15:02 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-06 21:38 Kartik Agaram
2015-03-12 15:02 ` Jonathan Morton [this message]
2015-03-12 18:18   ` Narseo Vallina Rodriguez
2015-03-12 18:39     ` Jonathan Morton
2015-03-12 18:56       ` Narseo Vallina Rodriguez
2015-03-12 19:07         ` Jonathan Morton
2015-03-12 19:28           ` Narseo Vallina Rodriguez
2015-03-12 19:42             ` Jonathan Morton
2015-03-15  7:23         ` Mikael Abrahamsson
2015-03-12 18:05 ` Rich Brown
2015-03-15  7:13 ` David Lang

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=CAJq5cE28yrYQEt8UMDZ6xTGOXbzXKY-a9BfQs3TOFPQ2KtyVgw@mail.gmail.com \
    --to=chromatix99@gmail.com \
    --cc=ak@akkartik.com \
    --cc=bloat@lists.bufferbloat.net \
    --cc=hewhocutsdown@gmail.com \
    /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