]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Add design requirements for QUIC packet demuxer
authorTomas Mraz <tomas@openssl.org>
Thu, 5 May 2022 06:59:27 +0000 (08:59 +0200)
committerTomas Mraz <tomas@openssl.org>
Mon, 29 Aug 2022 09:44:27 +0000 (11:44 +0200)
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18249)

doc/designs/quic-design/demuxer.md [new file with mode: 0644]

diff --git a/doc/designs/quic-design/demuxer.md b/doc/designs/quic-design/demuxer.md
new file mode 100644 (file)
index 0000000..f9ea9fa
--- /dev/null
@@ -0,0 +1,47 @@
+Packet Demuxer
+==============
+
+This is a QUIC specific module that parses headers of incoming packets and
+decides what to do next.
+
+Demuxer requirements for MVP
+----------------------------
+
+These are the requirements that were identified for MVP:
+
+- multiple QUIC packets in an UDP packet handling as packet coalescing
+  must be supported
+- client must discard any packets that do not match existing connection ID
+- client must discard any packets with version different from the one initially
+  selected
+
+Optional demuxer requirements
+-----------------------------
+
+These are optional features of the client side demuxer, not required for MVP
+but otherwise desirable:
+
+- optionally trigger sending stateless reset packets if a received packet
+  on the client is well-formed but does not belong to a known connection
+
+Demuxer requirements for server
+-------------------------------
+
+Further requirements after MVP for server support:
+
+- on the server side packets can create a new connection potentially
+- server side packet handling for unsupported version packets:
+  - trigger sending version negotiation packets if the server receives a packet
+    with an unsupported version and is large enough to initiate a new
+    connection; limit the number of such packets with the same destination
+  - discard smaller packets with unsupported versions
+- packet handling on server for well-formed packets with supported versions
+  but with unknown connection IDs:
+  - if the packet is a well-formed Initial packet, trigger the creation of a
+    new connection
+  - if the packet is a well-formed 0RTT packet, mark the packet to be
+    buffered for short period of time (as Initial packet might arrive late)
+    - this is optional - enabled only if 0RTT support is enabled by the
+      application
+  - discard any other packet with unknown connection IDs
+    - optionally trigger sending stateless reset packets as above for client