cloudflare / cloudflare/boringtun

Error correction (reed solomon) for dropped packets

Open
#68 6 comments 4 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
7.2k
Forks
532
PR merge metrics
No merged PRs in 30d

Description

Wireguard is agnostic to dropped packets (it's the job of applications reliant on UDP transmissions or just TCP to handle retransmits) but this results in abysmal performance in environments where dropped packets are common.

There are multiple solutions to this on github, basically socat-ing an error correcting (reed solomon) tunnel to go through Wireguard and use that instead. ex: https://github.com/wangyu-/UDPspeeder

Have you considered or would you be willing to consider augmenting Wireguard to keep track of dropped packets and engaging Reed Solomon coding for tunnels depending on how much packet loss they get. It can probably be made backward compatible with the kernel version or perhaps they can be convinced to cooperate.

The benefits are not marginal. A simple experiment with one of the aforementioned tunnels and a packet loss of just 5-10% can result in absurd improvements. ex: https://raw.githubusercontent.com/wangyu-/UDPspeeder/branch_libev/images/en/scp_compare2.PNG

Contributor guide

Open the contributing guide

Research direction

No file, test, or entry point is named. Start by reviewing BoringTun's userspace WireGuard packet path and the linked UDPspeeder example, then determine whether Reed-Solomon correction belongs in the protocol and what backward compatibility would require; the issue provides no concrete acceptance criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.