Re: [quicwg/base-drafts] Connection ID DT output (#1742)

Rui Paulo <notifications@github.com> Wed, 12 September 2018 22:24 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 A24F5130DF1 for <quic-issues@ietfa.amsl.com>; Wed, 12 Sep 2018 15:24:04 -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 JZIStLrI6Yza for <quic-issues@ietfa.amsl.com>; Wed, 12 Sep 2018 15:24:02 -0700 (PDT)
Received: from out-5.smtp.github.com (out-5.smtp.github.com [192.30.252.196]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A8A88129C6B for <quic-issues@ietf.org>; Wed, 12 Sep 2018 15:24:02 -0700 (PDT)
Date: Wed, 12 Sep 2018 15:24:01 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1536791041; bh=TW9Dl9Z9pSxUT/bTWJajQZ8AtC1N52xu5P08kSvwCEE=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=XqI0VvMImVxkG/vY+yOnxwXmTQ7UzR5IUPQbKZk9Hf4TvofPcG2d5aNY0Lv6v4KEp GsRAehcS51AKSjeDuYFemJS+q0wxvTpIdDwY9Fxlgy46HXftsf4Gl5qQlJHxh+uuGr FiWmo0Fej5ieAO0q9SgFFkf7lbqk7ksJx4o2tNt8=
From: Rui Paulo <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abecc42ffa18100dbb106e4bc965520a8fd094367492cf0000000117b1540192a169ce156fd3c0@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/1742/review/154860197@github.com>
In-Reply-To: <quicwg/base-drafts/pull/1742@github.com>
References: <quicwg/base-drafts/pull/1742@github.com>
Subject: Re: [quicwg/base-drafts] Connection ID DT output (#1742)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5b999201d1064_2dc23fc62d2d45b42694d2"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: rpaulo
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/X34sjY-I-3lzwrn7SBshnyV6iWU>
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, 12 Sep 2018 22:24:05 -0000

rpaulo commented on this pull request.



> +|   Length (8)  |          Connection ID (32..144)            ...
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+~~~
+
+The fields are:
+
+Length:
+
+: An 8-bit unsigned integer containing the length of the connection ID.
+
+Connection ID:
+
+: A connection ID of the specified length.
+
+Receipt of a CONNECTION_ID_FINISHED frame containing a connection ID that was
+not previously sent to the peer MAY be treated as a connection error of type

I'm not sure how this works with packet loss / reordering.  If a new CID is retired shortly after it is issued, this problem will happen and I suppose that's why you wrote 'MAY' and not 'SHOULD'.
Can't we require implementations to wait for an ACK of the NEW_CONNECTION_ID before issuing a CONNECTION_ID_FINISHED?

> +
+
+### Issuing Connection IDs
+
+An endpoint issues connection IDs to its peer for the peer to use when sending
+packets. This allows the endpoint control over the strategy used to interpret
+connection IDs of packets that it receives.  These connection IDs are
+communicated to the peer using NEW_CONNECTION_ID frames
+({{frame-new-connection-id}}).
+
+The initial connection ID issued to the peer is sent by the endpoint as the
+Source Connection ID during the handshake, ensuring that the peer always begins
+the connection with at least one connection ID to use when sending.  An endpoint
+SHOULD supply its peer with additional connection IDs via NEW_CONNECTION_ID
+frames. While each endpoint can choose how many connection IDs to issue, a
+recommended number of outstanding connection IDs is eight.

I wonder if recommending a specific number is helpful.  Do we have any operation experience about suggesting 8?

> +({{frame-connection-id-finished}}).
+
+Implementations SHOULD ensure that peers have sufficient connection IDs
+available to reduce the possibility of peers exhausting their supply of
+available connection IDs.  An implementation could do this by always supplying a
+new connection ID for each connection ID retired with a CONNECTION_ID_FINISHED
+frame. When a receiver of a packet notices that its peer is now using a
+previously unused connection ID, it can choose to supply its peer with a new
+connection ID using a NEW_CONNECTION_ID frame to reduce the possibility of its
+peer running out of available connection IDs.
+
+An endpoint that receives a packet with a different remote address than
+previously used SHOULD also switch to sending with a different connection ID.
+This can help to ensure that different connection IDs will be used in both
+directions when an endpoint migrates to a new path or changes connection ID on
+an existing path.

I guess the problem is that this paragraph implies the remote peer did not change CID but the address changed (perhaps NAT binding).  If we switch CIDs, does it really require the remote end to switch CIDs?  The likability problem is still there, I think.

-- 
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/pull/1742#pullrequestreview-154860197