Re: [quicwg/base-drafts] A more complete connection migration (#1012)
janaiyengar <notifications@github.com> Tue, 20 February 2018 22:45 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 0E509126C3D for <quic-issues@ietfa.amsl.com>; Tue, 20 Feb 2018 14:45:56 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.029
X-Spam-Level:
X-Spam-Status: No, score=-2.029 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=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 n9Z8hrhTsbhg for <quic-issues@ietfa.amsl.com>; Tue, 20 Feb 2018 14:45:54 -0800 (PST)
Received: from o1.sgmail.github.com (o1.sgmail.github.com [192.254.114.176]) (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 EED83120724 for <quic-issues@ietf.org>; Tue, 20 Feb 2018 14:45:53 -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=CEMdQ9vXTIsVaslPgW3ST3p9uiM=; b=YBmVSjfGixxNIY6P FRVPARAicHRaR7FtaYtdoTnEFEyhBt41vOGuPmto9kQXNH5MfmgmZLlV5r5pKYPD dILe2wfmCQcc1UINvSd9gel2FdObZQLAKqNMJXg3A5pFS8q/eIqrOmYgVg+evNCd MALMcxcfEpihgm29DgidcsrsR+w=
Received: by filter0417p1iad2.sendgrid.net with SMTP id filter0417p1iad2-11886-5A8CA520-26 2018-02-20 22:45:52.996045683 +0000 UTC
Received: from github-smtp2a-ext-cp1-prd.iad.github.net (github-smtp2a-ext-cp1-prd.iad.github.net [192.30.253.16]) by ismtpd0009p1iad2.sendgrid.net (SG) with ESMTP id atZqUFPJRsSfCNG7kKS1tg for <quic-issues@ietf.org>; Tue, 20 Feb 2018 22:45:52.958 +0000 (UTC)
Date: Tue, 20 Feb 2018 22:45:53 +0000
From: janaiyengar <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abbcbb098c95bb496dcbfb98d228caf87cd9380c6a92cf0000000116a4672092a169ce10c89c07@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/1012/review/98003702@github.com>
In-Reply-To: <quicwg/base-drafts/pull/1012@github.com>
References: <quicwg/base-drafts/pull/1012@github.com>
Subject: Re: [quicwg/base-drafts] A more complete connection migration (#1012)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5a8ca520cd0f3_9c33f84c62ecf2c107398"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: janaiyengar
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: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak1cPVMF8Hq2pPGEpwIJVE6++OuCpAZPxCpWZ/ XvHxx/9Ck4NkcKfAUNrPdcZHIkKp4SA5V2vT62nWYcpZxjjMIA25UAFtaygevM2I6qwHyLOI7+Iz4Y i04TPQ5rD0KJPIVWgqDj+DGfIG71p2wC+YcqFWYrl2HqQs3kEL/+UYF09Hs/6A/izQzW1rHLO9Bas1 E=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/72mKIzkb03v0VV7nMCDMUR8xHFA>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.22
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, 20 Feb 2018 22:45:56 -0000
janaiyengar commented on this pull request.
Thanks folks, I've addressed comments this far. PTAL.
Ian -- happy to add a state machine, which I think is a great idea. But if we can agree on the mechanism, I'd like to consider that a next step and do it after we've got the mechanism in the draft first.
> @@ -1477,35 +1481,236 @@ connection if the integrity check fails with a PROTOCOL_VIOLATION error code.
## Connection Migration {#migration}
-QUIC connections are identified by their 64-bit Connection ID. QUIC's
-consistent connection ID allows connections to survive changes to the client's
-IP and/or port, such as those caused by client or server migrating to a new
-network. Connection migration allows a client to retain any shared state with a
-connection when they move networks. This includes state that can be hard to
-recover such as outstanding requests, which might otherwise be lost with no easy
-way to retry them.
+QUIC allows connections to survive changes to endpoint addresses (that is, IP
+address and/or port), such as those caused by a client migrating to a new
+network. This section describes the protocol for migrating a connection to a
+new client address.
+
+Migrating a connection to a new server address is left for future work. If a
+client receives packets from a new server address that are decryptable, the
+client MAY discard these packets.
Fair enough, changed text.
> +sent, path validation is considered to have failed, even if the data matches
+that sent in the PATH_CHALLENGE.
+
+The PATH_RESPONSE frame MUST be received on the same local address from which
+the corresponding PATH_CHALLENGE was sent. If a PATH_RESPONSE frame is received
+on a different local address than the one from which the PATH_CHALLENGE was
+sent, path validation is considered to have failed, even if the data matches
+that sent in the PATH_CHALLENGE.
+
+Thus, the endpoint considers the path to be valid when a PATH_RESPONSE frame is
+received on the same path with the same payload as the PATH_CHALLENGE frame.
+
+The endpoint MAY send additional PATH_CHALLENGE frames to handle packet loss,
+but is subject to the following limit to avoid excessive network load: an
+endpoint SHOULD NOT send more than one PATH_CHALLENGE frame in 200ms. This
+limit is approximately equivalent to the network load due to a new connection,
There's no timer prescribed, which I'd like to avoid prescribing, so exponential backoff is a step after that. I was trying to avoid specifying exactly what the sender should do to detect loss of these packets, but put a safe cap on network load.
> +
+The PATH_RESPONSE frame MUST be received on the same local address from which
+the corresponding PATH_CHALLENGE was sent. If a PATH_RESPONSE frame is received
+on a different local address than the one from which the PATH_CHALLENGE was
+sent, path validation is considered to have failed, even if the data matches
+that sent in the PATH_CHALLENGE.
+
+Thus, the endpoint considers the path to be valid when a PATH_RESPONSE frame is
+received on the same path with the same payload as the PATH_CHALLENGE frame.
+
+The endpoint MAY send additional PATH_CHALLENGE frames to handle packet loss,
+but is subject to the following limit to avoid excessive network load: an
+endpoint SHOULD NOT send more than one PATH_CHALLENGE frame in 200ms. This
+limit is approximately equivalent to the network load due to a new connection,
+and is based on the initial Handshake Timeout defined in {{QUIC-RECOVERY}}.
+
200ms is the default recommended in the recovery draft for new connections. Since this is a new path, there's no info available about this path, hence I'm using the default.
> +
+An endpoint MAY bundle PATH_CHALLENGE and PATH_RESPONSE frames with other
+frames, as appropriate. For instance, an endpoint may pad a packet carrying a
+PATH_CHALLENGE for PMTU discovery, or an endpoint may bundle a PATH_RESPONSE
+with its own PATH_CHALLENGE.
+
+
+### Initiating Connection Migration {#initiating-migration}
+
+A client MAY initiate connection migration to a new local address in one of two
+ways.
+
+The client may immediately migrate the connection by sending all packets from
+the new local address. Receiving acknowledgments for this data serves as proof
+of the server's reachability from the new address.
+
PATH_CHALLENGE/PATH_RESPONSE is used for reachability tests, to ensure that the reverse path works fine, before migrating data. Sending Data is a bit more aggressive, where the sender is "committing" to the new path without testing it. That said, you raise a good point. I've changed some text here.
> +
+The client may immediately migrate the connection by sending all packets from
+the new local address. Receiving acknowledgments for this data serves as proof
+of the server's reachability from the new address.
+
+Alternatively, the client may probe for server reachability from the new local
+address first using path validation {{migrate-validate}} and migrate the
+connection to the new address at a later time. Failure of path validation
+simply means that the new local address is not usable for this connection and
+should not be fatal to the connection when alternative local addresses are
+available.
+
+A client migrating to a new local address SHOULD use a new connection ID for
+packets sent from that address, see {{migration-linkability}} for further
+discussion.
+
I think this is adequate for now. The section on migration linkability has the real normative text anyways.
>
-An endpoint MUST validate that its peer can receive packets at the new address
-before sending any significant quantity of data to that address, or it risks
-being used for denial of service. See {{migrate-validate}} for details.
+It is possible that the client is spoofing its source address to cause the
+server to send excessive amounts of data to an unwilling host. If the server
+sends significantly more data than the client, connection migration might be
+used to amplify the volume of data that an attacker can generate toward a
+victim.
+
+Thus, on receiving and decrypting a packet from an unvalidated address, the
+server MUST immediately validate the client's new address to confirm the
+client's possession of the new address.
+
+Until a client's address is deemed valid, the server MUST limit the rate at
+which it sends data to this address. The server MUST NOT send more than 4 * MSS
It's a bit arbitrary, but I was shooting for something > min cwnd. Honestly, any number SGTM. Do you prefer min cwnd?
I assumed the initial RTO period implied a default if path RTT was unknown. Happy to clarify if you think it's not clear.
--
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/1012#pullrequestreview-98003702
- [quicwg/base-drafts] A more complete connection m… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… Martin Thomson
- Re: [quicwg/base-drafts] A more complete connecti… erickinnear
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… Martin Thomson
- Re: [quicwg/base-drafts] A more complete connecti… Mike Bishop
- Re: [quicwg/base-drafts] A more complete connecti… MikkelFJ
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… Christian Huitema
- Re: [quicwg/base-drafts] A more complete connecti… Christian Huitema
- Re: [quicwg/base-drafts] A more complete connecti… Christian Huitema
- Re: [quicwg/base-drafts] A more complete connecti… Christian Huitema
- Re: [quicwg/base-drafts] A more complete connecti… Martin Thomson
- Re: [quicwg/base-drafts] A more complete connecti… ihlar
- Re: [quicwg/base-drafts] A more complete connecti… Martin Thomson
- Re: [quicwg/base-drafts] A more complete connecti… erickinnear
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… ihlar
- Re: [quicwg/base-drafts] A more complete connecti… MikkelFJ
- Re: [quicwg/base-drafts] A more complete connecti… ianswett
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… ianswett
- Re: [quicwg/base-drafts] A more complete connecti… Martin Thomson
- Re: [quicwg/base-drafts] A more complete connecti… Mike Bishop
- Re: [quicwg/base-drafts] A more complete connecti… Mike Bishop
- Re: [quicwg/base-drafts] A more complete connecti… Martin Thomson
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… Mike Bishop
- Re: [quicwg/base-drafts] A more complete connecti… Mike Bishop
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… erickinnear
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… ianswett
- Re: [quicwg/base-drafts] A more complete connecti… Mike Bishop
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… Christian Huitema
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… Martin Thomson
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar
- Re: [quicwg/base-drafts] A more complete connecti… janaiyengar