HTTP/3 Prioritization: kickstarting the discussion (again)

Robin MARX <robin.marx@uhasselt.be> Wed, 03 July 2019 16:17 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D7EBE120254 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 3 Jul 2019 09:17:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.449
X-Spam-Level:
X-Spam-Status: No, score=-2.449 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=fail (1024-bit key) reason="fail (body has been altered)" header.d=uhasselt.be
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zulHbVXUU0AM for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 3 Jul 2019 09:17:29 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [IPv6:2603:400a:ffff:804:801e:34:0:38]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id ACDDE12028C for <httpbisa-archive-bis2Juki@lists.ietf.org>; Wed, 3 Jul 2019 09:09:55 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.89) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1hihmn-0001Y5-G7 for ietf-http-wg-dist@listhub.w3.org; Wed, 03 Jul 2019 16:07:09 +0000
Resent-Date: Wed, 03 Jul 2019 16:07:09 +0000
Resent-Message-Id: <E1hihmn-0001Y5-G7@frink.w3.org>
Received: from uranus.w3.org ([128.30.52.58]) by frink.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <robin.marx@uhasselt.be>) id 1hihml-0001XH-8U for ietf-http-wg@listhub.w3.org; Wed, 03 Jul 2019 16:07:07 +0000
Received: from www-data by uranus.w3.org with local (Exim 4.89) (envelope-from <robin.marx@uhasselt.be>) id 1hihmk-0007y4-CV for ietf-http-wg@listhub.w3.org; Wed, 03 Jul 2019 16:07:07 +0000
Received: from titan.w3.org ([2603:400a:ffff:804:801e:34:0:4c]) by frink.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <robin.marx@uhasselt.be>) id 1higDd-0007Sn-Rk for ietf-http-wg@listhub.w3.org; Wed, 03 Jul 2019 14:26:45 +0000
Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by titan.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from <robin.marx@uhasselt.be>) id 1higDX-0002hp-E2 for ietf-http-wg@w3.org; Wed, 03 Jul 2019 14:26:45 +0000
Received: by mail-lj1-x22a.google.com with SMTP id r9so2665015ljg.5 for <ietf-http-wg@w3.org>; Wed, 03 Jul 2019 07:26:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uhasselt.be; s=google; h=mime-version:from:date:message-id:subject:to; bh=M4N/hMtLyVsggnagS/G1Orvz58CS1FkUwOfBg5TxjNw=; b=KEM/OOkRj9WvXymNpAni6XlM43UlO1gTygaohxQn/p6gJKEejPZqbbbxQ8vbt7PqFR ZTo7t9Q98adQ7QwQ6TJ7HOnhQ8KUXZDcjiyEWL72bKsVJaTaGSza7Qww37Nc7w01ch9s N3wEiCxNZtRYDLbYt6yQWTGmT/2O8KC0Qx58Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=M4N/hMtLyVsggnagS/G1Orvz58CS1FkUwOfBg5TxjNw=; b=r7WE3n4FioprHfQTn1Mn/9jl2Hg85aljORRvizZRaQ4EwrOSjBJ+bA/yIYJIj2QDnk c1fU397c/2+8nGiViglG3ULkSuLSE5RFUDicbaC1XeJAqAd09cEqzhGiCU6+qtcR+M9v HTVFqf8BI5fRRmxtFUgbVODEsYv6mocevJnA1JA9SQ/WWdBAyk2LqfXa3Dae7XbOFIK2 M95Z/n2z7/prszO5UXLIOpdU7MV+6fjcmwa8uO0d2ZHye7BULPxlwus5KRubkWmBDf8u 3CIRBVEgGHtJeOKyDP3Azf3Xy8x6MKipOw2tv39+DdQwcqFSO7YdMhOW8ZNkPoRXENvq 5oZA==
X-Gm-Message-State: APjAAAXj6F3eS8P0bwKIzTQB5cYgT99NUjHJ5u/x2WN6hshvDN7ZLnuQ IVF/a7rmZiZk34CEreHOOWpPaQniKJPy42fQuSqRJ/USUMM=
X-Google-Smtp-Source: APXvYqxL8fDu7/5A9BORm4G/2MjopzxAnKcOoOBJo6u7y68gaJYRPRWYMdEmX14ZftpKtikmjoPtmiLixoHGzQ8/pr0=
X-Received: by 2002:a2e:98d7:: with SMTP id s23mr10387883ljj.179.1562163975833; Wed, 03 Jul 2019 07:26:15 -0700 (PDT)
MIME-Version: 1.0
From: Robin MARX <robin.marx@uhasselt.be>
Date: Wed, 03 Jul 2019 16:26:02 +0200
Message-ID: <CAC7UV9YW5xFc+C28QtLBfDOPcLZ+DEViR__GRuc9Kx8GhUaYOg@mail.gmail.com>
To: ietf-http-wg@w3.org
Content-Type: multipart/mixed; boundary="000000000000dd1046058cc7a421"
Received-SPF: pass client-ip=2a00:1450:4864:20::22a; envelope-from=robin.marx@uhasselt.be; helo=mail-lj1-x22a.google.com
X-W3C-Hub-Spam-Status: No, score=-4.1
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: titan.w3.org 1higDX-0002hp-E2 be84f72561b404a0b0c6e805d7df26bd
X-caa-id: 57acdde9c7
X-Original-To: ietf-http-wg@w3.org
Subject: HTTP/3 Prioritization: kickstarting the discussion (again)
Archived-At: <https://www.w3.org/mid/CAC7UV9YW5xFc+C28QtLBfDOPcLZ+DEViR__GRuc9Kx8GhUaYOg@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/36745
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

