demuxer.md 1.9 KB

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