target = "https://www.rfc-editor.org/rfc/rfc9000#section-13" # 13. Packetization and Reliability # # A sender sends one or more frames in a QUIC packet; see Section 12.4. # # A sender can minimize per-packet bandwidth and computational costs by # including as many frames as possible in each QUIC packet. A sender # MAY wait for a short period of time to collect multiple frames before # sending a packet that is not maximally packed, to avoid sending out # large numbers of small packets. An implementation MAY use knowledge # about application sending behavior or heuristics to determine whether # and for how long to wait. This waiting period is an implementation # decision, and an implementation should be careful to delay # conservatively, since any delay is likely to increase application- # visible latency. # # Stream multiplexing is achieved by interleaving STREAM frames from # multiple streams into one or more QUIC packets. A single QUIC packet # can include multiple STREAM frames from one or more streams. # # One of the benefits of QUIC is avoidance of head-of-line blocking # across multiple streams. When a packet loss occurs, only streams # with data in that packet are blocked waiting for a retransmission to # be received, while other streams can continue making progress. Note # that when data from multiple streams is included in a single QUIC # packet, loss of that packet blocks all those streams from making # progress. Implementations are advised to include as few streams as # necessary in outgoing packets without losing transmission efficiency # to underfilled packets. [[spec]] level = "MAY" quote = ''' A sender MAY wait for a short period of time to collect multiple frames before sending a packet that is not maximally packed, to avoid sending out large numbers of small packets. ''' [[spec]] level = "MAY" quote = ''' An implementation MAY use knowledge about application sending behavior or heuristics to determine whether and for how long to wait. '''