Subject: [quicwg/base-drafts] Add an appendix describing spin negotiation (#1937)

From: Brian Trammell <[email-masked]>
Date: Tue, 30 Oct 2018 14:15:24 -0700

There's been some discussion on the list about using version negotiation to negotiate the spin bit. This PR fleshes that idea out in an appendix, as a basis for discussion in Bangkok.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * add an appendix describing spin negotiation

-- File Changes --

    M draft-ietf-quic-spin-exp.md (60)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/1937.patch
https://github.com/quicwg/base-drafts/pull/1937.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/1937

---

From: Brian Trammell <[email-masked]>
Date: Tue, 30 Oct 2018 21:26:22 +0000 (UTC)

@britram pushed 1 commit.

8a76845  gah newline

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/1937/files/81d8baa502d3e1889cc916805ea69757e95f4915..8a7684541f7ffba4c69d1199f6a3a5aad5fe4130

---

From: Martin Thomson <[email-masked]>
Date: Tue, 30 Oct 2018 17:22:19 -0700

martinthomson approved this pull request.

This seems right.

I assume that the plan here is to point people at the editor's copy.

> +the duration of the connection, by setting bit 0x04 in the first octet of each
+packet carrying a short header according to {{nospin}}.
+
+Negotiating the spin bit has a few properties that differ from the discretionary
+usage of the spin bit described in the main body of this document:
+
+- It provides a method to exercise version negotiation beyond the version
+  greasing mechanism described in section 15 of {{QUIC-TRANSPORT}}. This
+  additional exercise has the benefit of actually changing the protocol's
+  behavior in a way each endpoint can detect based on the negotiation of the
+  version, and may defend against ossification of the version negotiation
+  mechanism caused both by on-path interference as well as lazy implementations
+  better than greasing alone.
+
+- It provides a method by which on-path devices that observe the handshake can
+  explicitly classify a connection as spinning or not.

...if they see a packet with a long header.

-- 
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/1937#pullrequestreview-170053305

---

From: Marten Seemann <[email-masked]>
Date: Tue, 30 Oct 2018 21:43:05 -0700

While I like the idea of exercising version negotiation right from the beginning, the problem with this approach is that this information is only visible on the path that the handshake is performed on. Middleboxes performing RTT measurements will also need to deploy some heuristics for detecting spin-bit enabled flows that migrated.
Having two different ways of detecting the same fact might be error-prone, and maybe it's a better design to force middleboxes to use a single method (which would be heuristics, in this case).

-- 
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/1937#issuecomment-434559202

---

From: Kazuho Oku <[email-masked]>
Date: Tue, 30 Oct 2018 23:09:42 -0700

The primary issue with using heuristics is that it leads to the bits getting ossified. You would no longer have a chance to introduce an improved version of "spin bits" without the fear of it being misdetected by the on-path devices that understand the old version.

In practice, I believe that operators do not need to observe all the QUIC connections. Assuming that is true, they can concentrate on QUIC connections that they know that are spinning bits by simply referring to the version. There would be no need for guessing.

-- 
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/1937#issuecomment-434572575

---

From: Brian Trammell <[email-masked]>
Date: Wed, 31 Oct 2018 01:14:52 -0700

britram commented on this pull request.

I think "that observe the handshake" does that here, no?

-- 
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/1937#discussion_r229596235

---

From: Brian Trammell <[email-masked]>
Date: Wed, 31 Oct 2018 01:16:31 -0700

@martinthomson yep plan is to merge this and #1931 then point the list at editor's copy for the discussion in BKK.

-- 
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/1937#issuecomment-434598387

---

From: Brian Trammell <[email-masked]>
Date: Wed, 31 Oct 2018 08:20:35 +0000 (UTC)

@marten-seemann yeah, the benefits of "explicit signaling" are not quite so cut-and-dried. Heuristics for discriminating spinning from non-spinning endpoints are necessary anyway, or rather, the heuristics necessary to reject bad samples due to lost, reordered, or delayed edges will tend to reject non-spinning endpoints as a side effect.

A handshake negotiating version Vs is not a guarantee to the path that endpoints will spin, and in many cases the endpoint will never see a handshake for a 6-tuple due to CID change or migration. However, a handshake negotiating version Vt is a pretty good sign that the observer can ignore the flow, which is a nice optimization.

-- 
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/1937#issuecomment-434599400

---

From: Brian Trammell <[email-masked]>
Date: Wed, 31 Oct 2018 08:39:43 +0000 (UTC)

Merged #1937 into master.

-- 
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/1937#event-1937209572

---

From: mirjak <[email-masked]>
Date: Wed, 31 Oct 2018 14:44:56 +0000 (UTC)

mirjak commented on this pull request.

+
+## The Spin Bit in Spinless QUIC {#nospin}
+
+When version Vt is negotiated, both client and server randomly select a "pin

"pin" or "spin"...?

-- 
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/1937#pullrequestreview-170290167