Re: [quicwg/base-drafts] Update DPLPMTUD and PMTUD (#3693)

Martin Thomson <notifications@github.com> Tue, 26 May 2020 01:16 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 940083A09A2 for <quic-issues@ietfa.amsl.com>; Mon, 25 May 2020 18:16:46 -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 tUIvd48zhma0 for <quic-issues@ietfa.amsl.com>; Mon, 25 May 2020 18:16:38 -0700 (PDT)
Received: from out-27.smtp.github.com (out-27.smtp.github.com [192.30.252.210]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 54CD73A09A9 for <quic-issues@ietf.org>; Mon, 25 May 2020 18:16:38 -0700 (PDT)
Received: from github-lowworker-56fcc46.va3-iad.github.net (github-lowworker-56fcc46.va3-iad.github.net [10.48.102.32]) by smtp.github.com (Postfix) with ESMTP id 43972E1121 for <quic-issues@ietf.org>; Mon, 25 May 2020 18:16:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1590455797; bh=PDMGvFQr+W3dRD1rv4Z7jNGsWvynxn7QpufWrloqyXA=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=IG1BsxlngoZZejI2ocNRpap0Ov2DXgJU/hg3tQ11FFjMDbf4hFgQhewtEfr+LqENl 4EE1jEowJnl/Pj612uyKkfbbX8sHTThGy2N5pSnroi2J52kUKvSVnMuvMWfbiTuEIr LwcrUDuuGWhdClMSj8seOnHgEKojgQ9WHyUdkiuQ=
Date: Mon, 25 May 2020 18:16:37 -0700
From: Martin Thomson <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK2CNITGGPGHVRMJBGN43BHPLEVBNHHCKNQYNU@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/3693/review/417911791@github.com>
In-Reply-To: <quicwg/base-drafts/pull/3693@github.com>
References: <quicwg/base-drafts/pull/3693@github.com>
Subject: Re: [quicwg/base-drafts] Update DPLPMTUD and PMTUD (#3693)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5ecc6df533f9c_5d893fbe842cd968101217a"; 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/O8UlypUu1pQl9KXh2StstlcQlm0>
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: Tue, 26 May 2020 01:16:47 -0000

@martinthomson commented on this pull request.

Thanks for making a concrete proposal.  It really helps to have it written out.

I have a bunch of suggestions, but I don't see any real barrier to including this text on the basis of this PR.

Don't worry about the CI build failures.  This will need some cleanup, but I can do that fairly easily.  Let's get the text right first.

This is a major change, so I'll be opening an issue to track this.  In a sense, it's editorial because we are only taking text that we previously normatively referenced, but it's big enough to track properly.  Besides, I think that I suggested some substantive changes and I would be sad to see those not included.

>  In the absence of these mechanisms, QUIC endpoints SHOULD NOT send IP packets
-larger than 1280 bytes. Assuming the minimum IP header size, this results in a
-QUIC maximum packet size of 1232 bytes for IPv6 and 1252 bytes for IPv4. A QUIC
-implementation MAY be more conservative in computing the QUIC maximum packet
-size to allow for unknown tunnel overheads or IP header options/extensions.
+larger than the minimum QUIC packet size. 
+
+All QUIC
+packets (except for PMTUD/DPLPMTUD probe packets) SHOULD be sized to fit within the

```suggestion
packets other than PMTUD/DPLPMTUD probe packets SHOULD be sized to fit within the
```

>  
 
-## ICMP Packet Too Big Messages {#icmp-pmtud}
+### Handling of ICMP PTB Messages by PMTUD {#icmp-pmtud}

I would drop PTB from this.  It's already alphabet soup, but this is also accurate:

```suggestion
### Handling of ICMP Messages by PMTUD {#icmp-pmtud}
```

If you are looking for a proper parallel construction, then maybe consider just making this the PMTUD section:

```suggestion
## PMTU Discovery {#icmp-pmtud}
```

>  (e.g., IPv6 Packet Too Big messages) that indicate when a packet is dropped
 because it is larger than the local router MTU. DPLPMTUD can also optionally use
 these messages.  This use of ICMP messages is potentially vulnerable to off-path
 attacks that successfully guess the addresses used on the path and reduce the
 PMTU to a bandwidth-inefficient value.
 
 An endpoint MUST ignore an ICMP message that claims the PMTU has decreased below
-1280 bytes.
+the minimum QUIC packet size bytes.

```suggestion
the minimum QUIC packet size.
```

>  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 {{!DPLPMTUD}}.
-
+associate the message with a corresponding transport connection (e.g., {{!DPLPMTUD}}).

I appreciate the correction of the citation here, but I am not getting the connection still.  Do you have a specific citation in DPLPMTUD that would support this?  Maybe:

```suggestion
associate the message with a corresponding transport connection; see Section X.X
of {{!DPLPMTUD}}.
```

or 
```suggestion
associate the message with a corresponding transport connection; for instance,
Section X.X of {{!DPLPMTUD}} describes Y.
```

> +packet size. The MIN_PLPMTU is the same as the BASE_PMTU.
+
+QUIC endpoints implementing DPLPMTUD maintain a maximum packet size 
+(DPLPMTUD MPS) for each combination of local and remote IP
+addresses. 
+If a QUIC endpoint determines that the PLPMTU between any pair of local
+and remote IP addresses has fallen below the size needed to support
+the minimum QUIC packet size (BASE_PLPMTU), it MUST immediately cease
+sending QUIC packets, except for DPLPMTUD probe packets, on the affected
+path. An endpoint MAY terminate the connection if an alternative
+path cannot be found.
+
+###  DPLPMTUD and Initial Connectivity
+
+From the perspective of DPLPMTUD, QUIC transport is an 
+acknowledged PL. A sender can therefore enter the DPLPMTUD BASE

Expand on first use please.  More so because this acronym is used only once here.

```suggestion
acknowledged packetization layer (PL). A sender can therefore enter the DPLPMTUD BASE
```

>  
-The considerations for processing ICMP messages in the previous section also
+When implementing the algorithm in Section 5 of {{!DPLPMTUD}}, the
+initial value of BASE_PMTU SHOULD be consistent with the minimum QUIC
+packet size. The MIN_PLPMTU is the same as the BASE_PMTU.
+
+QUIC endpoints implementing DPLPMTUD maintain a maximum packet size 
+(DPLPMTUD MPS) for each combination of local and remote IP
+addresses. 

Missing paragraph break.
```suggestion
addresses.

```

> +QUIC endpoints implementing DPLPMTUD maintain a maximum packet size 
+(DPLPMTUD MPS) for each combination of local and remote IP
+addresses. 

Is this a path property?  Because this could be "pair of local and remote addresses" (strike the IP) and then it would include port numbers too.  That is likely more general.

> +state when the QUIC connection handshake has been completed and
+the endpoint has established a 1-RTT key.

Is it necessary for this to happen so late?  I see some implementations probing much earlier than that.  Also, this definition is a new state.  We have "handshake completed", but 1-RTT keys are established earlier than that.  I would just say "handshake completed" and leave it at that.

```suggestion
state when the QUIC connection handshake is complete.
```

> +DPLPMTU Probe packets consists of a QUIC Header and a payload containing a
+PING Frame and multiple PADDING Frames, this can implement
+"Probing using padding data" (see section 4.1 of {{!DPLPMTUD}}. 

This is too narrowly restrictive. I would instead say:

```suggestion
DPLPMTU probe packets are ack-eliciting packets.  Probe packets that use the
PADDING frame therefore implement "Probing using padding data", as defined in
Section 4.1 of {{!DPLPMTUD}}.
```

> +These can be generated without affecting the transfer of other QUIC frames.
+The PING Frame is used to trigger generation of an acknowledgement.
+Multiple PADDING Frames are used together to control the length of the probe packet.  

Again, too prescriptive.

```suggestion
```

> +These frames might not be retransmitted if a probe packet containing
+them is lost.  The frames consume congestion window,
+which could delay the transmission of subsequent application data.

This is incorrect.  PADDING and PING are not retransmitted on loss.  The fact that they are ack-eliciting causes them to consume congestion window, but this is less of a problem if they include other data.  Which they may well do (albeit with a higher risk of that data needing retransmission).

```suggestion

DPLPMTUD probe packets consume congestion window, so they could delay
the transmission of subsequent application.
```

> +DPLPMTU Probe packets consists of a QUIC Header and a payload containing a
+PING Frame and multiple PADDING Frames, this can implement
+"Probing using padding data" (see section 4.1 of {{!DPLPMTUD}}. 
+These can be generated without affecting the transfer of other QUIC frames.
+The PING Frame is used to trigger generation of an acknowledgement.
+Multiple PADDING Frames are used together to control the length of the probe packet.  
+These frames might not be retransmitted if a probe packet containing
+them is lost.  The frames consume congestion window,
+which could delay the transmission of subsequent application data.
+
+###  Validating the QUIC Path with DPLPMTUD
+
+QUIC provides an acknowledged PL, therefore a sender does not
+implement the DPLPMTUD CONFIRMATION_TIMER while in the SEARCH_COMPLETE state.
+
+###  Handling of ICMP PTB Messages by DPLPMTUD

```suggestion
###  Handling of ICMP Messages by DPLPMTUD
```

> +which could delay the transmission of subsequent application data.
+
+###  Validating the QUIC Path with DPLPMTUD
+
+QUIC provides an acknowledged PL, therefore a sender does not
+implement the DPLPMTUD CONFIRMATION_TIMER while in the SEARCH_COMPLETE state.
+
+###  Handling of ICMP PTB Messages by DPLPMTUD
+
+An endpoint using DPLPMTUD requires the validation of any received PTB message 
+before using the PTB information, as defined in section 4.6 of {{!DPLPMTUD}}.
+In addition to UDP Port
+validation, QUIC validates an ICMP message by using other PL
+information (e.g., validation of connection identifiers (CIDs) in the
+quoted packet of any received ICMP message). 
+The further considerations for processing ICMP messages described in the previous section also

```suggestion

The considerations for processing ICMP messages described in {{icmp-pmtud}} also
```

>  The endpoint SHOULD ignore all ICMP messages that fail validation.
 
 An endpoint MUST NOT increase PMTU based on ICMP messages; see Section 3, clause
 6 of {{!DPLPMTUD}}.  Any reduction in the QUIC maximum packet size in response
 to ICMP messages MAY be provisional until QUIC's loss detection algorithm
 determines that the quoted packet has actually been lost.
 
+### PMTUD Probes with Handshake packets

Please move this back.  It belongs where it was taken from.

I realize that you now have a section for PMTUD parallel to the section for PLPMTUD, and this allows you to make the structure cleaner (with two subsections and not one, which I agree is nice), but this text is relevant to both.

(I think that this move points out that the specific use of Handshake isn't the ideal. Though Initial packets might be a bad idea, using 0-RTT is also fine.)

-- 
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/3693#pullrequestreview-417911791