Independent Until QPACK

Over HTTP/2 on TCP, one lost segment stalls delivery on every stream of the connection, because TCP will not hand the application bytes past a gap. This trace is HTTP/3 over QUIC, and packet 1 is lost.

packet payload
1 QPACK encoder stream: insert cookie: sid=... at dynamic table index 42 (lost)
2 stream 4: HEADERS referencing index 42, then DATA
3 stream 8: HEADERS referencing index 42, then DATA
4 stream 4: more DATA

Packets 2 to 4 arrive intact. What can the client process before the retransmission of packet 1 lands?

A

Both, once SETTINGS_QPACK_BLOCKED_STREAMS is raised high enough to allow them to decode while blocked

B

Neither request's field section: both have a Required Insert Count above the decoder's Insert Count, so both streams are blocked until the insert arrives

C

Both, because QUIC streams are delivered independently, so HTTP/3 has no head-of-line blocking

D

Only stream 4, because its HEADERS and DATA arrived on the same packets and stream 8 needs the encoder stream