TRANSPORT LAB · ORDER · ACCOUNT · RECOVER
Head-of-line blocking: follow the missing data
Compare TCP and QUIC delivery from the same packet arrivals, including recovery and packets carrying multiple streams.
Exact computed state
Inspect timestamps, decisions and accounting
Separate arrival from delivery
Four streams each contain eight ordered chunks. The fixture interleaves those chunks, packs them into packets and sends one packet every ten milliseconds. Ordinary arrivals take twenty milliseconds. One selected packet can receive an extra recovery delay. Both comparison panels use identical packet arrivals. TCP delivers a single ordered byte sequence, so a missing earlier packet holds later data behind the gap. The QUIC abstraction keeps ordering separately within each stream. It can deliver another stream’s ready prefix without waiting for an unrelated gap. This is an ordering experiment, not a performance benchmark.
Choose what the lost packet contains
Chunks per packet groups consecutive interleaved chunks into each synthetic packet. With one chunk per packet, one lost packet affects one stream’s ordering; with four, the same lost packet carries data from all four streams. Packet to lose selects a zero-based packet identifier. If larger packets reduce the number of packets below that selection, the fixture explicitly uses its final packet; the readable evidence shows the effective identifier and contents. Extra recovery delay postpones that packet’s arrival, and Lose the selected packet enables or disables the delay. Changing any setting rebuilds the record and pauses it at the beginning.
Observe a stall and its release
Restore defaults: one chunk per packet, packet four lost and one hundred milliseconds of extra recovery. Around one hundred modeled milliseconds, TCP has delivered only its earlier prefix while other QUIC streams have advanced. Red cells represent data already received but not deliverable; pale cells have not arrived. Seek to the end and verify that both protocols deliver all thirty-two chunks. Recovery must release the TCP gap; loss does not mean a permanent freeze. Now set four chunks per packet and lose packet one. All four streams have data in that packet, so the expected QUIC advantage disappears for this fixture.
Use inspection time, not invented throughput
Play reveals the full record over sixty inspection seconds. Pause holds the current state, Step adds one inspection second, Restart rewinds, Speed changes viewing pace and Inspect time scrubs the same computed record. Restore defaults resets scenario inputs. The textual stream counts and JSON inspector expose every chunk’s packet, arrival and delivery timestamps. Numbered cells are per-stream offsets, not packet identifiers. The model omits congestion control, encryption, acknowledgments, loss detection, HTTP field compression and application dependencies. QUIC shares connection-level resources; independent ordering does not mean that loss can never affect other streams. The chosen packet layout and fixed recovery delay are teaching assumptions, not a complete TCP or QUIC implementation.