Subject: [quicwg/base-drafts] Pad to 38 if you want a stateless reset (#1682)

From: Martin Thomson <[email-masked]>
Date: Thu, 16 Aug 2018 23:22:20 -0700

But there isn't much point in doing that if you aren't expecting a response, so ACK-only packets don't need the same treatment (unless, like @huitema, you are doing that for a measure of traffic analysis protection).

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

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

-- Commit Summary --

  * Fixes #1681

-- File Changes --

    M draft-ietf-quic-transport.md (4)

-- Patch Links --

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

---

From: Christian Huitema <[email-masked]>
Date: Thu, 16 Aug 2018 23:57:59 -0700

huitema commented on this pull request.

Actually, you can just as well pad the ACK-only packets. They could trigger a stateless reset just like any other packet.

-- 
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/1682#pullrequestreview-147115697

---

From: Martin Thomson <[email-masked]>
Date: Thu, 16 Aug 2018 23:59:37 -0700

The point with ACK-only is that you aren't expecting a response, so there is no point in asking for one.  Maybe it's best to say nothing on that point anyway.  I was not 100% on that bit.

-- 
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/1682#issuecomment-413776215

---

From: Martin Thomson <[email-masked]>
Date: Fri, 17 Aug 2018 00:00:10 -0700

@martinthomson pushed 1 commit.

9b2ab7e  No exceptions on the 38 thing

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/1682/files/5d84fcb56a8c932f1fe8e531eca717e8e1e0dafe..9b2ab7e66fab0fe2a2ade14c15cc5191aff86ae4

---

From: ianswett <[email-masked]>
Date: Mon, 20 Aug 2018 14:46:33 +0000 (UTC)

ianswett commented on this pull request.

> @@ -2733,6 +2733,9 @@ a small packet might result in Stateless Reset not being useful in detecting
 cases of broken connections where only very small packets are sent; such
 failures might only be detected by other means, such as timers.
 
+An endpoint that wants to improve the chances that it triggers a Stateless Reset
+when its peer loses state can pad all packets it sends to 38 octets.

All packets seems like a lot of padding.  In practice, I'd only expect people to pad timer-initiated packets like PING for keepalive or TLP/RTO packets.

-- 
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/1682#pullrequestreview-147677477

---

From: Mike Bishop <[email-masked]>
Date: Mon, 20 Aug 2018 17:51:51 +0000 (UTC)

MikeBishop approved this pull request.

Maybe instead of talking about the all-time case, we just say that "An endpoint can increase the odds that a packet will trigger a Stateless Reset if it cannot be processed by padding it to at least 38 octets."?  Then we leave the decision of *which* packets deserve that treatment to the implementation.

-- 
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/1682#pullrequestreview-147753128

---

From: Christian Huitema <[email-masked]>
Date: Mon, 20 Aug 2018 21:39:21 -0700

Yes. Mikkel pointed out that if you do that, all short packets are 38 bytes, except for stateless reset which are exactly 37, and therefore stand out. That's not a hugely useful property. What Ian suggests makes more sense, and in that case you want to pad to something unpredictable, for example between 38 and 256. But this is of course a game of smoke and mirrors, so you want the peer to also randomly pad the responses to ping and tlp/rto. Oh well...

-- 
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/1682#discussion_r211476307

---

From: Martin Thomson <[email-masked]>
Date: Mon, 20 Aug 2018 23:20:49 -0700

c8ecebb  At least, as suggested

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/1682/files/9b2ab7e66fab0fe2a2ade14c15cc5191aff86ae4..c8ecebb732b0d55722cd22e59870c82594a7e3b7

---

From: ianswett <[email-masked]>
Date: Tue, 21 Aug 2018 07:50:22 -0700

> @@ -2733,8 +2733,8 @@ a small packet might result in Stateless Reset not being useful in detecting
 
-An endpoint that wants to improve the chances that it triggers a Stateless Reset
-when its peer loses state can pad all packets it sends to 38 octets.
+An endpoint can increase the odds that a packet will trigger a Stateless Reset

Does increasing it above 38 not ensure it will trigger a Stateless Reset?  If so, I'd prefer "An endpoint can ensure that a packet will trigger..."

-- 
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/1682#pullrequestreview-148098926

---

From: MikkelFJ <[email-masked]>
Date: Tue, 21 Aug 2018 14:53:19 +0000 (UTC)

mikkelfj commented on this pull request.

I would hope that stateless reset is an optional feature and when it is on, resets can be send at senders discretion, e.g. implementing rate limiting.

-- 
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/1682#discussion_r211637172

---

From: Martin Thomson <[email-masked]>
Date: Tue, 21 Aug 2018 16:57:06 -0700

martinthomson commented on this pull request.

@mikkelfj is right, this doesn't guarantee that you get a stateless reset.  The point here is that the odds of receiving one for packets below 38 octets is much lower.

-- 
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/1682#discussion_r211795079

---

From: Christian Huitema <[email-masked]>
Date: Tue, 21 Aug 2018 19:26:51 -0700

huitema approved this pull request.

I think the current sentence is pretty good.

-- 
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/1682#pullrequestreview-148314837

---

From: ianswett <[email-masked]>
Date: Tue, 21 Aug 2018 19:29:59 -0700

ianswett approved this pull request.

We're well into wishy-washy land, but this seems clear enough.

-- 
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/1682#pullrequestreview-148315225

---

From: Martin Thomson <[email-masked]>
Date: Tue, 21 Aug 2018 20:26:18 -0700

Merged #1682 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/1682#event-1801671839

---

From: Martin Thomson <[email-masked]>
Date: Tue, 21 Aug 2018 20:27:08 -0700

Good enough for me.

-- 
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/1682#issuecomment-414897393