Re: HTTP Layer rework and PUSH_PROMISE contents

David Morris <dwm@xpasc.com> Sat, 29 June 2013 01:12 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 55CBE21F9DB9 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 28 Jun 2013 18:12:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.599
X-Spam-Level:
X-Spam-Status: No, score=-10.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Z9VFwWY77mv1 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 28 Jun 2013 18:11:53 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id B977E21F9D73 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Fri, 28 Jun 2013 18:11:53 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1Usjge-00038T-Ca for ietf-http-wg-dist@listhub.w3.org; Sat, 29 Jun 2013 01:10:48 +0000
Resent-Date: Sat, 29 Jun 2013 01:10:48 +0000
Resent-Message-Id: <E1Usjge-00038T-Ca@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <dwm@xpasc.com>) id 1UsjgO-00037e-Pq for ietf-http-wg@listhub.w3.org; Sat, 29 Jun 2013 01:10:32 +0000
Received: from c2w3p-2.abacamail.com ([209.133.53.32]) by lisa.w3.org with esmtp (Exim 4.72) (envelope-from <dwm@xpasc.com>) id 1UsjgI-0006gO-Ml for ietf-http-wg@w3.org; Sat, 29 Jun 2013 01:10:32 +0000
Received: from xpasc.com (h-68-164-244-188.snva.ca.megapath.net [68.164.244.188]) by c2w3p-2.abacamail.com (Postfix) with ESMTP id 64A293FBB6 for <ietf-http-wg@w3.org>; Sat, 29 Jun 2013 01:09:59 +0000 (UTC)
Received: from egate.xpasc.com (egate.xpasc.com [10.1.2.49]) by xpasc.com (8.13.8/8.13.8) with ESMTP id r5T19xkm023593 for <ietf-http-wg@w3.org>; Fri, 28 Jun 2013 18:09:59 -0700
Date: Fri, 28 Jun 2013 18:09:59 -0700
From: David Morris <dwm@xpasc.com>
Reply-To: HTTP Working Group <ietf-http-wg@w3.org>
To: HTTP Working Group <ietf-http-wg@w3.org>
In-Reply-To: <CABP7RbceLmh4dawBQjqVyF4BeF92sfSSVMXJMjYY+txPh0zGTg@mail.gmail.com>
Message-ID: <alpine.LRH.2.01.1306281749470.22944@egate.xpasc.com>
References: <15a394809da64b188945aa51ac0265b4@BY2PR03MB025.namprd03.prod.outlook.com> <CABP7RbceLmh4dawBQjqVyF4BeF92sfSSVMXJMjYY+txPh0zGTg@mail.gmail.com>
User-Agent: Alpine 2.01 (LRH 1266 2009-07-14)
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset="US-ASCII"
X-Milter-Version: master.87-g7939dec
X-AV-Type: clean
X-AV-Accuracy: exact
Received-SPF: pass client-ip=209.133.53.32; envelope-from=dwm@xpasc.com; helo=c2w3p-2.abacamail.com
X-W3C-Hub-Spam-Status: No, score=-3.2
X-W3C-Hub-Spam-Report: AWL=-3.245, SPF_PASS=-0.001
X-W3C-Scan-Sig: lisa.w3.org 1UsjgI-0006gO-Ml b9db1bee5450e831510470cd73ebbcf6
X-Original-To: ietf-http-wg@w3.org
Subject: Re: HTTP Layer rework and PUSH_PROMISE contents
Archived-At: <http://www.w3.org/mid/alpine.LRH.2.01.1306281749470.22944@egate.xpasc.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/18403
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>

I think the SHOULD is pretty strong ... not referencing the outcomes
from the SF Interim, but I think I recall an acknowledgement in the
meetihg that the only way to preclude a race condition with the
client requesting what the server was going to promise was to have the
PUSH_PROMISE sent before any primary response references to the resource.

If this conditions isn't met, I foresee a lot of wasted bandwidth between
client initiated requests and PUSH_PROMISEs for the same resource. Also,
wasted server effort to serve the resource twice.

This issue could be quite important when the last mile to the client is
relatively slow OR the user pays for bandwidth.

I'm not arguing for MUST, but I think a mechanism will be required to
manage the downside if it isn't MUST. A setting or response flag that
gives the client a hint that PUSH_PROMISES are anticipated so the client
should avoid agressive parse/pre-fetch.


On Fri, 28 Jun 2013, James M Snell wrote:

> That's why review is good :) the requirement upgrade was unintentional. If
> possible, can you make a note on the pull request?
> On Jun 28, 2013 5:11 PM, "Mike Bishop" <Michael.Bishop@microsoft.com> wrote:
> 
> >  In draft-ietf-httpbis-http2.xml:****
> >
> > >  ****
> >
> > > +        <t>****
> >
> > > +          The server can choose to send one or more push promises****
> >
> > > +          associated with the response. These notify the client that ****
> >
> > > +          the server intends to deliver additional resources to the client****
> >
> > > +          as specified in <xref target="PushResources" />. If the server****
> >
> > > +          sends PUSH_PROMISE frames, those MUST be sent prior to sending ****
> >
> > > +          any header blocks or DATA frames that reference the promised resources.****
> >
> > > +          For instance, if the server receives a request for a document****
> >
> > > +          containing embedded links to multiple image files, and the ****
> >
> > > +          server chooses to push those additional images to the client, ****
> >
> > > +          all of the push promises MUST be sent prior to sending the DATA frames ****
> >
> > > +          that contain the image links. Likewise, if the server pushes ****
> >
> > > +          resources referenced by the header block (i.e. using Link headers), ****
> >
> > > +          the server MUST send the push promises before sending the header****
> >
> > > +          block.****
> >
> > You're upgrading a SHOULD in the current spec to a MUST. Has this been
> > discussed on-list?****
> >
> > Speaking as the http.sys owner for Windows, this concerns me. We don't
> > know the content of the entity body fragments or response headers an
> > application hands us, only the order. The only way we can definitively
> > comply with this MUST is to make all PUSH_PROMISE frames precede all DATA
> > or HEADERS frames. As a SHOULD, we're free to leave proper behavior to the
> > app using our APIs, while maintaining non-optional protocol compliance at
> > our layer. ****
> >
>