Hello everyone,

As I expect most of you know, there has been quite a bit of talk over at
the QUIC / HTTP/3 working group recently on what to do with the dependency
tree / prioritization system from HTTP/2 in H3.

There are two major issues:
- There a a few subtle HOL-blocking issues in porting the system to H3 due
to the way streams work in QUIC
- Quite a few people feel H2's approach is overly complex and can/should be
simplified

For now, the QUIC wg has taken the stance to try and stay as close to H2 as
possible (e.g., exclusive priorities had been removed before, but are now
back in the editor's draft of HTTP/3).
The QUIC wg wishes to see more real implementation experience and
experimental results for new proposals before considering them. It also
feels this issue is best discussed in the httpbis wg. And thus we come to
this email.

We have been recently running some prioritization experiments for a variety
of schemes and proposals using our own HTTP/3 implementation in the Quicker
project.
We have discussed our findings in a paper, which you can find in attachment
and also on https://h3.edm.uhasselt.be.

The paper attempts to provide a rather extensive discussion of the issues
with H2's setup, H3's approaches so far and the alternative proposals that
have been made.
As I appreciate not everyone has the time to read all of that, our main
findings are:

0) The current proposal (which should be "draft-21" soon) for HTTP/3 works
well in practice, though the semantics of the "orphan placeholder" might
still need to be tweaked a bit.

1) Simpler setups are also perfectly viable. The main contender, from
Patrick Meenan (
https://github.com/pmeenan/http3-prioritization-proposal/blob/master/README.md)
would be a good candidate for this.

2) However, there is no single scheme that produces ideal results for all
web pages (e.g., the scheme that is best for page A can perform really
badly for page B). So dropping everything for a single, simpler approach is
potentially sub-optimal. Similarly, the current approach of browsers of
just using a single scheme for all pages might need revision.

3) Ideally, we should thus allow the scheme to be tweaked per-page, either
via a mechanism where the server indicates the optimal scheme to the client
(which we propose in the paper), or where the client communicates
additional metadata to the server (e.g., resource is blocking/non-blocking,
can be processed progressively, ...) to make server-side prioritization
easier (Kazuho Oku is working on a proposal for this, but doesn't feel it's
ready to share here yet).

 4) In order to make progress on H3, it's probably best to stick with the
draft-21 approach (potentially with a few more small tweaks) and define a
new approach as an extension or implement it at the higher HTTP layer
(i.e., as HTTP headers, rather than H3 frames). However, would that then
find enough adoption fast enough...

While I'll be the first to admit our study isn't terribly extensive or
fully realistic (we tested 40 pages in lab settings without a real
browser), I still feel our results are enough to have a basis to continue
the discussion on. We of course encourage others to share their results as
well.
Some more background information can be found here as well:
https://github.com/quicwg/wg-materials/blob/master/interim-19-05/priorities.pdf

I'm a bit unsure what the best questions are to ask at this point, but some
attempts:
- Are implementers willing to implement 2 completely different approaches
(1 for H3, 1 for H2)?
- Are (browser) implementers willing to consider supporting multiple
schemes (specific trees)?
- Are (server) implementers willing to create/support more complex
(user-driven) server-side prioritization config/APIs?
- How important is it to move to a simpler (and thus less flexible) setup?
- Should this be a blocker for HTTP/3 or not?

Looking forward to your feedback.
With best regards,
Robin

-- 

Robin Marx
PhD researcher - web performance
Expertise centre for Digital Media

T +32(0)11 26 84 79 - GSM +32(0)497 72 86 94

www.uhasselt.be
Universiteit Hasselt - Campus Diepenbeek
Agoralaan Gebouw D - B-3590 Diepenbeek
Kantoor EDM-2.05