Subject: [quicwg/base-drafts] Single Packet Number Space (#1591)

From: Nick Banks <[email-masked]>
Date: Fri, 20 Jul 2018 07:52:23 -0700

Fixes #1579 (see for more details on the problem).

- Moves back to a single packet number space across all encryption levels.
- Allows for a packet to be acknowledged in a greater than or equal encryption level.
- Initial packets cannot carry ACK frames, and therefore must be acknowledged in Handshake (or greater) encryption level.
- Handshake packets can acknowledge 0-RTT packets.

With these design changes, implementations do not have to track 3 separate packet number spaces (and all the overhead that goes with it). The number of QUIC packets (not UDP datagrams) required to be sent during the handshake is reduced (see Example Handshake Flows section). There is no Initial packet ACK spoofing since they must be acknowledged in a higher encryption level. 0-RTT packets can be acknowledged a bit quicker in the handshake process by using the Handshake encryption level; generally the first server ACK block will be able to ACK all Initial and 0-RTT packets it has received in one atomic operation.

Also makes sure #1018 and #1413 don't regress and are still solved.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Single Packet Number Space
  * Finish up changes

-- File Changes --

    M draft-ietf-quic-recovery.md (32)
    M draft-ietf-quic-tls.md (28)
    M draft-ietf-quic-transport.md (139)

-- Patch Links --

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

---

From: Nick Banks <[email-masked]>
Date: Fri, 20 Jul 2018 07:55:23 -0700

@nibanks pushed 1 commit.

9508c1a  Remove extra spaces

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/1591/files/90eccbecb64121ab18445e4af5f168a629490dfb..9508c1a276b315693afe58c44a989bd3c5d7c956

---

From: Christian Huitema <[email-masked]>
Date: Wed, 25 Jul 2018 12:31:47 -0700

Seems like a bit of knee-jerk reaction. The current design with three spaces has an important feature: it allows parallel transmission and ack on several encryption levels without open space for denial of service attacks. Parallel transmission occurs for example when handshake data has to be retransmitted after 1-RTT data has already been sent. But if you fold all of that into a single sequence, then the receiver has to accept interleaved encryption levels, and once you do that the DOS attacks become possible.

-- 
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/1591#issuecomment-407867174

---

From: Nick Banks <[email-masked]>
Date: Wed, 25 Jul 2018 19:37:49 +0000 (UTC)

@huitema my understanding for the DOS attack, is that it is only possibly with ACKs in an Initial packet. This PR explicitly disallows ACKs in Initial packets. If I am incorrect, I'd appreciate a bit for explaination.

-- 
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/1591#issuecomment-407869785

---

From: Nick Banks <[email-masked]>
Date: Wed, 25 Jul 2018 19:40:16 +0000 (UTC)

13f9e45  Merge branch 'master' into pr/single-packet-number-space

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/1591/files/9508c1a276b315693afe58c44a989bd3c5d7c956..13f9e4518c45251d655f14b38582291f4f7746de

---

From: Mike Bishop <[email-masked]>
Date: Fri, 27 Jul 2018 13:32:56 -0700

What happens when you receive, in a Handshake packet, an ACK for an Initial packet you never sent?  If you blow up, it becomes trivial to inject a packet and make the handshake fail.  If you don't, then the receiver will discard your packet with the same packet number because it has already received that number.

However, I think the first piece is true regardless of packet number spaces -- someone who sent additional Initial packets with your CID can cause your handshake to fail in interesting and novel ways.

-- 
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/1591#issuecomment-408531323