http/2 prioritization/fairness bug with proxies

William Chan (陈智昌) <willchan@chromium.org> Mon, 04 February 2013 05:36 UTC

Return-Path: <ietf-http-wg-request@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 B258B21F8A3F for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sun, 3 Feb 2013 21:36:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.13
X-Spam-Level:
X-Spam-Status: No, score=-9.13 tagged_above=-999 required=5 tests=[AWL=0.547, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Tadh67uqJTyW for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sun, 3 Feb 2013 21:36:21 -0800 (PST)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 3EEC821F89CE for <httpbisa-archive-bis2Juki@lists.ietf.org>; Sun, 3 Feb 2013 21:36:12 -0800 (PST)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1U2Ego-0007bc-NU for ietf-http-wg-dist@listhub.w3.org; Mon, 04 Feb 2013 05:33:58 +0000
Resent-Date: Mon, 04 Feb 2013 05:33:58 +0000
Resent-Message-Id: <E1U2Ego-0007bc-NU@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <willchan@google.com>) id 1U2Egg-0007ar-DU for ietf-http-wg@listhub.w3.org; Mon, 04 Feb 2013 05:33:50 +0000
Received: from mail-qe0-f50.google.com ([209.85.128.50]) by maggie.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <willchan@google.com>) id 1U2Egf-0001sO-9v for ietf-http-wg@w3.org; Mon, 04 Feb 2013 05:33:50 +0000
Received: by mail-qe0-f50.google.com with SMTP id 7so2650598qea.37 for <ietf-http-wg@w3.org>; Sun, 03 Feb 2013 21:33:23 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:sender:date:x-google-sender-auth:message-id :subject:from:to:content-type; bh=7u2b6b/gi2IW95SwbMqJzFCPWz6/dy2Gw+ERcmoX0pQ=; b=KSNscs1gfnNyrgCHv6TuTQaFZpy/aYcksJeaBfrm0V8LHXbu9UeVfSyBNf72nV63tt LuiThN4Lt1UwG/W60Jo0Ez5zo22cs/nDS982KWSoiwuoAXfSu+CWfB6V1obRNYs92Hqz hemEkCtA93u+zYr3VW0XsdcGWPYqQofZJpAY7++WHz76plq80pOcUFJ0xir7++uZ1FXX lyEeMAJQYh+Fdmuqpam/Yq0nUtSVC8pGE0OCnQ4MoIeSYTHGHzG2ksGe715RFXPTLZgd /JvxLSeK89zhgWGd1YkNMu2/bra6EajuqmgjbOw1C679g1HNPk7E9TClFXw2LoU1BYsV pNWw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:x-received:sender:date:x-google-sender-auth:message-id :subject:from:to:content-type; bh=7u2b6b/gi2IW95SwbMqJzFCPWz6/dy2Gw+ERcmoX0pQ=; b=Z1rrl4UJ/0iHDumu/eaAusR2rz9f9AnwVgnVyzG54MGoipAsEEpnDqv+4MQ0wAljwp TF58iZrOuP1B0Aqrt2bnhfV0/HJKizStW2W/zdavQkjQOV4xcy+ZzzYbSHFjJknhtLvw /zfjRU1Uu9H2Ja1+ABqXsnfcU5jN5oonbFZWk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:sender:date:x-google-sender-auth:message-id :subject:from:to:content-type:x-gm-message-state; bh=7u2b6b/gi2IW95SwbMqJzFCPWz6/dy2Gw+ERcmoX0pQ=; b=jytSW7KhBnZazhkMQutjHQrwGNhUBr3aFfqjembDCx6FZGOiCWIYc1/EpMSn0ezw2G r0HWFrnIYEtOeMRXgC7YxQid6bxAt6ZqIdJq4/RerYJOf0z7QGlq05VIO/UWTGulfjuH 0R+R6DH0NGs8+y9KZK5m/7ReM6LLYGbw9/PTbicZPAZB/BDqoyirAffWoRNGY3iDtip1 1nKns+8tDHlB+94RPvGgPJ3eptc6oaszKVwH6k6WynXFhhv29lH5Q2UbEfPS+46zUYlm 4thAlluYe9JKzFzeUuKsdA1Ef+hBS0Ytux+mCFElpsymdSX6T4TtWbyeoX3Wb5DPkmeH 1meQ==
MIME-Version: 1.0
X-Received: by 10.224.216.9 with SMTP id hg9mr17423552qab.44.1359956003237; Sun, 03 Feb 2013 21:33:23 -0800 (PST)
Sender: willchan@google.com
Received: by 10.229.57.163 with HTTP; Sun, 3 Feb 2013 21:33:23 -0800 (PST)
Date: Mon, 04 Feb 2013 14:33:23 +0900
X-Google-Sender-Auth: T40lkCGgz0VTa_8gonz5OW9FyMM
Message-ID: <CAA4WUYjiBZpShKKFfHQnixc94aOLrck0oR4ykARB=hF5h8nkfA@mail.gmail.com>
From: "William Chan (陈智昌)" <willchan@chromium.org>
To: HTTP Working Group <ietf-http-wg@w3.org>
Content-Type: text/plain; charset="ISO-8859-1"
X-Gm-Message-State: ALoCoQkzXd03r8eyCNfikbpSnTq4mI4PIg89Oq/Boz/Fvx/QRyhI5MZMPLAJNmbs/GE0lK8yb+Ho2q/rCjXyDGW/+HRMffFc5qJCJR/DCdTCwQShHXX7ZZCHQSGaSK9e63KSldYAFE6yDvAaKLezgjG2k7OsWqdtNJKqv8k15YX2108ycFNCv9jmeRhpnyYEQqEo+BXwZB5c
Received-SPF: pass client-ip=209.85.128.50; envelope-from=willchan@google.com; helo=mail-qe0-f50.google.com
X-W3C-Hub-Spam-Status: No, score=-4.4
X-W3C-Hub-Spam-Report: AWL=-1.651, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001
X-W3C-Scan-Sig: maggie.w3.org 1U2Egf-0001sO-9v 8d22534aa804b2090f24cbe73c787555
X-Original-To: ietf-http-wg@w3.org
Subject: http/2 prioritization/fairness bug with proxies
Archived-At: <http://www.w3.org/mid/CAA4WUYjiBZpShKKFfHQnixc94aOLrck0oR4ykARB=hF5h8nkfA@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/16345
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: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

