Re: [quicwg/base-drafts] Remove timing guidance (#3474)

Eric Kinnear <notifications@github.com> Sun, 23 February 2020 04:44 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 C465E3A0CC2 for <quic-issues@ietfa.amsl.com>; Sat, 22 Feb 2020 20:44:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.1
X-Spam-Level:
X-Spam-Status: No, score=-3.1 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, 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: 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 JIMAHXvmpQnm for <quic-issues@ietfa.amsl.com>; Sat, 22 Feb 2020 20:44:11 -0800 (PST)
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 2034A3A0CC1 for <quic-issues@ietf.org>; Sat, 22 Feb 2020 20:44:10 -0800 (PST)
Date: Sat, 22 Feb 2020 20:44:09 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1582433049; bh=u06OfRnkLEMQtExhRjIklDRTgLz9/JovKJsrmlkoays=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=RWNpP6L6Mo37SY97ZnQTHyI4xx1qwNigz+j4QpWYhzgDryczLECEfijCt+xbSmrzQ YcokL2ScfkGXAJJ1TGxqfoMl5YHbJViIcijXSUs65sfBM5uCNdpKqlq7CelPFpsMau 3w5em+Y+Ej/+OUoaS6w1oBj4Bfy32yeLj0q6IBfs=
From: Eric Kinnear <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK5JDTLTOAXFZ6II2MV4L42ZTEVBNHHCD3AHXI@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/3474/review/363065290@github.com>
In-Reply-To: <quicwg/base-drafts/pull/3474@github.com>
References: <quicwg/base-drafts/pull/3474@github.com>
Subject: Re: [quicwg/base-drafts] Remove timing guidance (#3474)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5e520319c4937_2a63fcb286cd9681271e"; charset=UTF-8
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: erickinnear
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/Kujesojzo98fROAOHAU8Qm4G1rs>
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: Sun, 23 Feb 2020 04:44:13 -0000

erickinnear approved this pull request.

Thanks for writing this up! 

> -An endpoint MAY discard a connection ID for which retirement has been requested
-once an interval of no less than 3 PTO has elapsed since an acknowledgement is
-received for the NEW_CONNECTION_ID frame requesting that retirement.  Until
-then, the endpoint SHOULD be prepared to receive packets that contain the
-connection ID that it has requested be retired.  Subsequent incoming packets
-using that connection ID could elicit a response with the corresponding
-stateless reset token.
+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.
+
+Upon receipt of an increased Retire Prior To field, the peer MUST first stop
+using the corresponding connection IDs using RETIRE_CONNECTION_ID frames and

How about: 
```
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.
```

We'd discussed adding some extra text making it very obvious the point about the ordering enabling replacing a full limit, and having that text might make it easier to reword the first sentence further.

This still loses the idea that it may take a little while to stop using the CIDs (FWIW, I don't think we need to care about that part, the only real requirement here is that you retire them, and if you generate R_CID then you must have drained your outbound processing by the time the frame gets there).

> -connection ID that it has requested be retired.  Subsequent incoming packets
-using that connection ID could elicit a response with the corresponding
-stateless reset token.
+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.
+
+Upon receipt of an increased Retire Prior To field, the peer MUST first stop
+using the corresponding connection IDs using RETIRE_CONNECTION_ID frames and
+then add the newly provided connection ID to the set of active connection IDs.
+Failure to retire the connection IDs promptly can cause failure of the
+connection, either because the endpoint closed the connection or can no longer
+associate these connection IDs with the active connection.

+1 this seems to capture it, otherwise I'd be a bit unsure what "because the endpoint closed the connection" meant and why that was my fault.

-- 
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/3474#pullrequestreview-363065290