Re: [quicwg/base-drafts] Gorry's ECN rewrite (#4059)

Lars Eggert <notifications@github.com> Thu, 03 September 2020 13:29 UTC

Return-Path: <bounces+848413-a050-quic-issues=ietf.org@sgmail.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 C8DF43A0BF6 for <quic-issues@ietfa.amsl.com>; Thu, 3 Sep 2020 06:29:14 -0700 (PDT)
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, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=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 e76KxPWvQuhL for <quic-issues@ietfa.amsl.com>; Thu, 3 Sep 2020 06:29:13 -0700 (PDT)
Received: from o8.sgmail.github.com (o8.sgmail.github.com [167.89.101.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A17DD3A0BF4 for <quic-issues@ietf.org>; Thu, 3 Sep 2020 06:29:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; h=from:reply-to:to:cc:in-reply-to:references:subject:mime-version:content-type:content-transfer-encoding:list-id:list-archive:list-post:list-unsubscribe; s=s20150108; bh=jd5gb1p2pAXg9QBAOWg/wPW7qt8BcjiNeZhClVqPaNI=; b= kPIW2Lkp/sPPMrsnJHPdRU6kahgDkKKFK+ho6kDoi3I6YoBuLk2ybTQfhRYRjzo9 xm1XaLmAzviwBU5KO0KyjlcdomWE2penZOw9I6tHBQPQKo1sEwTcoZsJn766Qhiu wdENhxqqTkPa8Tc5bu+eslotKLlQfGMDSQbxHX9NIGw=
Received: by filter0692p1iad2.sendgrid.net with SMTP id filter0692p1iad2-17673-5F50EFA4-10 2020-09-03 13:29:08.248653619 +0000 UTC m=+130269.607017904
Received: from github-lowworker-39ac79b.ac4-iad.github.net (unknown) by ismtpd0068p1mdw1.sendgrid.net (SG) with ESMTP id qPKCug_3SDWUzEj_kF9MvA for <quic-issues@ietf.org>; Thu, 03 Sep 2020 13:29:08.118 +0000 (UTC)
Received: from github.com (localhost [127.0.0.1]) by github-lowworker-39ac79b.ac4-iad.github.net (Postfix) with ESMTP id C8B0C18C035F for <quic-issues@ietf.org>; Thu, 3 Sep 2020 06:29:07 -0700 (PDT)
Date: Thu, 03 Sep 2020 13:29:08 +0000
From: Lars Eggert <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJKZJUTSKG7AVX4ZI5WN5LTIKHEVBNHHCR5CFZA@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/4059/review/481826612@github.com>
In-Reply-To: <quicwg/base-drafts/pull/4059@github.com>
References: <quicwg/base-drafts/pull/4059@github.com>
Subject: Re: [quicwg/base-drafts] Gorry's ECN rewrite (#4059)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5f50efa3c7074_177f19f04387b0"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: larseggert
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
X-SG-EID: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak170H58YBVgncKK8oWAqPdzkAWHSZaYAa/pLA TvXOShVKSbjbm8D+t0vki079n1IBr8stLkfvkflxU7HX/xEa3JMN1y/uLYpCVS4GyB8rsatJjVK+Hi RjIwPvcPEclte5uc0GYR014kdRMZRy89bgnQPR8iKpuhn+/vjs3beK3VHnzsIVA3th1W5g61KyX1lq 8=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/TU2TANKMfaWqFO8DD43i4LaAe5o>
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, 03 Sep 2020 13:29:15 -0000

@larseggert requested changes on this pull request.



> -rate in response, as described in {{QUIC-RECOVERY}}.
-
-To use ECN, QUIC endpoints first determine whether a path supports ECN marking
-and the peer is able to access the ECN codepoint in the IP header.  A network
-path does not support ECN if ECN marked packets get dropped or ECN markings are
-rewritten on the path. An endpoint validates the use of ECN on the path, both
-during connection establishment and when migrating to a new path
-({{migration}}).
+detect and respond to network congestion.  ECN allows an endpoint to set an ECT
+codepoint in the ECN field of an IP packet. A network node can then indicate
+congestion by setting the CE codepoint in the ECN field instead of dropping the
+packet {{?RFC8087}}.  Endpoints react to reported congestion by reducing their
+sending rate in response, as described in {{QUIC-RECOVERY}}.
+
+To enable ECN, a sending QUIC endpoint first determines whether a path supports
+ECN marking and whether reports the ECN value in received IP headers; see

```suggestion
ECN marking and whether the peer reports the ECN values in received IP headers; see
```

>  
-It is possible for faulty network devices to corrupt or erroneously drop packets
-with ECN markings.  To provide robust connectivity in the presence of such
-devices, each endpoint independently validates ECN counts and disables ECN if
-errors are detected.
+For example, if one each of an Initial, 0-RTT, Handshake, and 1-RTT QUIC packet
+are coalesced, the corresponding counts for the Initial and Handshake packet
+number space will be incremented by one and the counts for the application data

```suggestion
number spaces will be incremented by one each and the counts for the application data
```

>  
-#### Sending ECN Markings
+It is possible for faulty network devices to corrupt or erroneously drop packets
+that set an ECN codepoint.  To provide robust connectivity in the presence of

```suggestion
that carry an ECN codepoint.  To provide robust connectivity in the presence of
```

>  
-* Set the ECT(0) codepoint in the IP header of early outgoing packets sent on a
-  new path to the peer ({{!RFC8311}}).
+* The endpoint SHOULD set the ECT(0) codepoint in the IP header of early

```suggestion
* The endpoint MUST set the ECT(0) codepoint in the IP header of early
```
Can't validate if you don't set it.

>  
-* If all packets that were sent with the ECT(0) codepoint are eventually deemed
-  lost (Section 6 of {{QUIC-RECOVERY}}), validation is deemed to have failed.
+* The endpoint SHOULD monitor whether all packets sent with an ECT codepoint are

```suggestion
* The endpoint MUST monitor whether all packets sent with an ECT codepoint are
```
Can't validate if you don't monitor.

> +  eventually deemed lost (Section 6 of {{QUIC-RECOVERY}}), deeming this as an
+  indication that ECN validation has failed.

```suggestion
  eventually deemed lost (Section 6 of {{QUIC-RECOVERY}}), indicating
  that ECN validation has failed.
```

> +To reduce the chances of misinterpreting loss of packets dropped by a faulty
+network element, an endpoint could set an ECT codepoint for only the first ten
+outgoing packets on a path, or for a period of three RTTs, whichever occurs
+first.

More needs to be said here about why this might be beneficial.

> +{{?RFC8311}}. Implementations that use the ECT(1) codepoint need to
+perform ECN validation using the reported ECT(1) counts.

This whole ECN text needs to make up its mind on whether it wants to specify that ECT(0) should be used, or if it wants to allow ECT(0) or ECT(1). At the moment, it's a mix. And if it wants to allow both, some words need to be added whether an implementation should pick one statically or randomly or whatnot.

>  
-ECN validation MAY fail if the total count for an ECT(0) or ECT(1) marking
-exceeds the total number of packets sent with the corresponding marking.   In
-particular, an endpoint that never applies a particular marking can fail
-validation when a non-zero count for the corresponding marking is received.
-This check can detect when packets are marked ECT(0) or ECT(1) in the network.
+Out of order processing of the ECN counts can result in a validation failure.

What does "out of order processing of the ECN counts" mean? 

>  
-ECN validation MAY fail if the total count for an ECT(0) or ECT(1) marking
-exceeds the total number of packets sent with the corresponding marking.   In
-particular, an endpoint that never applies a particular marking can fail
-validation when a non-zero count for the corresponding marking is received.
-This check can detect when packets are marked ECT(0) or ECT(1) in the network.
+Out of order processing of the ECN counts can result in a validation failure.
+An endpoint SHOULD skip ECN validation for an ACK frame that does not increase

Why is this not a MUST?

-- 
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/4059#pullrequestreview-481826612