[quicwg/base-drafts] Unidirectional stream all the control things in HTTP/3 (#2678)
Mike Bishop <notifications@github.com> Wed, 08 May 2019 16:15 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 DA7DA120271 for <quic-issues@ietfa.amsl.com>; Wed, 8 May 2019 09:15:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.01
X-Spam-Level:
X-Spam-Status: No, score=-8.01 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, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01] 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 GR0G9FulzzUX for <quic-issues@ietfa.amsl.com>; Wed, 8 May 2019 09:14:58 -0700 (PDT)
Received: from out-2.smtp.github.com (out-2.smtp.github.com [192.30.252.193]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1BB6C120161 for <quic-issues@ietf.org>; Wed, 8 May 2019 09:14:47 -0700 (PDT)
Date: Wed, 08 May 2019 09:14:45 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1557332085; bh=YD9WHH/hozDZwNXz7lKWpg15mkNZQwy8q8Z0sWM2mKg=; h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=MLoMJ7OzMH3jwh27yKcmomKrgX2cODqScePSloehoz6rJyZkHVcABrzF7Z+n0R/+5 3zdS8BGpTLRDb0AG/B7mPZHQVswSZGx/0cO91rxuYV40IVVxX2Ue4XxlpX890SotHK 9LE0QL2UtLua5Uyi325WyZDLlvNHgEh4Ah+qwPXE=
From: Mike Bishop <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK75ZSX7SH4VJCQOBN524AZPLEVBNHHBUVMWDQ@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/2678@github.com>
Subject: [quicwg/base-drafts] Unidirectional stream all the control things in HTTP/3 (#2678)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5cd30075de331_492f3fd8cb0cd96822878b"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: MikeBishop
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/XyVPgwX7dWMRReQIKLtxFz_GBwQ>
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: Wed, 08 May 2019 16:15:03 -0000
Separating out discussion from #2502: @martinthomson: > That suggests the creation of a "priority" stream... @LPardue: > A priority stream, in our current scheme, has some desireable properties because it aligns with the asymmetry, i.e. only client can create a priority stream. If anyone cared you could borrow QPACK encoder/decoder model so that the client has clear indication when priorities were processed. One could go as far as adopting that model further, > > 1. priority stream(s) contains unframed instructions > 2. PRIORITY frame on request is just a shell that contains references to priority state. > > This opens a possibility to have alternative priority schemes based on opening different types of priority streams. > > It all sounds terribly complicated though :D @martinthomson: > Not really complicated. Possibly less complicated, especially if you consider that dropping the priority stream could be permitted if it were separated from SETTINGS. And SETTINGS could get its own stream too :) > > I wouldn't go so far as to say unframed priority signals, but the possibility to dispense with framing is appealing to some extent. Complicated comes when you have a marked in a stream saying what priority state you are depending on. That wouldn't necessarily be a blocking signal in the same way that QPACK is, but it certainly drives complexity upward slightly. More generally, the control stream provides stronger ordering guarantees than are needed, and produces head-of-line blocking if a frame can't be immediately consumed for some reason (a possibility being discussed in #2502). We have a small set of frames which are sent on the control stream: - SETTINGS (sent only once) - PRIORITY (ordering requirements only with respect to each other) - CANCEL_PUSH (no ordering requirements) - GOAWAY (currently ordering requirements only with respect to each other; could be unordered without loss of information) - MAX_PUSH_ID (currently ordering requirements only with respect to each other; could be unordered without loss of information) Some of these might be reasonable candidates for unidirectional streams of possibly-unframed instructions, similar to QPACK. If enough things fall into this category, we could potentially eliminate the control stream. While this has implications for extensions being ported to HTTP/3, saying that what was a new frame type on the control stream becomes a new unidirectional stream type with length-prefixed payloads of known type isn't as big a leap as it might initially seem. Note that this would make #2559 even more of a problem. What do you do without enough unidirectional stream ID space to send your GOAWAY, for example? I don't necessarily advocate this change, given how late we are in the process, but I'd rather have it as a separate issue for discussion than get it intertwined with the discussion on #2502. -- 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/2678
- [quicwg/base-drafts] Unidirectional stream all th… Mike Bishop
- Re: [quicwg/base-drafts] Unidirectional stream (s… Lucas Pardue
- Re: [quicwg/base-drafts] Unidirectional stream (s… Lucas Pardue
- Re: [quicwg/base-drafts] Unidirectional stream (s… Kazuho Oku
- Re: [quicwg/base-drafts] Unidirectional stream (s… Dmitri Tikhonov
- Re: [quicwg/base-drafts] Unidirectional stream (s… ianswett
- Re: [quicwg/base-drafts] Unidirectional stream (s… Dmitri Tikhonov
- Re: [quicwg/base-drafts] Unidirectional stream (s… ianswett
- Re: [quicwg/base-drafts] Unidirectional stream (s… Mike Bishop
- Re: [quicwg/base-drafts] Unidirectional stream (s… Mike Bishop