Mike told me I didn't explain this properly at the interim meeting,
which was totally true, since I was just trying to do a brief survey
of browser considerations. In retrospect, I'll prepare fuller
presentations next time to explain things more clearly.

Anyway, the existing prioritization bug is as follows:
* Multiple users speaking HTTP/2 to a proxy, where they indicate
stream priorities within their respective HTTP/2 sessions
* The proxy speaks HTTP/2 to a server, demuxing the client sessions
and re-muxing some of the streams into a shared HTTP/2 session to a
server.

The natural thing to do in HTTP/2 as currently drafted is to have the
proxy simply respect the clients' priorities when forwarding to the
server. That obviously means that specific clients can request
long-lived high priority streams, or repeatedly request high priority
streams. This may or may not starve other streams, depending on how
the backend server handles the priorities.

There are a number of different ways to handle this in HTTP/2 as
currently drafted:
* Long-lived high priority streams can be slowly deprioritized by the
backend server.
* The proxy can modify the priorities as it sees them. It could
neutralize them all (set them all to equivalent values) or if a client
requests too many high priority streams, it could start lowering the
priority levels of new streams from that client. The backend server
obviously can't do this because it doesn't (at least, shouldn't!) know
the clients behind the proxy.
* The proxy can use separate HTTP/2 sessions for each client.

I consider all those options as suboptimal, and thus consider this
issue to be a protocol bug. Our SPDY/4 prioritization proposal
addresses this by using stream groups with advisory (all this is
advisory after all) per group weights (for weighted scheduling). I'd
like to hear what people think of this issue and how we should address
it in HTTP/2.

Cheers.