Re: [quicwg/base-drafts] Allow endpoints to generate traffic keys asynchronously (#3874)

ianswett <notifications@github.com> Thu, 06 August 2020 01: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 D552F3A0BC2 for <quic-issues@ietfa.amsl.com>; Wed, 5 Aug 2020 18:44:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.101
X-Spam-Level:
X-Spam-Status: No, score=-3.101 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, RCVD_IN_MSPIKE_H2=-0.001, 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 J7r4mzR_zf1I for <quic-issues@ietfa.amsl.com>; Wed, 5 Aug 2020 18:44:41 -0700 (PDT)
Received: from out-11.smtp.github.com (out-11.smtp.github.com [192.30.254.194]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 36FDA3A0BC0 for <quic-issues@ietf.org>; Wed, 5 Aug 2020 18:44:41 -0700 (PDT)
Received: from github-lowworker-d31a065.va3-iad.github.net (github-lowworker-d31a065.va3-iad.github.net [10.48.17.70]) by smtp.github.com (Postfix) with ESMTP id 8BF4D580D9F for <quic-issues@ietf.org>; Wed, 5 Aug 2020 18:44:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1596678280; bh=3eaoW3FIb9LuuZnLrvWFDgEYc/ti7+7pVXFGNh/XEtk=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=BSQkcr81foqAS/jt3QnGMH1Vu87gQWr9WJFeBPFgpGgIsMqWZXlaRzgylo+Ip+JOJ oi9VFGNkgz+sj8edWrLAbj8db8kW7LCh2jcwMlD172+iGKB8xzBnG0cv0vnKPB829G F08mpUgYR/O+pr/dDAL5inyyzzt+e4wTbElOHgOA=
Date: Wed, 05 Aug 2020 18:44:40 -0700
From: ianswett <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJKZDNIIL5YKZGUMWATV5G5AYREVBNHHCN3MY3A@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/3874/review/462127379@github.com>
In-Reply-To: <quicwg/base-drafts/pull/3874@github.com>
References: <quicwg/base-drafts/pull/3874@github.com>
Subject: Re: [quicwg/base-drafts] Allow endpoints to generate traffic keys asynchronously (#3874)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5f2b608845879_178216f83163d8"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: ianswett
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/mtKD_gQi9TVfbA1ROhatoIlwXfI>
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: Thu, 06 Aug 2020 01:44:43 -0000

@ianswett commented on this pull request.

This PR is pretty wide-reaching and not isolated to traffic key generation I think we should re-title it before landing to avoid confusion.

>  
-- MUST use the lesser of the value reported in ACK Delay field of the ACK frame
-  and the peer's max_ack_delay transport parameter.
+- SHOULD ignore the peer's max_ack_delay until the handshake is confirmed,

You have "MAY ignore max_ack_delay until the handshake is confirmed" above.

> -latency at the peer or loss of previous ACK frames.  Any delays beyond the
-peer's max_ack_delay are therefore considered effectively part of path delay and
-incorporated into the smoothed_rtt estimate.
+for acknowledgement delays. These delays are computed using the ACK Delay
+field of the ACK frame as described in Section 19.3 of {{QUIC-TRANSPORT}}.
+
+As the peer might report acknowledgement delays that are larger than the peer's
+max_ack_delay during the handshake (Section 13.2.1 of {{QUIC-TRANSPORT}}), the
+endpoint MAY ignore max_ack_delay until the handshake is confirmed (Section
+4.1.2 of {{QUIC-TLS}}). Since these large acknowledgement delays, when they
+occur, are likely to be non-repeating and limited to the handshake, the endpoint
+can use them without limiting them to the max_ack_delay and avoid unnecessarily
+inflating the smoothed_rtt estimate.
+
+After the handshake is confirmed, any acknowledgement delays reported by the
+peer that are greater than its max_ack_delay are attributed to unintentional but

```suggestion
peer that are greater than the peer's max_ack_delay are attributed to unintentional but
```

> +previous acknowledgements. Any delays beyond the peer's max_ack_delay are
+therefore considered effectively part of path delay and incorporated into the
+smoothed_rtt estimate.

```suggestion
previous acknowledgements. Therefore, these extra delays are considered
effectively part of path delay and incorporated into the smoothed_rtt and
rttvar.
```

>  
 When adjusting an RTT sample using peer-reported acknowledgement delays, an
 endpoint:
 
-- MUST ignore the ACK Delay field of the ACK frame for packets sent in the
-  Initial and Handshake packet number space.
+- MAY ignore the acknowledgement delay for Initial packets,

Given we say you should acknowledge these immediately, why is this a MAY?  I'm not aware of any issues this solves vs a MUST or SHOULD.

> @@ -379,8 +387,9 @@ default values.
 On subsequent RTT samples, smoothed_rtt and rttvar evolve as follows:
 
 ~~~
-ack_delay = acknowledgement delay from ACK frame
-ack_delay = min(ack_delay, max_ack_delay)
+ack_delay = decoded ACK Delay field from ACK frame

I think the old text was clearer in this case.
```suggestion
ack_delay = acknowledgement delay from ACK frame
```

> @@ -389,6 +398,13 @@ rttvar_sample = abs(smoothed_rtt - adjusted_rtt)
 rttvar = 3/4 * rttvar + 1/4 * rttvar_sample
 ~~~
 
+An endpoint might postpone the processing of acknowledgements when the

I agree this would be better above.  Also, I think we should make this tighter, since it only applies ACKs of 0-RTT and 0.5-RTT packets.

> +An endpoint might postpone the processing of acknowledgements when the
+corresponding decryption keys are not immediately available. For example, a
+client might receive an acknowledgement for a 0-RTT packet that it cannot
+decrypt because 1-RTT packet protection keys are not yet available to it. In
+such cases, an endpoint SHOULD ignore such local delays in its round-trip time
+sample until the handshake is confirmed.

```suggestion
An endpoint might receive packets in ApplicationData containing
acknowledgements which cannot be processed immediately due to a
lack of 1-RTT decryption keys. For example, a client might receive an
acknowledgement for a 0-RTT packet that it cannot decrypt because
1-RTT packet protection keys are not yet available to it. In such cases,
an endpoint SHOULD subtract the time the packet was buffered and
unable to be decrypted from the round-trip time sample.
```

-- 
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/3874#pullrequestreview-462127379