Re: [quicwg/base-drafts] Massive batch of probably-editorial nits (#3805)

Martin Thomson <notifications@github.com> Fri, 03 July 2020 05:57 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 DFD563A0D13 for <quic-issues@ietfa.amsl.com>; Thu, 2 Jul 2020 22:57:21 -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 I9yRGN5ICDjt for <quic-issues@ietfa.amsl.com>; Thu, 2 Jul 2020 22:57:19 -0700 (PDT)
Received: from out-17.smtp.github.com (out-17.smtp.github.com [192.30.252.200]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 91F5C3A0D12 for <quic-issues@ietf.org>; Thu, 2 Jul 2020 22:57:19 -0700 (PDT)
Received: from github-lowworker-9d2806a.ash1-iad.github.net (github-lowworker-9d2806a.ash1-iad.github.net [10.56.102.50]) by smtp.github.com (Postfix) with ESMTP id D493C6E0D74 for <quic-issues@ietf.org>; Thu, 2 Jul 2020 22:57:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1593755838; bh=jHUaYMLRiXJVCeHiRJ7JENOLEsWgXVSCt+CKZlx/KPw=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=c3T0VxSfqb9Orhv8O10W9AHK13fIQ8EMvz6PTmupYbULpnVKfReD7GYwTsZScnY0G 4esSaOAa43kqX+jI5KIEYi81SCqRgmDp/h3hMm5enzoavuFPNntMgtnFCX7D+p3h+r ca2mlqbvH5V1nodpQD0Ngczt8pyA5C/yXdVNBPMY=
Date: Thu, 02 Jul 2020 22:57:18 -0700
From: Martin Thomson <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJKZ4V7TETEPEHYFOCA55BKU35EVBNHHCNKDJHI@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/3805/review/442152935@github.com>
In-Reply-To: <quicwg/base-drafts/pull/3805@github.com>
References: <quicwg/base-drafts/pull/3805@github.com>
Subject: Re: [quicwg/base-drafts] Massive batch of probably-editorial nits (#3805)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5efec8bec4f6e_7ec73fe5bd8cd95c6568eb"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: martinthomson
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/NXWMtRXfJUaDqsYMU09KVQAosLg>
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: Fri, 03 Jul 2020 05:57:23 -0000

@martinthomson commented on this pull request.

These are pretty uniformly good, except for a few cases.

I found one genuine error, and have a few suggestions.

I do question the change to add parentheses for references to citations, that is `({{?FOO}})` as opposed to `{{?FOO}}`.  The extra line noise in output is a little difficult to parse.  Maybe we need to agree on an editorial policy regarding this.

> +: When used without qualification, the tuple of IP version, IP address, and UDP
+  port number that represents one end of a network path.

I think that Mike's edit is fine.  We can ignore the fixed parts of this, which includes that it is QUIC.

> +  endpoint.  Each endpoint sets one or more values for its peer to include in
+  packets sent towards the endpoint.

I think that we should be saying "selects one or more connection IDs".  I might have misread the suggestion here like Jana and read it to mean that a connection ID is "one or more values".

> @@ -235,12 +235,12 @@ Stream:
 
 Application:
 
-: An entity that uses QUIC to send and receive data.
+: An entity running on an endpoint that uses QUIC to send and receive data.

I'm mildly negative on this.  This says too much about how the application and stack are related.

> @@ -357,7 +357,6 @@ Within each type, streams are created with numerically increasing stream IDs.  A
 stream ID that is used out of order results in all streams of that type with
 lower-numbered stream IDs also being opened.
 
-The first bidirectional stream opened by the client has a stream ID of 0.

Removed on what basis?  I know that this *seems* intuitive, and we do say 0..2^62-1 but an explicit statement that identifies the first value isn't harmful, is it?

Or are you saying that we have too much baggage and we shouldn't let that show so much?

>  
 An endpoint SHOULD copy the error code from the STOP_SENDING frame to the
 RESET_STREAM frame it sends, but MAY use any application error code.  The
 endpoint that sends a STOP_SENDING frame MAY ignore the error code carried in
 any RESET_STREAM frame it receives.
 
-If the STOP_SENDING frame is received on a stream that is already in the
-"Data Sent" state, an endpoint that wishes to cease retransmission of
-previously-sent STREAM frames on that stream MUST first send a RESET_STREAM
-frame.

I like the new text.  Thanks.

> @@ -1165,9 +1155,9 @@ discarded if they indicate a different protocol version than that of the
 connection, or if the removal of packet protection is unsuccessful once the
 expected keys are available.
 
-Invalid packets without packet protection, such as Initial, Retry, or Version
-Negotiation, MAY be discarded.  An endpoint MUST generate a connection error if
-it commits changes to state before discovering an error.
+Invalid packets without effective confidentiality protection, such as Initial,

! The operative protection provided here is data origin authentication, which is why I chose to talk about packet protection instead (rather than introduce people to a new concept).

> @@ -1189,11 +1179,10 @@ that packet.
 ### Server Packet Handling {#server-pkt-handling}
 
 If a server receives a packet that indicates an unsupported version but is large
-enough to initiate a new connection for any one supported version,
-the server SHOULD send a Version Negotiation packet as described in
-{{send-vn}}. Servers MAY limit the number of packets that it responds to with a
-Version Negotiation packet. Servers MUST drop smaller packets that specify
-unsupported versions.
+enough to initiate a new connection for any one supported version, the server

```suggestion
enough to initiate a new connection for any supported version, the server
```

> @@ -2496,9 +2478,8 @@ ensure connection stability. This section describes the protocol for migrating a
 connection to a preferred server address.
 
 Migrating a connection to a new server address mid-connection is left for future
-work. If a client receives packets from a new server address not indicated by
-the preferred_address transport parameter, the client SHOULD discard these
-packets.
+work. If a client receives packets from a new server address when the client has
+not initiated a migration, the client SHOULD discard these packets.

This is slightly different.  It's not as tight as it was, because it could be read to allow any server address to be used if the client decides to migrate.  That's probably not your intent.

> +included.  Including older packets reduces the chance of spurious
+retransmissions caused by losing previously sent ACK frames, at the cost of
+larger ACK frames.

```suggestion
included.  Including acknowledgments for older packets reduces the chance of
spurious retransmissions caused by losing previously sent ACK frames, at the
cost of larger ACK frames.
```

>  such as once per round trip, to elicit an ACK from the peer.
 
-A receiver MUST NOT bundle an ack-eliciting frame with packets that would
+A receiver MUST NOT send an ack-eliciting frame in all packets that would

I agree.  (Though it was probably me that deleted it.)

>  
 * If all packets that were sent with the ECT(0) codepoint are eventually deemed
-  lost {{QUIC-RECOVERY}}, validation is deemed to have failed.
+  lost ({{QUIC-RECOVERY}}), validation is deemed to have failed.

```suggestion
  lost (Section 6 of {{QUIC-RECOVERY}}), validation is deemed to have failed.
```

>  
 To reduce the chances of misinterpreting congestive loss as packets dropped by a
 faulty network element, an endpoint could set the ECT(0) codepoint for only the
 first ten outgoing packets on a path, or for a period of three RTTs, whichever
 occurs first.
 
 Other methods of probing paths for ECN support are possible, as are different
-marking strategies. Implementations MAY use other methods defined in RFCs; see
-{{?RFC8311}}. Implementations that use the ECT(1) codepoint need to perform ECN
-validation using ECT(1) counts.
+marking strategies. Implementations MAY use other methods; see {{?RFC8311}}.

The defined in RFCs is a restatement of the requirements in RFC 8311 that I was specifically requested to include.  I know that it is clumsy, but it's an important point (and apparently a touchy one).

> @@ -3924,7 +3907,8 @@ endpoints risk datagrams being lost if they send packets larger than the
 smallest allowed maximum packet size of 1200 bytes.
 
 UDP datagrams MUST NOT be fragmented at the IP layer.  In IPv4
-{{!IPv4=RFC0791}}, the DF bit MUST be set to prevent fragmentation on the path.
+({{!IPv4=RFC0791}}), the DF bit MUST be set to prevent fragmentation on the

I generally haven't bothered with parentheses for citations in these cases, as they get brackets.

> @@ -4008,8 +3992,8 @@ off-path injection as specified in {{!RFC8201}} and Section 5.2 of {{!RFC8085}}.
 This validation SHOULD use the quoted packet supplied in the payload of an ICMP
 message to associate the message with a corresponding transport connection (see
 Section 4.6.1 of {{!DPLPMTUD}}).  ICMP message validation MUST include matching
-IP addresses and UDP ports {{!RFC8085}} and, when possible, connection IDs to an
-active QUIC session.  The endpoint SHOULD ignore all ICMP messages that fail
+IP addresses and UDP ports ({{!RFC8085}}) and, when possible, connection IDs to

Unlike above, this would seem to require the parenthetical.

> @@ -5825,8 +5810,8 @@ NEW_CONNECTION_ID frames contain the following fields:
 
 Sequence Number:
 
-: The sequence number assigned to the connection ID by the sender.  See
-  {{issue-cid}}.
+: The sequence number assigned to the connection ID by the sender, encoded as a
+  variable-length integer.  See {{issue-cid}}.

or
```suggestion
  variable-length integer; see {{issue-cid}}.
```

-- 
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/3805#pullrequestreview-442152935