RE: Questions on Server Push

Mike Bishop <Michael.Bishop@microsoft.com> Tue, 04 June 2013 00:38 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 8435311E811B for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 3 Jun 2013 17:38:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.826
X-Spam-Level:
X-Spam-Status: No, score=-6.826 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, J_CHICKENPOX_48=0.6, MIME_BASE64_BLANKS=0.041, RCVD_IN_DNSWL_HI=-8, UNRESOLVED_TEMPLATE=3.132]
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 kafvUQ44X2Il for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 3 Jun 2013 17:38:29 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 6B4E521E8097 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Mon, 3 Jun 2013 17:11:40 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1Ujepc-0007jK-Ka for ietf-http-wg-dist@listhub.w3.org; Tue, 04 Jun 2013 00:10:32 +0000
Resent-Date: Tue, 04 Jun 2013 00:10:32 +0000
Resent-Message-Id: <E1Ujepc-0007jK-Ka@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <Michael.Bishop@microsoft.com>) id 1UjepP-0007hm-Ko for ietf-http-wg@listhub.w3.org; Tue, 04 Jun 2013 00:10:19 +0000
Received: from mail-by2lp0243.outbound.protection.outlook.com ([207.46.163.243] helo=na01-by2-obe.outbound.protection.outlook.com) by maggie.w3.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from <Michael.Bishop@microsoft.com>) id 1UjepO-0002eF-4j for ietf-http-wg@w3.org; Tue, 04 Jun 2013 00:10:19 +0000
Received: from BN1AFFO11FD021.protection.gbl (10.58.52.200) by BN1AFFO11HUB030.protection.gbl (10.58.52.140) with Microsoft SMTP Server (TLS) id 15.0.707.0; Tue, 4 Jun 2013 00:09:48 +0000
Received: from TK5EX14MLTC103.redmond.corp.microsoft.com (131.107.125.37) by BN1AFFO11FD021.mail.protection.outlook.com (10.58.52.81) with Microsoft SMTP Server (TLS) id 15.0.707.0 via Frontend Transport; Tue, 4 Jun 2013 00:09:48 +0000
Received: from DB8EHSOBE025.bigfish.com (157.54.51.114) by mail.microsoft.com (157.54.79.174) with Microsoft SMTP Server (TLS) id 14.3.136.1; Tue, 4 Jun 2013 00:09:27 +0000
Received: from mail149-db8-R.bigfish.com (10.174.8.249) by DB8EHSOBE025.bigfish.com (10.174.4.88) with Microsoft SMTP Server id 14.1.225.23; Tue, 4 Jun 2013 00:09:25 +0000
Received: from mail149-db8 (localhost [127.0.0.1]) by mail149-db8-R.bigfish.com (Postfix) with ESMTP id D22F02E00E1 for <ietf-http-wg@w3.org.FOPE.CONNECTOR.OVERRIDE>; Tue, 4 Jun 2013 00:09:25 +0000 (UTC)
X-Forefront-Antispam-Report-Untrusted: CIP:157.56.240.21; KIP:(null); UIP:(null); (null); H:BL2PRD0310HT002.namprd03.prod.outlook.com; R:internal; EFV:INT
X-SpamScore: -6
X-BigFish: PS-6(zzbb2dI98dI9371I542I1432I4015I168aJzz1f42h1ee6h1de0h1fdah1202h1e76h1d1ah1d2ah1fc6hzz17326ah8275bhz31h2a8h668h839h93fhd24hf0ah1288h12a5h12a9h12bdh137ah13b6h1441h1504h1537h153bh162dh1631h1758h18e1h1946h19b5h19ceh1ad9h1b0ah1d07h1d0ch1d2eh1d3fh1de9h1dfeh1dffh9a9j1155h)
Received-SPF: softfail (mail149-db8: transitioning domain of microsoft.com does not designate 157.56.240.21 as permitted sender) client-ip=157.56.240.21; envelope-from=Michael.Bishop@microsoft.com; helo=BL2PRD0310HT002.namprd03.prod.outlook.com ; .outlook.com ;
X-Forefront-Antispam-Report-Untrusted: SFV:SKI; SFS:; DIR:OUT; SFP:; SCL:-1; SRVR:BY2PR03MB028; H:BY2PR03MB025.namprd03.prod.outlook.com; LANG:en;
Received: from mail149-db8 (localhost.localdomain [127.0.0.1]) by mail149-db8 (MessageSwitch) id 137030456376057_26874; Tue, 4 Jun 2013 00:09:23 +0000 (UTC)
Received: from DB8EHSMHS010.bigfish.com (unknown [10.174.8.251]) by mail149-db8.bigfish.com (Postfix) with ESMTP id 106A82C003F; Tue, 4 Jun 2013 00:09:23 +0000 (UTC)
Received: from BL2PRD0310HT002.namprd03.prod.outlook.com (157.56.240.21) by DB8EHSMHS010.bigfish.com (10.174.4.20) with Microsoft SMTP Server (TLS) id 14.1.225.23; Tue, 4 Jun 2013 00:09:22 +0000
Received: from BY2PR03MB028.namprd03.prod.outlook.com (10.255.240.42) by BL2PRD0310HT002.namprd03.prod.outlook.com (10.255.97.37) with Microsoft SMTP Server (TLS) id 14.16.311.1; Tue, 4 Jun 2013 00:09:22 +0000
Received: from BY2PR03MB025.namprd03.prod.outlook.com (10.255.240.39) by BY2PR03MB028.namprd03.prod.outlook.com (10.255.240.42) with Microsoft SMTP Server (TLS) id 15.0.698.13; Tue, 4 Jun 2013 00:09:19 +0000
Received: from BY2PR03MB025.namprd03.prod.outlook.com ([169.254.9.230]) by BY2PR03MB025.namprd03.prod.outlook.com ([169.254.9.230]) with mapi id 15.00.0698.010; Tue, 4 Jun 2013 00:09:19 +0000
From: Mike Bishop <Michael.Bishop@microsoft.com>
To: Shigeki Ohtsu <ohtsu@iij.ad.jp>, Martin Thomson <martin.thomson@gmail.com>
CC: HTTP Working Group <ietf-http-wg@w3.org>
Thread-Topic: Questions on Server Push
Thread-Index: AQHOYHTjX7Si6xPBYkG3QwyiLaTwSZkkrKWAgAABqyA=
Date: Tue, 04 Jun 2013 00:09:18 +0000
Message-ID: <8a9659b9e1374bc9bf54a8a0cb1db0ca@BY2PR03MB025.namprd03.prod.outlook.com>
References: <51A87484.4090501@iij.ad.jp> <CABkgnnWPuTp41vYDCbbs+PdDOFc7hCVmNzLJq8CsmHe4Jc-8dQ@mail.gmail.com> <51AD2E8B.4050102@iij.ad.jp>
In-Reply-To: <51AD2E8B.4050102@iij.ad.jp>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [131.107.192.226]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OrganizationHeadersPreserved: BY2PR03MB028.namprd03.prod.outlook.com
X-FOPE-CONNECTOR: Id%0$Dn%*$RO%0$TLS%0$FQDN%$TlsDn%
X-FOPE-CONNECTOR: Id%59$Dn%W3.ORG$RO%2$TLS%6$FQDN%corpf5vips-237160.customer.frontbridge.com$TlsDn%
X-FOPE-CONNECTOR: Id%59$Dn%GMAIL.COM$RO%2$TLS%6$FQDN%corpf5vips-237160.customer.frontbridge.com$TlsDn%
X-FOPE-CONNECTOR: Id%59$Dn%IIJ.AD.JP$RO%2$TLS%6$FQDN%corpf5vips-237160.customer.frontbridge.com$TlsDn%
X-CrossPremisesHeadersPromoted: TK5EX14MLTC103.redmond.corp.microsoft.com
X-CrossPremisesHeadersFiltered: TK5EX14MLTC103.redmond.corp.microsoft.com
X-Forefront-Antispam-Report: CIP:131.107.125.37; CTRY:US; IPV:CAL; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(24454002)(57704003)(13464003)(199002)(189002)(51704005)(479174002)(164054003)(377454002)(49866001)(76786001)(56816002)(4396001)(20776003)(31966008)(47776003)(46102001)(65816001)(76576001)(76796001)(47446002)(69226001)(50986001)(47736001)(81542001)(51856001)(54316002)(53806001)(54356001)(74662001)(16676001)(74502001)(63696002)(74876001)(79102001)(33646001)(66066001)(74706001)(76482001)(15202345002)(6806003)(47976001)(74316001)(74366001)(23676002)(77982001)(80022001)(50466002)(56776001)(59766001)(81342001)(24736002); DIR:OUT; SFP:; SCL:1; SRVR:BN1AFFO11HUB030; H:TK5EX14MLTC103.redmond.corp.microsoft.com; CLIP:131.107.125.37; RD:InfoDomainNonexistent; A:1; MX:1; LANG:en;
X-OriginatorOrg: microsoft.onmicrosoft.com
X-Forefront-PRVS: 0867F4F1AA
Received-SPF: pass client-ip=207.46.163.243; envelope-from=Michael.Bishop@microsoft.com; helo=na01-by2-obe.outbound.protection.outlook.com
X-W3C-Hub-Spam-Status: No, score=0.7
X-W3C-Hub-Spam-Report: RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, UNRESOLVED_TEMPLATE=0.716
X-W3C-Scan-Sig: maggie.w3.org 1UjepO-0002eF-4j 1d10bb8ebccf8b8d6b8946c058fe5be8
X-Original-To: ietf-http-wg@w3.org
Subject: RE: Questions on Server Push
Archived-At: <http://www.w3.org/mid/8a9659b9e1374bc9bf54a8a0cb1db0ca@BY2PR03MB025.namprd03.prod.outlook.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/18161
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>

Streams get half-closed from each side.  Stream 1 is half-closed by the client, not half-closed by the server.  A stream is closed when each side has half-closed.

Is there a wording clarification that would help make this plainer?

-----Original Message-----
From: Shigeki Ohtsu [mailto:ohtsu@iij.ad.jp] 
Sent: Monday, June 3, 2013 5:02 PM
To: Martin Thomson
Cc: HTTP Working Group
Subject: Re: Questions on Server Push

Thanks for your answer. Please let me clarify it.

(2013/06/04 1:05), Martin Thomson wrote:
> On 31 May 2013 02:59, Shigeki Ohtsu <ohtsu@iij.ad.jp> wrote:
>> In the above B case, FINAL flag cannot be set in HEADERS+PRIORITY so
>>   we need to know it at first to distinguish the case A.
>
> This isn't quite right.  Only the stream from the server to the client 
> (the response stream) needs to be open in order to send PUSH_PROMISE.

In 4.3.1 Server implementation, it says that "A server cannot send a PUSH_PROMISE on a new stream or a half-closed stream."

If the following is permitted

  1. Client -> HEADERS+PRIORITY with FINAL (Get Request) -> Server (stream 1)
(stream1 is half-closed)
  2. Client <- PUSH_PROMISE <- Server (stream 1)
  3. Client <- HEADER(Promised Response) <- Server (stream 2)
  4. Client <- DATA(Promised Response) with FINAL <- Server (stream 2)
  5. Client <- HEADER(Response) <- Server (stream 1)
  6. Client <- DATA with FINAL(Response) <-Server (stream 1)
(stream1 is full-closed)

then  PUSH_PROMISE on step2 seemed to be sent from server on the half-closed stream 1. Do we need to change the spec so as to permit to send PUSH_PROMISE on a half-closed stream?

> Also, the ordering isn't strictly this way.  Steps 3,4 and 5,6 can be 
> interleaved in any order.  The only constraint is that step 6 (the one 
> containing the FINAL for stream 1) comes after step 2.

This was the another question that came into my mind, but I wrote the example
  to follow the current SPDY case. It was solved, thanks.

We would be glad if you add some notes about this after "After sending a PUSH_PROMISE, the server commences transmission of a pushed resource."
in 4.3.1.

It might be also related to the description to be written about the stream lifecycles as noted on http://http2.github.io/http2-spec/#rfc.comment.5

>> Q3: In above case, no stream was created before step 5 so that 
>> PUSH_PROMISE was sent on a new stream. This is forbidden in the spec.
>
> This is a case that we haven't completely resolved yet.  My 
> expectation is that we will define something like: the pre-Upgrade
> request implicitly opens stream 1.   See
> https://github.com/http2/http2-spec/issues/52

Thanks, I missed to find the issue.
It would be nice to have the first implicit client-initiated stream
  which has a default priority. The sequence would be

1. Client -> Get Request(HTTP/1.1) with Upgrade -> Server (open implicit stream 1 with a default priority) 2. Client <- 101 Switch Protocol Response <- Server 3. Client <- Connection Header + SETTINGS <- Server 4. Client -> Connection Header + SETTINGS -> Server 5. Client <- PUSH_PROMISE <- Server (implicit stream 1) 6. Client <- HEADER(Promised Response) <- Server (stream 2) 7. Client <- DATA(Promised Response) with FINAL <- Server (stream 2) 8. Client <- HEADER(Response) <- Server (implicit stream 1) 9. Client <- DATA with FINAL(Response) <-Server (implicit stream 1)

Regards,