Re: [quicwg/base-drafts] No need for RCID if the peer increases Retire Prior To (#3550)

Nick Banks <> Tue, 31 March 2020 14:47 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id D1D1E3A1678 for <>; Tue, 31 Mar 2020 07:47:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.2
X-Spam-Status: No, score=-1.2 tagged_above=-999 required=5 tests=[DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id xTCP6nC3rcUQ for <>; Tue, 31 Mar 2020 07:47:34 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id B2DB93A224A for <>; Tue, 31 Mar 2020 07:47:34 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 8D76D6E04D8 for <>; Tue, 31 Mar 2020 07:47:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1585666052; bh=z9D5EWBKCvO0XzjFTrQ9NEKXSZ+ym0ueSfti5lIzUdw=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=UlmueMokMtH5KDNes6OtKf8risBzXbXVAuBhFZOSOiqhG7QX4C4tI524WEEutrY9u O+ZTYDF7nbi881XzDme1QVVmyTivfukgtgKj9FNAPs6cJlv0hmf+j8v95mEsNVsq4v i+OcXHJWwtybRPtqzpmow96hBAdrdx3HetcNkDUE=
Date: Tue, 31 Mar 2020 07:47:32 -0700
From: Nick Banks <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/pull/3550/review/>
In-Reply-To: <quicwg/base-drafts/pull/>
References: <quicwg/base-drafts/pull/>
Subject: Re: [quicwg/base-drafts] No need for RCID if the peer increases Retire Prior To (#3550)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5e8358047e8b2_170f3fb6cdacd960139883"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: nibanks
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
Archived-At: <>
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 31 Mar 2020 14:47:39 -0000

@nibanks commented on this pull request.

I definitely prefer this type of change over changing the wire format of the RCID frame. Though I still think this design here is significantly more complicated to implement than using the ACK, as you've got to track the "new CID sequence number" for every CID you force your peer to retire and then for every packet that comes in that changes CID you're going to have to iterate through all your retired CIDs (that you're forced to track for this) and check if the new CID's sequence number is greater.

For the ACK design, when a packet is acknowledged you look at the metadata for the packet. Oh, it retired CID X? Go clean it up now. There are no look ups, extra tracking state or walking any lists of things.

> @@ -1007,11 +1007,12 @@ initial connection ID.
 When an endpoint issues a connection ID, it MUST accept packets that carry this
 connection ID for the duration of the connection or until its peer invalidates
 the connection ID via a RETIRE_CONNECTION_ID frame
-({{frame-retire-connection-id}}).  Connection IDs that are issued and not
-retired are considered active; any active connection ID is valid for use with
-the current connection at any time, in any packet type.  This includes the
-connection ID issued by the server via the preferred_address transport
+({{frame-retire-connection-id}}) or it invalidates the connection ID by
+increasing the the Retire Prior To field.  Connection IDs that are issued and

I like the "Retired Prior To". I think we should still consider this as retiring the CID, and not introduce a new term/concept like invalid.

> @@ -1056,18 +1057,20 @@ An endpoint might need to stop accepting previously issued connection IDs in
 certain circumstances.  Such an endpoint can cause its peer to retire connection
 IDs by sending a NEW_CONNECTION_ID frame with an increased Retire Prior To
 field.  The endpoint SHOULD continue to accept the previously issued connection
-IDs until they are retired by the peer.  If the endpoint can no longer process
-the indicated connection IDs, it MAY close the connection.
+IDs until a connection ID greater than or equal to the Retire Prior To value is
+used by the peer.  If the endpoint can no longer process the indicated

I agree with Martin here. The next needs to be updated to refer to the NCID sequence number instead.

 Upon receipt of an increased Retire Prior To field, the peer MUST stop using the
-corresponding connection IDs and retire them with RETIRE_CONNECTION_ID frames
-before adding the newly provided connection ID to the set of active connection
-IDs. This ordering allows an endpoint that has already supplied its peer with as
-many connection IDs as allowed by the active_connection_id_limit transport
-parameter to replace those connection IDs with new ones as necessary.  Failure
-to cease using the connection IDs when requested can result in connection
-failures, as the issuing endpoint might be unable to continue using the
-connection IDs with the active connection.
+corresponding connection IDs.  Use of a newly provided connection ID proves

Well, the use of the **newly provided** connection ID is proof but that's not what the text above talks about, as you've pointed out.

You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub: