Home | History | Annotate | Line # | Download | only in quic-design
      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