dockerfile/examples/openssl/openssl-3.2.1-src/doc/designs/quic-design/demuxer.md

48 lines
1.9 KiB
Markdown

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