mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
48 lines
1.9 KiB
Markdown
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
|