1 Packet Demuxer 2 ============== 3 4 This is a QUIC specific module that parses headers of incoming packets and 5 decides what to do next. 6 7 Demuxer requirements for MVP 8 ---------------------------- 9 10 These 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 18 Optional demuxer requirements 19 ----------------------------- 20 21 These are optional features of the client side demuxer, not required for MVP 22 but 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 27 Demuxer requirements for server 28 ------------------------------- 29 30 Further 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