Re: http/2 prioritization/fairness bug with proxies

Yoav Nir <ynir@checkpoint.com> Tue, 12 February 2013 07:15 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 60B4321F8C97 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 11 Feb 2013 23:15:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.538
X-Spam-Level:
X-Spam-Status: No, score=-10.538 tagged_above=-999 required=5 tests=[AWL=0.061, BAYES_00=-2.599, 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 K7Z8Zsm2V1dT for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 11 Feb 2013 23:15:16 -0800 (PST)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id A0B9321F8C96 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Mon, 11 Feb 2013 23:15:16 -0800 (PST)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1U5A46-0000lB-Bj for ietf-http-wg-dist@listhub.w3.org; Tue, 12 Feb 2013 07:14:06 +0000
Resent-Date: Tue, 12 Feb 2013 07:14:06 +0000
Resent-Message-Id: <E1U5A46-0000lB-Bj@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <ynir@checkpoint.com>) id 1U5A3x-0000kS-3A for ietf-http-wg@listhub.w3.org; Tue, 12 Feb 2013 07:13:57 +0000
Received: from smtp.checkpoint.com ([194.29.34.68]) by maggie.w3.org with esmtp (Exim 4.72) (envelope-from <ynir@checkpoint.com>) id 1U5A3v-0007T5-KC for ietf-http-wg@w3.org; Tue, 12 Feb 2013 07:13:57 +0000
Received: from DAG-EX10.ad.checkpoint.com ([194.29.34.150]) by smtp.checkpoint.com (8.13.8/8.13.8) with ESMTP id r1C7DNnj021300; Tue, 12 Feb 2013 09:13:24 +0200
X-CheckPoint: {5119E787-0-1B221DC2-2FFFF}
Received: from IL-EX10.ad.checkpoint.com ([169.254.2.18]) by DAG-EX10.ad.checkpoint.com ([169.254.3.103]) with mapi id 14.02.0328.009; Tue, 12 Feb 2013 09:13:23 +0200
From: Yoav Nir <ynir@checkpoint.com>
To: Nico Williams <nico@cryptonector.com>
CC: HTTP Working Group <ietf-http-wg@w3.org>
Thread-Topic: http/2 prioritization/fairness bug with proxies
Thread-Index: AQHOApmZ0uRETG8IPkGzXGmEYojhbJhpIvAAgAAbfgCAAIgDAIAAHgIAgAAgwQCAAAItgIAAV1uAgAkwRYCAAAmKgIABkheAgAAB6ICAABR1AIAAeSMA
Date: Tue, 12 Feb 2013 07:13:23 +0000
Message-ID: <4613980CFC78314ABFD7F85CC3027721119A440A@IL-EX10.ad.checkpoint.com>
References: <CAA4WUYjiBZpShKKFfHQnixc94aOLrck0oR4ykARB=hF5h8nkfA@mail.gmail.com> <3430.1359961022@critter.freebsd.dk> <510F72CE.8030003@treenet.co.nz> <CAA4WUYiBJrLjM0-vurFOuJfUaabXtK=W8N5z28yshSfrvD9crg@mail.gmail.com> <1516.1360002578@critter.freebsd.dk> <42A54D15-0AA3-4172-94F7-E94C86E84D7F@niven-jenkins.co.uk> <2346.1360010079@critter.freebsd.dk> <CAA4WUYiyu+JvFuKooqa4xVdCJP=Mngu9dgHjhH99_SEac1kCZQ@mail.gmail.com> <CABaLYCtX04se2BJ0c1yCYkwH2xvkcETdu7Pe+B8fy=DJrouo6Q@mail.gmail.com> <CAA4WUYitNR0js+5m5RHfLp-7=k-mfTUKDcayW-uzJwTgOgMyYQ@mail.gmail.com> <CABkgnnUYKDe4rZ0ZpqASkwDF2Foa_ni1rEFJH1P03k1Bv_NCog@mail.gmail.com> <CAA4WUYg+evqEMdiYSv+EZ7668eCq_dwqKiYmA4Lq-xZkoD_9Fw@mail.gmail.com> <CAK3OfOi7So1KWXdfv+UEqKAr-o1TaXiZmSmJx61WFR3J0zW_JA@mail.gmail.com>
In-Reply-To: <CAK3OfOi7So1KWXdfv+UEqKAr-o1TaXiZmSmJx61WFR3J0zW_JA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [172.31.20.66]
x-kse-antivirus-interceptor-info: scan successful
x-kse-antivirus-info: Clean
Content-Type: text/plain; charset="utf-8"
Content-ID: <788AABE6A00B074ABC72568E764AFCFA@ad.checkpoint.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Received-SPF: pass client-ip=194.29.34.68; envelope-from=ynir@checkpoint.com; helo=smtp.checkpoint.com
X-W3C-Hub-Spam-Status: No, score=-6.9
X-W3C-Hub-Spam-Report: AWL=0.001, BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001
X-W3C-Scan-Sig: maggie.w3.org 1U5A3v-0007T5-KC ec72f36c54ec4bb2a85ef49c9cb263b0
X-Original-To: ietf-http-wg@w3.org
Subject: Re: http/2 prioritization/fairness bug with proxies
Archived-At: <http://www.w3.org/mid/4613980CFC78314ABFD7F85CC3027721119A440A@IL-EX10.ad.checkpoint.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/16583
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>

On Feb 12, 2013, at 1:59 AM, Nico Williams <nico@cryptonector.com> wrote:

> On Mon, Feb 11, 2013 at 4:46 PM, William Chan (陈智昌)
> <willchan@chromium.org> wrote:
>> Theoretically possible is one thing. But the moment we get into the game of
>> trying to carve up portions of BDP via per-stream flow control windows for
>> prioritization purposes in normal operation (as opposed to just trying to
>> make reasonable progress under excessive load), I think we're in trouble,
>> and likely to get into performance issues due to poor implementations. As
>> I've stated before, I hope most implementations (and believe we should add
>> recommendations for this behavior) only use flow control (if they use it at
>> all, which hopefully they don't because it's hard) for maintaining
>> reasonable buffer sizes.
> 
> Right.  Don't duplicate the SSHv2 handbrake (Peter Gutmann's term) in HTTP/2.0.
> 
> Use percentages of BDP on the sender side.  Have the receiver send
> control frames indicating the rate at which it's receiving to help
> estimate BDP, or ask TCP.  But do not flow control.
> 
> Another possibility is to have the sender (or a proxy) use
> per-priority TCP connections.

I don't think that one solves the problem. A server has to consider priority as relative to the TCP connection, so that high-priority requests trump low-priority requests within the same connection, but not low-priority requests in another connection. Otherwise we have a fairness issue even without proxies.

So you're effectively creating several streams, each with all requests having the same priority. The server will then try to be fair to all connections, effectively giving the same performance to high-priority and low-priority requests.

Yoav