Re: [quicwg/base-drafts] Stream creation order (#634)
MikkelFJ <notifications@github.com> Thu, 28 September 2017 07:03 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 E573D13531F for <quic-issues@ietfa.amsl.com>; Thu, 28 Sep 2017 00:03:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.799
X-Spam-Level:
X-Spam-Status: No, score=-9.799 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_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-2.8, SPF_PASS=-0.001, URIBL_BLOCKED=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 y73kdwn3nMmy for <quic-issues@ietfa.amsl.com>; Thu, 28 Sep 2017 00:03:14 -0700 (PDT)
Received: from github-smtp2b-ext-cp1-prd.iad.github.net (github-smtp2-ext3.iad.github.net [192.30.252.194]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id AD4EB135247 for <quic-issues@ietf.org>; Thu, 28 Sep 2017 00:03:14 -0700 (PDT)
Date: Thu, 28 Sep 2017 00:03:13 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1506582193; bh=jHU9wFHzHyE9STeM0ZgsUMk1isT5P/Ndkz1q5ASVKTA=; h=From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=Zkzy/hpX+065mh/3nA5mg5BoTgELDYSoZKtXXzpI2xp+XL0/33FLFYi5qlbCh02ZK XAy2rVN0oFdWu/y/fWRcGDrPGrVNy/Ip440RW21AJjs2PPRYgOBOBe/WhymwEcouW3 n89x2/jzTwD0FsYp+x1PI1fkDfu3Nl8Hy1nL3m1w=
From: MikkelFJ <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab135ca5656e731a2f58b6f27b34789aa9c693ad6f92cf0000000115e460b192a169ce0e164e9f@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/634/332746949@github.com>
In-Reply-To: <quicwg/base-drafts/issues/634@github.com>
References: <quicwg/base-drafts/issues/634@github.com>
Subject: Re: [quicwg/base-drafts] Stream creation order (#634)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_59cc9eb1b314d_7bb3fb36decef2c5785"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: mikkelfj
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/3zi4kOFPn39ZfXK72wzcGjXJUW4>
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, 28 Sep 2017 07:03:17 -0000
stream frame simplification - it’s been a while since I had time to work on my implementation so it is from rough memory, and - I haven’t read the full discussion in this thread - so please bear with me: Once a stream state closes there is a period where you still have to accept incoming stream frames for the pariticular stream id. This might be retransmission of stream data in reverse direction stream data or stream control frames with flow control etc. Those frames may be silently discarded or handled as per protocol. After a while those frames should be considered a serious error resulting in connection termination because clearly the peer isn’t paying attention. The simplest way to handle this is to track a lower bound on stream ID. For this reason it is also really important that “sequential” means next higher value and not just an arbitrary higher number (I made a comment on some issue asking for clarification on this). If stream ID's are unordered, it is necessary to keep track of all recently active streams. The rate of new streams can be high, and the lifetime low, so the dictionary can potentially hold millions of streams. Another concern is new streams. These must be rejected if they have already been closed. For unordered streams this is intractable because you need to keep a dictionary holding billions of random stream id. OTOH - if unordered streams are permitted AND it is permitted to reuse stream ID’s after a while (past grace period of pending stream frames), then stream IDs can be used for context, such as file id on a host.This still requires a dictionary of all recently closed streams, but it is not intractable. Further, ordereded stream ID’s are significant when using unidirectional partial reliable streams where each part of a virtual stream (message) is a new stream ID. Here ordering of stream IDs provide the necessary sequencing - of course a protocol is free to impose this constraint, and it doesn’t affect transport. If streams move to unidirectional only, this changes a lot because you only need to keep the lower level ack logic and the stream context can be closed immediately after sending FIN or RST. I strongly recommend moving to unidirectional only. Kind Regards, Mikkel Fahnøe Jørgensen On 27 September 2017 at 22.09.57, Dmitri Tikhonov (notifications@github.com) wrote: @mikkelfj <https://github.com/mikkelfj> writes: It matters because you have a period where you still accept stream frames before considering them an error - and if there are holes in the stream range it might confuse the logic determing this. Which stream frames do you mean? If stream frames for the streams that are in the "hole," then I do not see where the confusion would be: A stream frame for a stream that is not yet open opens that stream. If the stream count goes over the limit, a connection error is flagged and the connection is aborted. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <https://github.com/quicwg/base-drafts/issues/634#issuecomment-332640629>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AALzN2pXkXrsiGrJ9qMIbn2DEKtRaKaLks5smquVgaJpZM4N73Yh> . -- 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/634#issuecomment-332746949
- Re: [quicwg/base-drafts] Stream creation order (#… Dmitri Tikhonov
- Re: [quicwg/base-drafts] Stream creation order (#… MikkelFJ
- Re: [quicwg/base-drafts] Stream creation order (#… Martin Thomson
- Re: [quicwg/base-drafts] Stream creation order (#… MikkelFJ
- Re: [quicwg/base-drafts] Stream creation order (#… Ryan Hamilton
- Re: [quicwg/base-drafts] Stream creation order (#… ianswett
- Re: [quicwg/base-drafts] Stream creation order (#… Dmitri Tikhonov
- [quicwg/base-drafts] Streams need not be created … janaiyengar
- Re: [quicwg/base-drafts] Streams need not be crea… Martin Thomson
- Re: [quicwg/base-drafts] Stream creation order (#… Dmitri Tikhonov
- Re: [quicwg/base-drafts] Stream creation order (#… janaiyengar
- Re: [quicwg/base-drafts] Stream creation order (#… MikkelFJ
- Re: [quicwg/base-drafts] Stream creation order (#… MikkelFJ
- Re: [quicwg/base-drafts] Stream creation order (#… Dmitri Tikhonov
- Re: [quicwg/base-drafts] Stream creation order (#… Dmitri Tikhonov
- Re: [quicwg/base-drafts] Stream creation order (#… Mike Bishop
- Re: [quicwg/base-drafts] Stream creation order (#… Dmitri Tikhonov
- Re: [quicwg/base-drafts] Stream creation order (#… Martin Thomson
- Re: [quicwg/base-drafts] Stream creation order (#… Dmitri Tikhonov
- Re: [quicwg/base-drafts] Stream creation order (#… MikkelFJ
- Re: [quicwg/base-drafts] Stream creation order (#… ThomasSwindells
- Re: [quicwg/base-drafts] Stream creation order (#… Martin Thomson