1Packet Demuxer 2============== 3 4This is a QUIC specific module that parses headers of incoming packets and 5decides what to do next. 6 7Demuxer requirements for MVP 8---------------------------- 9 10These are the requirements that were identified for MVP: 11 12- multiple QUIC packets in an UDP packet handling as packet coalescing 13 must be supported 14- client must discard any packets that do not match existing connection ID 15- client must discard any packets with version different from the one initially 16 selected 17 18Optional demuxer requirements 19----------------------------- 20 21These are optional features of the client side demuxer, not required for MVP 22but otherwise desirable: 23 24- optionally trigger sending stateless reset packets if a received packet 25 on the client is well-formed but does not belong to a known connection 26 27Demuxer requirements for server 28------------------------------- 29 30Further requirements after MVP for server support: 31 32- on the server side packets can create a new connection potentially 33- server side packet handling for unsupported version packets: 34 - trigger sending version negotiation packets if the server receives a packet 35 with an unsupported version and is large enough to initiate a new 36 connection; limit the number of such packets with the same destination 37 - discard smaller packets with unsupported versions 38- packet handling on server for well-formed packets with supported versions 39 but with unknown connection IDs: 40 - if the packet is a well-formed Initial packet, trigger the creation of a 41 new connection 42 - if the packet is a well-formed 0RTT packet, mark the packet to be 43 buffered for short period of time (as Initial packet might arrive late) 44 - this is optional - enabled only if 0RTT support is enabled by the 45 application 46 - discard any other packet with unknown connection IDs 47 - optionally trigger sending stateless reset packets as above for client 48