Re: http/2 prioritization/fairness bug with proxies

William Chan (陈智昌) <willchan@chromium.org> Mon, 04 February 2013 16:06 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 4D5C121F871E for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 4 Feb 2013 08:06:11 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.157
X-Spam-Level:
X-Spam-Status: No, score=-9.157 tagged_above=-999 required=5 tests=[AWL=0.519, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, 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 Kairsum6Qa2v for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 4 Feb 2013 08:06:10 -0800 (PST)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 4CE9921F86D6 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Mon, 4 Feb 2013 08:06:10 -0800 (PST)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1U2OXb-0007ot-1G for ietf-http-wg-dist@listhub.w3.org; Mon, 04 Feb 2013 16:05:07 +0000
Resent-Date: Mon, 04 Feb 2013 16:05:07 +0000
Resent-Message-Id: <E1U2OXb-0007ot-1G@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 1U2OXQ-0006Yu-20 for ietf-http-wg@listhub.w3.org; Mon, 04 Feb 2013 16:04:56 +0000
Received: from mail-qa0-f49.google.com ([209.85.216.49]) by lisa.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <willchan@google.com>) id 1U2OXP-0001J5-8L for ietf-http-wg@w3.org; Mon, 04 Feb 2013 16:04:56 +0000
Received: by mail-qa0-f49.google.com with SMTP id o13so1342815qaj.15 for <ietf-http-wg@w3.org>; Mon, 04 Feb 2013 08:04:29 -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=ncPDNLX2T/7OEiE6lClVrpl0wJJoqqlCVnx9iutfHao=; b=n0FU19OdDI4tlSeYK4k6ZflZZHbW9PQUGCE8GSOn+YvFmGKCDY0X2d/cOL4C2cDnr8 1bxt/NjdO90YtdOFDnPI2+kM1Gep2lts2lsWhAcAnfuM2g7kFv8jFzdggbsUYBcOgprf pjJCcLrRr8V2r1wvwwLVvYX7oTVidGa5fYUSdWiOS8MsG9KnQWHF8Kwyufl3tGKxZF7m UebI0GFAw9mfEM3Z5sWDTcnReX80d6fvhxmuyC4tJvVt9ievd8ttNfjjCRKqmNIvtAZd KFEeCRPKNIyndloT7yPFG6HixOIUo1M6Zj3UJttxPiUbtxKkONjkkbenVsym8jSiCPKQ 63aQ==
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=ncPDNLX2T/7OEiE6lClVrpl0wJJoqqlCVnx9iutfHao=; b=h6U25ZR4vHNDRVc3iFQ1sMvChSZL/agEivPnC7PblumwJo0qir53QYE9ZJ5tSNqwmQ HcAQ292eoxTg0lsWWIdJbPKUPz8ZstWNTAujZpF7ZArWKRV7QsCpl8Ds0hdzyQtjKWPA /6rhQgptwqD5r21MiZ+WkKFMkBi+Kp58NSBlM=
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=ncPDNLX2T/7OEiE6lClVrpl0wJJoqqlCVnx9iutfHao=; b=Szf/1/RgA7sVvnr25W9WVW0RumT+PbyE1H5HAzNkDHl1AFfQbKGgZ2U6g2ciscWrLD X+je/ikuw3M3Ky4Koa52GT/bVig+ZcuL91uxwEkk1wmgd3GHIjhkBYlVzyuL8YD86SdA VvbLBZ7qqy1dXKZun/8erzeCdq+3x/ifQxj5SpacHE9bHuCbJ8Lkw0zeW3lDFNAKyfs+ RmLsMVcydq8DQ/EDc5IiX/jOKP4gUpV6Wde7vprMTay3laqRCaebsPExM08bh+PRhlWP mZhNe/M7r4He+mwDyfI9DecoA97aNjOpOGPVzqklGhpRSUzidEyn4KTReRA1StefF683 1hKQ==
MIME-Version: 1.0
X-Received: by 10.224.216.9 with SMTP id hg9mr18063684qab.44.1359993869424; Mon, 04 Feb 2013 08:04:29 -0800 (PST)
Sender: willchan@google.com
Received: by 10.229.57.163 with HTTP; Mon, 4 Feb 2013 08:04:28 -0800 (PST)
Received: by 10.229.57.163 with HTTP; Mon, 4 Feb 2013 08:04:28 -0800 (PST)
In-Reply-To: <4613980CFC78314ABFD7F85CC30277211199AE58@IL-EX10.ad.checkpoint.com>
References: <CAA4WUYjiBZpShKKFfHQnixc94aOLrck0oR4ykARB=hF5h8nkfA@mail.gmail.com> <4613980CFC78314ABFD7F85CC30277211199AE58@IL-EX10.ad.checkpoint.com>
Date: Tue, 05 Feb 2013 01:04:28 +0900
X-Google-Sender-Auth: J4k8CRS_mqf6h10p-xY-WC2N99s
Message-ID: <CAA4WUYgCMwpVZs1fbBzoexsGEPDz2R1uUeU4vNOP5jSuDcJm+Q@mail.gmail.com>
From: "William Chan (陈智昌)" <willchan@chromium.org>
To: Yoav Nir <ynir@checkpoint.com>
Cc: HTTP Working Group <ietf-http-wg@w3.org>
Content-Type: multipart/alternative; boundary="20cf300512fe7bd6e104d4e83f04"
X-Gm-Message-State: ALoCoQkoDH/nQOA/RTaFCRt6PDiaORCzD+7LgklMSDkP9jAYikN6pYJD9lQjxISnEdGqddFiWjMTjJRUXHHAsKa5PeGG+QTKqJNp0Rn1XwUH8ESlSopa/i6mfSNq0fxqtvA3ijU890d9Oup6h1Z2bs5Aevmiv/5MWUnrXnn8d5cmWkRSs+hsqwe6H19IY6LPUJOHf5ip4Tc9
Received-SPF: pass client-ip=209.85.216.49; envelope-from=willchan@google.com; helo=mail-qa0-f49.google.com
X-W3C-Hub-Spam-Status: No, score=-3.4
X-W3C-Hub-Spam-Report: AWL=-2.606, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001
X-W3C-Scan-Sig: lisa.w3.org 1U2OXP-0001J5-8L 6403f87f7b0844371218daf87e10e259
X-Original-To: ietf-http-wg@w3.org
Subject: Re: http/2 prioritization/fairness bug with proxies
Archived-At: <http://www.w3.org/mid/CAA4WUYgCMwpVZs1fbBzoexsGEPDz2R1uUeU4vNOP5jSuDcJm+Q@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/16354
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 3, 2013 10:26 PM, "Yoav Nir" <ynir@checkpoint.com> wrote:
>
> Hi
>
> I think the third option (separate streams for each client) is the most
fair. Whatever mechanism is used by the server for fairness among clients
will be at work here. What is the downside here, wasting TCP sockets?

Using separate connections is generally suboptimal for all the reasons we
are adding multiplexing.

>
> What if we added a header (or a field to a header) called
proxy-disambiguation, where the proxy assigns a short (16-bit? 32-bit?)
identifier for each real client. That way the issue of
prioritization/fairness gets pushed to the server where it belongs.

That's an option if we agree we should change the protocol to support
stream grouping. I'm focusing now on that decision, not on the choice of
the actual mechanism.

>
> Where is the SPDY/4 prioritization proposal described?

I didn't link to it earlier because I wanted to focus on the stream
grouping concept and not the other aspects of the proposal.

>
> Yoav
>
> On Feb 4, 2013, at 7:33 AM, William Chan (陈智昌) <willchan@chromium.org>
wrote:
>
> > 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.
>