Re: http/2 prioritization/fairness bug with proxies

William Chan (陈智昌) <willchan@chromium.org> Mon, 04 February 2013 17:51 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 EA3D121F8AA8 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 4 Feb 2013 09:51:35 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.204
X-Spam-Level:
X-Spam-Status: No, score=-9.204 tagged_above=-999 required=5 tests=[AWL=0.473, 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 FrDI8MTVkQyO for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 4 Feb 2013 09:51:34 -0800 (PST)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 515D121F8AA0 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Mon, 4 Feb 2013 09:51:34 -0800 (PST)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1U2QBY-000446-Ho for ietf-http-wg-dist@listhub.w3.org; Mon, 04 Feb 2013 17:50:28 +0000
Resent-Date: Mon, 04 Feb 2013 17:50:28 +0000
Resent-Message-Id: <E1U2QBY-000446-Ho@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <willchan@google.com>) id 1U2QBS-00043Q-9N for ietf-http-wg@listhub.w3.org; Mon, 04 Feb 2013 17:50:22 +0000
Received: from mail-qa0-f54.google.com ([209.85.216.54]) by lisa.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <willchan@google.com>) id 1U2QBR-0005xB-G6 for ietf-http-wg@w3.org; Mon, 04 Feb 2013 17:50:22 +0000
Received: by mail-qa0-f54.google.com with SMTP id hg5so1397013qab.20 for <ietf-http-wg@w3.org>; Mon, 04 Feb 2013 09:49:55 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=UFld+75liPkh7Op5o58jErSb5nQ9a6i2LkEmeWaag50=; b=cJsXCP/BH5IWzmeaSUDm3p42IHbZzcehKWYhs8V3mOGoh5sHTwZQMg/3FG4UJwUpfy /aHSh+flXoi/JgxlmiAiezpQWKU81LeqUtSomzPTjIAS+PqeE6nPbiN/Ls/gwEB2ZyW6 7Po3CpwYJ/OfcuTOeZ2y8/R4NEZEjIAWXroDq+rmeJI3KsjmebUS+Nx7NcntPCsm4dGk g/AM6hN2AD9EHUMgR6cu0+lkt1Sg+uoa/j6HX3Q5GPsy8BRpFMjCujymfGy8cFx8N7Qh hDFNijDpO+98AhHeS0l700YfHZwRKuxIsUwkbZSjxrxyn1JgaS36/lzIm+fWS7uZ6F7b GSlw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=UFld+75liPkh7Op5o58jErSb5nQ9a6i2LkEmeWaag50=; b=oRQNoRyRznD1tMAm6DYRQW9qGvw7Ef43WurouZsdkVkDpMQirzrZF3Ku1j/nfVTxKr O3TxEG6+N1mbM65y5x8UcznSK6n5hvkhHxKseQeC1JK9g85Up9dv6+CrTg6bElyFN8WN DEwKvLXc7B5rhXNppuLYgsH8ns9RksMKwVisM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :x-gm-message-state; bh=UFld+75liPkh7Op5o58jErSb5nQ9a6i2LkEmeWaag50=; b=GYaZyFfYVHR8G5kYJ7Sn9PR+WBiBJSKuIp/7UjmyzVqSR8TnBh8+zhFGYZBUrGzZzJ YFd9SVXceF3AnxS063Tt/e7cV63kOz5uJO8rqZRYGX0b6FbAvqCaLFTaQ+ONsAVZ49Lg gbX2vKKmXutlH0/nRRAdNP8NL5hXFZMS5I0jKMCdJC83dNASdHtiIc/Wbwpqb0jOCEwY hgrIk72OrcD0BTCMxj4zjAKXcARYFT545kv9lBMvK0ccBV3cURbFZPK5TWEu3e1SyTE/ yNmuCvAfB8YNKS/PbPGZ2cA2TBtZhcgmSIO5T6d1SZFaH9852J4p1q/UUTryANHI6nhc n6dw==
MIME-Version: 1.0
X-Received: by 10.49.96.33 with SMTP id dp1mr21836990qeb.60.1360000195590; Mon, 04 Feb 2013 09:49:55 -0800 (PST)
Sender: willchan@google.com
Received: by 10.229.57.163 with HTTP; Mon, 4 Feb 2013 09:49:54 -0800 (PST)
In-Reply-To: <CAK3OfOj6daXXJ+i+rVHnu2abgiL1ceRqaW0+vyQ7pAcW32c4QA@mail.gmail.com>
References: <CAA4WUYjiBZpShKKFfHQnixc94aOLrck0oR4ykARB=hF5h8nkfA@mail.gmail.com> <3430.1359961022@critter.freebsd.dk> <510F72CE.8030003@treenet.co.nz> <CDFC6823-BC3E-4F53-A9FA-9F0E7AAF0C12@mnot.net> <510FB175.9030805@treenet.co.nz> <CAK3OfOj6daXXJ+i+rVHnu2abgiL1ceRqaW0+vyQ7pAcW32c4QA@mail.gmail.com>
Date: Mon, 04 Feb 2013 09:49:54 -0800
X-Google-Sender-Auth: w2pw1pY5bYIw6xIFgMQz0PLpa5w
Message-ID: <CAA4WUYgBWQ-7mqU7FYSCeTVCGGjNWRGRzzgPDCYUZe9UhWedfg@mail.gmail.com>
From: "William Chan (陈智昌)" <willchan@chromium.org>
To: Nico Williams <nico@cryptonector.com>
Cc: Amos Jeffries <squid3@treenet.co.nz>, HTTP Working Group <ietf-http-wg@w3.org>, Mark Nottingham <mnot@mnot.net>
Content-Type: text/plain; charset="ISO-8859-1"
X-Gm-Message-State: ALoCoQnf+JzX3qRW6e5J4xoASM2vtinpNHpSw3vGYsQYBeOkdy4yzJ8p1fRQJI4q37PyCWh5/ZB/2hP0ajTV7sbDSidoqXjg5rXfjTUJ2/rMRHdiVXw6wkF7KyuRImdtQGuxg1P3hG30RDLlkOX2mrOfr5ZLIOHMuyrh/WVVyb5RB3V9HJ/nQybSaMjRDlPNZEzJcHg3bfE9
Received-SPF: pass client-ip=209.85.216.54; envelope-from=willchan@google.com; helo=mail-qa0-f54.google.com
X-W3C-Hub-Spam-Status: No, score=-3.3
X-W3C-Hub-Spam-Report: AWL=-2.453, 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: lisa.w3.org 1U2QBR-0005xB-G6 40ef7d8e9e18e7911e3a49686c818f25
X-Original-To: ietf-http-wg@w3.org
Subject: Re: http/2 prioritization/fairness bug with proxies
Archived-At: <http://www.w3.org/mid/CAA4WUYgBWQ-7mqU7FYSCeTVCGGjNWRGRzzgPDCYUZe9UhWedfg@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/16359
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>

