Skip to content

docs(research): #59 MTU/FEC-rate investigation findings + measurement tools#94

Merged
vxfemboy merged 1 commit into
mainfrom
docs/mtu-packetization-findings
Jul 22, 2026
Merged

docs(research): #59 MTU/FEC-rate investigation findings + measurement tools#94
vxfemboy merged 1 commit into
mainfrom
docs/mtu-packetization-findings

Conversation

@vxfemboy

Copy link
Copy Markdown
Member

Preserves the measure-first investigation of #59 (throughput lever 4c) as durable institutional memory. No production code — a research doc plus two reusable bench examples alongside the existing pipeline_profile.

Why

The #59 spike found both "cheap wins" are illusions once measured, and that's worth recording so the next person doesn't re-litigate it. Full analysis: docs/research/2026-07-22-mtu-packetization-findings.md. Headlines:

  • Wire-padding constraint: every FEC symbol is zero-padded to full symbol_size on the wire (fec.rs "last zero-padded"; reassembler rejects data.len() != symbol_size; framer sends it untrimmed). So a blind symbol_size increase is a bandwidth regression for small packets.
  • Two MTU levers, bounded: raising symbol_size to ~1500 helps only per-symbol costs and only for packets that currently split; jumbo inner MTU helps everything but only where the whole path carries jumbo. The issue's "reduces every per-packet cost proportionally" holds only for the jumbo lever.
  • The FEC-rate lever is load-bearing, not waste. The Default class (DSCP 0 = nearly all traffic) permanently emits 1 source + 1 repair per single-symbol packet because its non-ARQ min_ratio floors at 0.10. Tempting to decay it to 0 — but the experiment measured the cost: clean-link datagrams halved (2.000 → 1.000), but 10% netem low-rate ping recovery regressed 10/10 → 7/10, 9/10, 8/10 (sparse traffic can't keep the controller armed; losses go unrecovered). The floor protects exactly the low-rate latency-sensitive traffic the class exists for. Change rejected.

Contents

  • docs/research/2026-07-22-mtu-packetization-findings.md — the full write-up.
  • crates/yip-bench/examples/mtu_symbol_sweep.rs — symbols/packet + outer bytes across inner-size × symbol_size (real Transport::encode).
  • crates/yip-bench/examples/fec_rate_experiment.rs — whether the Default class decays on a clean link.

No behavior change; #59 updated with the same conclusion.

…measurement tools

Measure-first spike on #59 (throughput lever 4c). Findings doc records the
send-path overhead model, two bounded MTU levers, the wire-padding constraint
(every FEC symbol is zero-padded to full symbol_size on the wire), and the
FEC-rate experiment showing the Default-class repair floor is load-bearing
(decaying it to 0 regressed low-rate lossy recovery 10/10 -> ~7-9/10) rather
than waste. Plus two reusable bench examples (mtu_symbol_sweep, fec_rate_experiment).
@vxfemboy
vxfemboy merged commit 9ddd61e into main Jul 22, 2026
9 checks passed
@vxfemboy
vxfemboy deleted the docs/mtu-packetization-findings branch July 22, 2026 21:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant