Subject: [quicwg/base-drafts] Change Client Initial size to 1200 flat (#685)

From: Martin Thomson <[email-masked]>
Date: Sat, 15 Jul 2017 15:25:54 +0000 (UTC)

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

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

-- Commit Summary --

  * Client Initial needs to be 1200

-- File Changes --

    M draft-ietf-quic-tls.md (2)
    M draft-ietf-quic-transport.md (21)

-- Patch Links --

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

---

From: ekr <[email-masked]>
Date: Sat, 15 Jul 2017 09:00:37 -0700

ekr approved this pull request.

+1 million

-The initial client packet SHOULD be padded to exactly these values unless the
+The initial client packet SHOULD be padded to exactly 1200 octets unless the

Can you make clear that this is just the QUIC packet, not the headers.

-- 
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/685#pullrequestreview-50191987

---

From: Martin Thomson <[email-masked]>
Date: Sat, 15 Jul 2017 09:23:36 -0700

@martinthomson pushed 1 commit.

c32b0cc  Make the bounds of the size limit clearer

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/685/files/087ef2c7b99b2821c47bc935e198fc307f69b747..c32b0ccb48f5e6f7f53a3e8d0fd6a96d37264782

---

From: Martin Thomson <[email-masked]>
Date: Sat, 15 Jul 2017 16:33:57 +0000 (UTC)

martinthomson commented on this pull request.

Done.

-- 
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/685#discussion_r127587747

---

From: ianswett <[email-masked]>
Date: Sat, 15 Jul 2017 17:28:33 +0000 (UTC)

ianswett commented on this pull request.

> @@ -541,7 +541,7 @@ older than 1.3 is negotiated.
 
 QUIC requires that the initial handshake packet from a client fit within the
 payload of a single packet.  The size limits on QUIC packets mean that a record
-containing a ClientHello needs to fit within 1197 octets.
+containing a ClientHello needs to fit within 1165 octets.

To be clear, this 1165 number may change if we increase or decrease the amount of framing overhead QUIC adds.  Are we ok about that?

-- 
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/685#pullrequestreview-50193681

---

From: Martin Thomson <[email-masked]>
Date: Sat, 15 Jul 2017 10:30:25 -0700

I'm OK with that.  As long as we stop changing the overhead when we ship the spec.

-- 
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/685#discussion_r127589036

---

From: ianswett <[email-masked]>
Date: Sat, 15 Jul 2017 17:35:39 +0000 (UTC)

-The initial client packet SHOULD be padded to exactly these values unless the
-client has a reasonable assurance that the PMTU is larger.  Sending a packet of
-this size ensures that the network path supports an MTU of this size and helps
-reduce the amplitude of amplification attacks caused by server responses toward
-an unverified client address.
+The initial client packet SHOULD be padded to exactly 1200 octets unless the
+client has a reasonable assurance that the PMTU is larger.  This size includes
+the QUIC header and integrity check, but not the UDP or IP header. Sending a
+packet of this size ensures that the network path supports an MTU of this size
+and helps reduce the amplitude of amplification attacks caused by server
+responses toward an unverified client address.
 
 Servers MUST ignore an initial plaintext packet from a client if its total size

It'd be nice to come up with a consistent way of referring to this "total size" which does not include IP+UDP.

-- 
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/685#pullrequestreview-50193803

---

From: Martin Thomson <[email-masked]>
Date: Sat, 15 Jul 2017 17:40:25 +0000 (UTC)

"QUIC packet size" or "packet size" should do.

-- 
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/685#discussion_r127589261

---

From: ianswett <[email-masked]>
Date: Sat, 15 Jul 2017 17:44:52 +0000 (UTC)

As with the definition of bytes_in_flight for recovery, it's important to have a consistent definition of packet size.  It looks like we're aiming for "size of packet without including IP + UDP headers", which seems great, but the current text may be ambiguous?

One q: How are you arriving at 1165 if the 1200 doesn't include IP + UDP?  1(type byte) + 8(conn id) + 4(packet number) + stream frame type byte(1) + stream id(1 byte) + ?

> @@ -1140,7 +1140,7 @@ max_packet_size (0x0005):
   the endpoint is willing to receive, encoded as an unsigned 16-bit integer.
   This indicates that packets larger than this limit will be dropped.  The
   default for this parameter is the maximum permitted UDP payload of 65527.
-  Values below 1252 are invalid.  This limit only applies to protected packets
+  Values below 1200 are invalid.  This limit only applies to protected packets

Can we somehow clarify this size is also without UDP + IP headers?

-- 
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/685#pullrequestreview-50193850

---

From: ianswett <[email-masked]>
Date: Sat, 15 Jul 2017 17:49:55 +0000 (UTC)

Payload size?

-- 
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/685#discussion_r127589444

---

From: Martin Thomson <[email-masked]>
Date: Sat, 15 Jul 2017 11:22:01 -0700

b340370  Ian being pedantic

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/685/files/c32b0ccb48f5e6f7f53a3e8d0fd6a96d37264782..b340370773e8f045bcc53d54c4e6c89bdf9f3444

---

From: Martin Thomson <[email-masked]>
Date: Sat, 15 Jul 2017 18:25:37 +0000 (UTC)

@ianswett,

> One q: How are you arriving at 1165 if the 1200 doesn't include IP + UDP? 1(type byte) + 8(conn id) + 4(packet number) + stream frame type byte(1) + stream id(1 byte) + ?

1200- all of that(15) - version(4) - fnv-1a(8), which I realize now is 29 and not 35 because I calculated the original number with FNV-1a 128.  

-- 
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/685#issuecomment-315552855

---

From: Martin Thomson <[email-masked]>
Date: Sat, 15 Jul 2017 18:26:35 +0000 (UTC)

d019bb6  We have more room with FNV-1a 64

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/685/files/b340370773e8f045bcc53d54c4e6c89bdf9f3444..d019bb6f2d5ba1196c1226bbcccc895ebacdef6d

---

From: ianswett <[email-masked]>
Date: Sat, 15 Jul 2017 13:59:34 -0700

ianswett approved this pull request.

Thanks!

-- 
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/685#pullrequestreview-50197517