Adaptive loss-feedback loop + reactive ARQ #3
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
femboy/yip!3
Loading…
Reference in a new issue
No description provided.
Delete branch "data-plane-feedback-arq"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes the data-plane control loop and activates the throughput win the throughput pass (PR #2) set up. Spec + plan committed; executed as 8 reviewed tasks (subagent-driven).
What landed
Controlpacket (PacketType::Control=3, sealed via the session AEAD) carrying{delivered_count, high_counter, missing[]}. Newyip-transportmodules:feedback(LossReport),lossdetect(gap-basedLossDetector),retxbuf(RetxBuffer).Bulk) flows decay their repair ratio to zero on a clean link (firing the dormant FEC-encode bypass + halving datagrams);Realtime/Defaultkeep a proactive floor. Loss snaps the ratio back up instantly.Bulkobjects with fresh RaptorQ repair symbols reusing the originalobject_id(tops up the receiver's existing decoder);Realtime/Default/expired objects are not retransmitted.Results (release, netns, kernel 6.18 / Ryzen 5 7640U)
0.0000(yipd diagnostic log); clean-link single-stream TCP ~273–285 → ~457 Mbit/s (~60%).Review
Per-task reviews + a final whole-branch opus review. The final review found and we fixed one security must-fix (control-path
on_seennow runs only after AEAD authentication, so a forgedControlpacket can't poison the loss detector) and raisedyip-transportcoverage to 90.05%. Cross-task counter semantics, ARQ object-identity (u16 wrap unreachable within the bounded window), whole-loop lock discipline (no deadlock, no lock across I/O), auth-before-trust, and bounded state all verified sound.Follow-ups (documented, non-blocking): a dedicated end-to-end Bulk-ARQ integrity harness (establish tunnel before applying loss); the gap detector only reports fully-absent counters (exact for the single-symbol zero-repair case).
🤖 Generated with Claude Code