[quicwg/base-drafts] Consider a new stream type to act like MAX_PUSH_ID (#2418)

Lucas Pardue <notifications@github.com> Tue, 05 February 2019 10:19 UTC

Return-Path: <noreply@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 B4022130E2B for <quic-issues@ietfa.amsl.com>; Tue, 5 Feb 2019 02:19:55 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -12.553
X-Spam-Level:
X-Spam-Status: No, score=-12.553 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-4.553, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, 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 jYuDlCrF5Dht for <quic-issues@ietfa.amsl.com>; Tue, 5 Feb 2019 02:19:53 -0800 (PST)
Received: from out-4.smtp.github.com (out-4.smtp.github.com [192.30.252.195]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 81639130E25 for <quic-issues@ietf.org>; Tue, 5 Feb 2019 02:19:53 -0800 (PST)
Date: Tue, 05 Feb 2019 02:19:52 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1549361992; bh=1bfXHFxwWSARd/ijPgjCRQVUdAlI5xgceNBgf75+iJQ=; h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=eBvzt2bUM5BUaU6v8Pizia5u5CBAxEhbQddbDDvbJNBLTTVSrQ0TQUvOM1/oFzfZc IAn9G2VkJL26SHJNB5pj3RqB0wbv5Zz3VrRYqLilKv/R3Crh8T2kyt4QEQT3tl7eR5 uO5W2cHoRp3yj6G7PzWzFCasgFvDAtAje338W+AM=
From: Lucas Pardue <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abd9dbddec4a095a889562b4d0281ca6efefa4c23092cf000000011871254892a169ce183df2cd@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/2418@github.com>
Subject: [quicwg/base-drafts] Consider a new stream type to act like MAX_PUSH_ID (#2418)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5c59634832655_d053f87a2cd45c411072"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: LPardue
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/hz-zGOdhFWHCQrACvtBkhoYWk_c>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
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: Tue, 05 Feb 2019 10:19:56 -0000

This straw man idea stems from the discussion on #2412.

Consider defining a new unidirectional stream type for Max Push ID updates. This can be expressed as unframed data: a series of increasing var ints. The use of MAX_PUSH_ID frame is entirely, so using a uni stream is a slightly better fit to the concept. Another reason to consider this approach is that it lends itself to extracting server push into an extension. It provides a pattern for how future extensions could manage themselves without needing to pollute the core control stream.

The max Push ID stands out as a connection-level state that has no associated H3 Setting. The reintroduction of an ENABLE_PUSH setting was recently dismissed in Tokyo, for valid reasons.

In this proposal, one client initiated unidirectional stream of type "Max Push ID update" may be created by a client as a clear signal of its interest in enabling server push. Push IDs sent on the stream can only increase in value, any decrease is a *Stream* error of type TBD (possibly just generic HTTP protocol error). Judicious endpoints can upgrade stream error to connection error if they so wish. For reference, closing the H3 control streams is verboten. This solves the problem with the draft 18 text that suggests sending a connection error of MALFORMED_FRAME if a MAX_PUSH_ID frame is received with a value lower than previously seen.

Applying validation at the stream level may be easier to implement, needing only compare next push ID to previous push ID.

One problem with this proposal is that it adds another stream that a server needs to coordinate with. However, server push is already coordinating over the control stream, request streams and push streams.



-- 
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/2418