Subject: [quicwg/base-drafts] Grease version negotiation (#278)

From: Martin Thomson <[email-masked]>
Date: Wed, 08 Feb 2017 20:08:27 -0800

I realize that I stuck this on top of #122.  That's convenient because the new text benefits from being able to reference some of that text.  It makes this diff look awful for the moment though (at least until #122 lands).

Closes #112.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/278

-- Commit Summary --

  * Add definition of transport parameters to -transport
  * Define the extension in -tls
  * Add a stub iana section, fix dead references
  * Remove COPT, add rule about unknown extensions
  * Reference WINDOW_UPDATE properly
  * Remove extra sentence on ignoring unknown parameters
  * editorial
  * Correct reference
  * Move crypto requirements to head of section
  * Wrap note
  * Remove QUIC-Crypto reference
  * Transport parameter are available when the handshake completes
  * Simplify the section on new parameters
  * Add IANA considerations
  * Add transport parameters to the handshake interface in TLS
  * Fix formatting
  * Proofread version negotiation and correct errors
  * Use hex, add initial registry contents
  * Transport parameters during 0-RTT are either remembered or defaults
  * Grease version negotiation

-- File Changes --

    M draft-ietf-quic-tls.md (67)
    M draft-ietf-quic-transport.md (434)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/278.patch
https://github.com/quicwg/base-drafts/pull/278.diff

-- 
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/278

---

From: Mike Bishop <[email-masked]>
Date: Mon, 13 Feb 2017 16:28:14 -0800

MikeBishop approved this pull request.

For others' reference, the diff can be cleanly viewed [here](https://github.com/quicwg/base-drafts/pull/278/commits/7bcf44a41979503bae0a0e8941d3131254c797c7).

Looks fine, and I'm happy for servers to do this.  I'm more dubious about clients.

> +
+The design of version negotiation permits a server to avoid maintaining state
+for packets that it rejects in this fashion.  However, when the server generates
+a version negotiation packet, it cannot randomly generate a reserved version
+number.  This is because the server is required to include the same value in its
+transport parameters.  To avoid the selected version number changing during
+connection establishment, the reserved version can be generated as a function of
+values that will be available to the server when later generating its handshake
+packets.
+
+A pseudorandom function that takes client address information (IP and port) and
+the client selected version as input would ensure that there is sufficient
+variability in the values that a server uses.
+
+A client MAY send a packet using a reserved version number.  This can be used to
+solicit a list of supported versions from a server.

Certainly a client MAY... but why would a sane client ever do this?  If you don't know what version a server speaks, you'll pick one that you speak and hope.  That gives you a non-zero chance of success and the same result if the server doesn't support that version.

Including a GREASE value in a list makes some sense.  Selecting a GREASE value as a single point seems like something only test infrastructure will ever do in the real world.

-- 
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/278#pullrequestreview-21650673

---

From: Martin Thomson <[email-masked]>
Date: Mon, 13 Feb 2017 16:32:20 -0800

martinthomson commented on this pull request.

To add to that, if you always use Alt-Svc and the `quic` parameter is always correct, then you will never encounter version negotiation.  That's not good for the ecosystem.

---

From: Mike Bishop <[email-masked]>
Date: Mon, 13 Feb 2017 16:38:59 -0800

MikeBishop commented on this pull request.

Oh, I'm not arguing it wouldn't be good for the ecosystem.  I'm just arguing that no self-interested client will ever do so, because it's incurring a latency penalty to itself.

However, it's an interesting point that if you're making a first-time connection you don't need the connection to come up quickly (because it's an alternative) and if you're making a subsequent connection you'll have cached info from previous actual connections.  That might actually be a good reason to *remove* the hint and say that clients SHOULD start with a reserved version ID if they have no cached info.

---

From: Martin Thomson <[email-masked]>
Date: Mon, 13 Feb 2017 16:30:23 -0800

If you are creating a connection in response to Alt-Svc, you aren't depending on the connection establishing in any particular time.  Thus, it might make sense to do this with some low probability just to keep the servers honest.

---

From: Martin Thomson <[email-masked]>
Date: Mon, 13 Feb 2017 16:40:33 -0800

You mean Alt-Svc with no quic parameter.  Yes, that might be worth considering.  I will open an issue.

---

From: Martin Thomson <[email-masked]>
Date: Tue, 21 Feb 2017 15:50:53 -0800

@martinthomson pushed 1 commit.

994d61d  Merge branch 'master' into grease_version_negotiation

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/278/files/7bcf44a41979503bae0a0e8941d3131254c797c7..994d61d0c3c1316a57054204187162c714592222

---

From: janaiyengar <[email-masked]>
Date: Wed, 22 Feb 2017 22:57:31 -0800

janaiyengar commented on this pull request.

I like the idea of doing this when there's Alt-Svc with no quic parameter.

-- 
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/278#discussion_r102649522

---

From: janaiyengar <[email-masked]>
Date: Wed, 22 Feb 2017 22:57:38 -0800

janaiyengar approved this pull request.

-- 
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/278#pullrequestreview-23409239

---

From: janaiyengar <[email-masked]>
Date: Wed, 22 Feb 2017 22:57:42 -0800

Merged #278.

-- 
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/278#event-973878987