Note that these priority labels would be suboptimal for browser usage.
As I understand it, all requests within a page load would fall within
a single priority level, probably priority 1 in your case. In my
presentation, I demonstrated how browsers want to do resource request
prioritization within the HTTP protocol level. Different resources
have very different prioritization requirements within a page load,
and unless the protocol supports client advisory priorities, the
browser must make a link underutilization vs contention tradeoff.
Specifically, the browser will withhold making HTTP requests for low
priority resources under higher priority HTTP requests complete, so as
to avoid contention. This achieves some amount of prioritization at
the risk of underutilizing the link.

As I understand it, your proposal also requires trustworthy clients to
set the appropriate priority level, unless the proxy has some
mechanism for determining the appropriate priority level by inspecting
the stream, at which point the client requested priority is useless.
I'm not sure that trusting clients to set the appropriate priority
level for shared sessions is advisable. Opaque levels where only
relative priority matters within a "group" is resilient to this
problem.

On Mon, Feb 4, 2013 at 8:46 AM, Nico Williams <nico@cryptonector.com> wrote:
>
> On Feb 4, 2013 8:05 AM, "Amos Jeffries" <squid3@treenet.co.nz> wrote:
>> On 4/02/2013 11:01 p.m., Mark Nottingham wrote:
>> > [...]
>
>> Which goes to show why specifying an algorithm for handling opaque
>> client-selected prioritization is the wrong way to go about this.
>>
>> You have presented a good argument for specifying a set of standardized
>> priority labels with criterion for setting each label.
>> eg.
>>  Priority 1 - user actioned fetch - requires fast answer
>>  Priority 2 - background/automated fetch in user-visible window - requires
>> fast answer but treat as bulk traffic.
>>  Priority 3 - automated software fetch - treat as low-speed traffic.
>>  Priority 4 - idle software probe - may drop if necessary.
>>
>> ... then letting the algorithm designers and implementers free to write
>> their prioritization algorithms around those definitions.
>
> +1, plus priorities for real-time requests?