Small urgent messages, delivered exactly once and on time, over links that drop packets. The kernel's retransmit timer refuses to fire before 200 milliseconds; taut's floor is 25. On a bad link, that one constant is the whole story. The protocol below is the real library, compiled to WebAssembly, running over its own deterministic network simulator.
measured on real hardware with netem · seeds fixed · raw CSVs and scripts in the repo
Fig. 1. Every cursor sample is a real message through the library's sliding-window ARQ. The filled mark receives with a 25ms retransmit floor, the open mark with the kernel's 200ms, over links seeded identically. Delivery is in-order, so one unrepaired loss stalls everything behind it: the open mark freezes, then jumps. SACK and fast retransmit repair most holes at either floor; when the loss takes the feedback with it, the floor is all that's left, and that is what you feel.
Fig. 2. Messages delivered over virtual time. Every plateau in the dashed run is a stalled retransmit timer the kernel default spends waiting out; the solid run crosses the same link with the 25ms floor. The simulator is deterministic: every number on this page reproduces from the seed.
| 25ms | 200ms | × |
|---|
running…
src/rto.ccsrc/session.ccsrc/sim_net.ccsrc/codec.cc, src/crc32c.cc. A run that violates this
is a protocol bug, and the page says so.