Re: [quicwg/base-drafts] Rewrite Packet Size section (#2036)

Nick Banks <notifications@github.com> Wed, 21 November 2018 16:36 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 9467C128AFB for <quic-issues@ietfa.amsl.com>; Wed, 21 Nov 2018 08:36:07 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.56
X-Spam-Level:
X-Spam-Status: No, score=-2.56 tagged_above=-999 required=5 tests=[DKIMWL_WL_HIGH=-1.46, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_NONE=-0.0001, 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 09zxtilPzm44 for <quic-issues@ietfa.amsl.com>; Wed, 21 Nov 2018 08:36:05 -0800 (PST)
Received: from o4.sgmail.github.com (o4.sgmail.github.com [192.254.112.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EBDDA12E7C1 for <quic-issues@ietf.org>; Wed, 21 Nov 2018 08:36:04 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; 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=IkMl05DgOryXqloqurqetK85ea8=; b=p7139xa5QFH8u0PE aEj9acgKpqvbhktGa4K7gs1zGQ2yKZqiWvACucRYxl5lrnkpRmiElSZCeNlbZGTp x3Pg9h+fZpi7564ij3SfMkoggXB3MHYbD5PdEFyHcjbNL2W3mm0/1ZwqcCI98ySm 02YB6WCIiGKR1FiWpjsUVy4RCSo=
Received: by filter1580p1mdw1.sendgrid.net with SMTP id filter1580p1mdw1-17787-5BF58973-17 2018-11-21 16:36:03.969087713 +0000 UTC m=+346564.993197747
Received: from github-lowworker-e51511d.cp1-iad.github.net (unknown [192.30.252.34]) by ismtpd0018p1iad2.sendgrid.net (SG) with ESMTP id 4CAJbesNTZ-C8d26duZTWg for <quic-issues@ietf.org>; Wed, 21 Nov 2018 16:36:03.970 +0000 (UTC)
Received: from github.com (localhost [127.0.0.1]) by github-lowworker-e51511d.cp1-iad.github.net (Postfix) with ESMTP id E233880B02 for <quic-issues@ietf.org>; Wed, 21 Nov 2018 08:36:03 -0800 (PST)
Date: Wed, 21 Nov 2018 16:36:04 +0000
From: Nick Banks <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab6705cc172d57f7c9a76d95501bcf5b8d8340016592cf00000001180d4b7392a169ce16d66007@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2036/review/177318978@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2036@github.com>
References: <quicwg/base-drafts/pull/2036@github.com>
Subject: Re: [quicwg/base-drafts] Rewrite Packet Size section (#2036)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5bf58973dfc70_58943fb3166d45bc162212"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: nibanks
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: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak1pK4qbclx5aViiStHmU0L6mCG9fXTIWeefy9 Wm990TzFs1nO9u3R6/6MYPGhs+AQGOeO9s1qiC0zxYoVAJQ+zfFoQ+o2Slu3GXLeZKi+hqXuXYG/Ec /Kh5sfPaM6Nu/+YHSbzxAkVQC377KfJXHqX+rXlvfNFcHjciVTbHtl9z645AQf6Tch/oJxdYsCIkHF Y=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/tGQfjewha3k7gGZwFA0eL91l6Hw>
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: Wed, 21 Nov 2018 16:36:07 -0000

nibanks approved this pull request.

Generally looks good to me.

> -The PADDING frame provides a useful option for PMTU probe packets. PADDING
-frames generate acknowledgements, but they need not be delivered reliably. As a
-result, the loss of PADDING frames in probe packets does not require
-delay-inducing retransmission. However, PADDING frames do consume congestion
-window, which may delay the transmission of subsequent application data.
-
-When implementing the algorithm in Section 7.2 of {{!PLPMTUD}}, the initial
-value of search_low SHOULD be consistent with the IPv6 minimum packet size.
-Paths that do not support this size cannot deliver Initial packets, and
-therefore are not QUIC-compliant.
-
-Section 7.3 of {{!PLPMTUD}} discusses trade-offs between small and large
-increases in the size of probe packets. As QUIC probe packets need not contain
-application data, aggressive increases in probe size carry fewer consequences.
-
+larger than 1280 bytes (assuming the minimum IP header size).  This results in

I feel like this `(assuming the minimum IP header size)` should be moved to the end of the following sentence instead of here.

> +Each pair of local and remote addresses could have a different PMTU.  QUIC
+implementations that implement any kind of PMTU discovery therefore SHOULD
+maintain a MPS for each combination of local and remote IP addresses.
+
+If a QUIC endpoint determines that the PMTU between any pair of local and
+remote IP addresses has fallen below the size needed to support the smallest
+allowed MPS, it MUST immediately cease sending QUIC packets on the
+affected path.  This could result in termination of the connection if an
+alternative path cannot be found.
+
+### Processing ICMP Messages to reduce the PMTU {#icmp-pmtud}
+
+PMTU discovery {{!RFC1191}} {{!RFC8201}} relies on reception of ICMP messages
+(e.g., IPv6 Packet Too Big, PTB, messages) that indicate when a packet is
+dropped because it is larger than the local router MTU. DPLPMTUD can also
+optionally utilise these messages.  This use of ICMP messages is

```suggestion
optionally utilize these messages.  This use of ICMP messages is
```

> +
+### Processing ICMP Messages to reduce the PMTU {#icmp-pmtud}
+
+PMTU discovery {{!RFC1191}} {{!RFC8201}} relies on reception of ICMP messages
+(e.g., IPv6 Packet Too Big, PTB, messages) that indicate when a packet is
+dropped because it is larger than the local router MTU. DPLPMTUD can also
+optionally utilise these messages.  This use of ICMP messages is
+potentially vulnerable to off-path attacks that successfully guess the IP
+address 3-tuple and reduce the PMTU to a bandwidth-inefficient value
+{{!RFC8201}}.
+
+QUIC endpoints SHOULD provide validation to protect from off-path injection of
+ICMP messages as specified in {{!RFC8201}} and Section 5.2 of {{!RFC8085}}.
+This uses the quoted packet supplied in the payload of an ICMP message, which,
+when present, can be used to associate the message with a corresponding
+transport connection {{!DPLPMTUD}}.

Is it acceptable that a man-on-the-side could use received packets to spoof the ICMP messages?

> +that connection ID information corresponds to an active session.
+
+Further validation can also be provided:
+
+* An IPv4 endpoint could set the Don't Fragment (DF) bit on a small proportion
+  of packets, so that most invalid ICMP messages arrive when there are no DF
+  packets outstanding, and can therefore be identified as spurious.
+
+* An endpoint could store additional information from the IP or UDP headers to
+  use for validation (for example, the IP ID or UDP checksum).
+
+The endpoint SHOULD ignore all ICMP messages that are not validated or do not
+carry sufficient quoted packet payload to perform validation.  Any reduction in
+the QUIC MPS MAY be provisional until QUIC's loss detection algorithm
+determines that the quoted packet has actually been lost.
+

Since there should be enough quoted text to decode the packet number of the QUIC packet, you could save a hash/checksum of the first X bytes of the QUIC packet and validate that matches. 

-- 
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/2036#pullrequestreview-177318978