Skip to content

Data-plane follow-ups & investigations (umbrella) #11

Description

@vxfemboy

Smaller deferrals / follow-ups / things-to-investigate accumulated across the throughput pass, feedback+ARQ, and io_uring Phase A milestones. Each is bounded; none blocks current work.

Correctness / robustness

  • Wire-auth object_id binding (M5/M6 carry-forward). object_id (u16) and object_size are attacker-forgeable on the wire; a forged object_id can LRU-evict a live object in the reassembler. Bind them to authenticated peer/epoch context. Also: u16 wraps every 65536 objects (currently unreachable within the bounded retx/reassembler windows, but relevant if rates rise or windows grow).
  • Loss-detector partial-receive limitation (documented in lossdetect.rs). The gap model reports fully-absent counters and, since PR Data-plane follow-ups: ARQ integrity test, detector completeness, retx sizing, hardening #4, seen-but-undecoded counters too — but the seen-but-undecoded suppression (resolved_set) is best-effort under extreme reordering (evicted-far-above-watermark → a benign spurious NACK the sender drops). Exact for the single-symbol zero-repair case. Revisit if heavy-loss multi-symbol accuracy matters.
  • Per-class loss denominator is a conservative approximation (sent-log residency → biases the fraction high → over-repair, safe). An exact per-class windowed rate is hard (receiver knows window totals but not classes; sender knows classes but not the receiver's window). Only worth it if over-repair-under-loss becomes a measured cost.
  • Deadline-based FEC eviction: FlowParams.deadline is only partially honored (LRU-count eviction dominates). Honor per-class deadlines for reassembler eviction + ARQ eligibility.
  • Bidirectional flow accounting: the M5.5 classifier heuristic observes egress only.

Performance / cleanup

Anti-DPI hooks still live in the data plane (feed sub-project #3)

Broader roadmap (each a future sub-project, own design→build)

Bench polish (optional)

  • ZeroTier + AmneziaWG bench contenders (named in the brief, not installed).
  • OpenVPN currently benched with TLS+AES-256-GCM (good); could add a UDP-under-loss column for WG/OpenVPN/n2n.
  • 1000-ping samples to tighten netem loss-rate variance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions