Re: [quicwg/base-drafts] PUSH_PROMISE ordering guarantee (#557)

Kazuho Oku <notifications@github.com> Thu, 08 June 2017 17:09 UTC

Return-Path: <bounces+848413-a050-quic-issues=ietf.org@sgmail.github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D712612EAB9 for <quic-issues@ietfa.amsl.com>; Thu, 8 Jun 2017 10:09:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.021
X-Spam-Level:
X-Spam-Status: No, score=-2.021 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id y7ylRSK6ynQF for <quic-issues@ietfa.amsl.com>; Thu, 8 Jun 2017 10:09:38 -0700 (PDT)
Received: from o7.sgmail.github.com (o7.sgmail.github.com [167.89.101.198]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D2BF1129AF2 for <quic-issues@ietf.org>; Thu, 8 Jun 2017 10:09:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=github.com; h=from:reply-to:to:cc:in-reply-to:references:subject:mime-version:content-type:content-transfer-encoding:list-id:list-archive:list-post:list-unsubscribe; s=s20150108; bh=0Kuc4IPKbBA6XgdqmmghSKd9Rkk=; b=pnu7+4FWJYVqfgmm e+WMA9BQKga68B7bO9t0hgF41o7CNNithhWQsJ/NxuTvKAso4jVPjPS8b0wP3bxD 5KFx/+HmGhgtHQ29QY26vEUCqtc9qOlmG9oHh1GTDFORb2jFEGg7lXKfSBsoTPks lrSQK50cLAt49uq5khsq8FKHIkA=
Received: by filter0986p1mdw1.sendgrid.net with SMTP id filter0986p1mdw1-9547-593984BC-9A 2017-06-08 17:09:16.741351857 +0000 UTC
Received: from github-smtp2b-ext-cp1-prd.iad.github.net (github-smtp2b-ext-cp1-prd.iad.github.net [192.30.253.17]) by ismtpd0004p1iad1.sendgrid.net (SG) with ESMTP id u-Qw3JMDT_uL25jpJ17gxA for <quic-issues@ietf.org>; Thu, 08 Jun 2017 17:09:16.715 +0000 (UTC)
Date: Thu, 08 Jun 2017 10:09:16 -0700
From: Kazuho Oku <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab7c1f06ab664031de72d1a884d64151679e1d8bc892cf00000001155146bc92a169ce0dc86810@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/557/307167240@github.com>
In-Reply-To: <quicwg/base-drafts/issues/557@github.com>
References: <quicwg/base-drafts/issues/557@github.com>
Subject: Re: [quicwg/base-drafts] PUSH_PROMISE ordering guarantee (#557)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_593984bc94c22_a8e63fb1f52a9c34151cf"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: kazuho
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
X-SG-EID: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak3dxZ5KB0MEkKL5mIE9w57HP0nCwX+AlfBbvw o3TCSUAOkG7+7OPfHtJx1+pIHkak2G8XVucN7GBpiyKczTQXFNcGhQBb3Yh5tqswT5rxNc1mvhGv68 qT02U6IyIW3pg5R3RHHEQYvTIKTB3kMv+0wWSpKFrE4j+f3F+rohf1tYWwUqL/uwxrsQuxE38dIURV 0=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/LZyzrD5Gqh9YuDgUHmmLvRYgFrY>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.22
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 08 Jun 2017 17:09:40 -0000

@martinthomson 
> Returning to a model where data and headers share a stream would fix this.

To me it seems that sending PUSH_PROMISE as part of the parent stream is problematic regardless of whether or not headers and body are sent as separate streams.

Consider the case where a server is sending multiple responses that all refer to a single resource. This could happen for example when a client requests two HTML files to be shown in different iframes, and when the two HTML files refer to the same CSS file.

In such case, you would need to refer to the pushed stream from both the responses. However, current design only allows you to create a dependency to a pushed response from _one_ response. Therefore, we have a race condition if the client receives the responses of the two pulled streams in a different order than the server sends.

To this end, I think that we should send PUSH_PROMISE using a different stream (possibly the stream that will convey the response headers), and within the parent stream only _refer_ to that stream, instead of trying to convey the request headers of the pushed stream in the parent stream.

I understand that I am proposing to create dependency between streams. But I might argue that doing so (rather than trying to send PUSH_PROMISE in the parent stream) would benefit us in the long run, under the assumption that such dependency is expected to show up in application protocols other than HTTP as well.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/557#issuecomment-307167240