yggdrasil-go
yggdrasil-go copied to clipboard
Configurable TCP congestion control algorithm
Currently, BBR is a hard-coded choice, but given there's BBRv2 coming it would be nice to have a possibility to choose. FWIW, it is already available in the Liquorix and pf-kernel Linux forks.
What's suggested is having a knob in the config file for the user to choose the congestion control algorithm and not limiting Yggdrasil to BBR only.
Wouldn't different congestion algorithms start to clash with eachother and produce weird behaviour?
FWIW, I'm totally for ditching this option altogether in favour of using system-wide knob.
FWIW, I'm totally for ditching this option altogether in favour of using system-wide knob.
+1 on this, tweaking TCP congestion control is usually a bad idea, does more harm than good when users follow the advice of "TCP congestion control comparison" articles and select some weird experimental congestion control algorithm like YeAH TCP that are just overly aggressive and win "benchmarks" because of that. Just stick to the default (CUBIC for now) and switch to BBR/BBRv2 when/if it becomes Linux default.
In any case, all these TCP congestion control algorithms were designed to operate end-to-end. It may be easily possible that when you run a mesh network, and each link runs its own TCP algorithm, algorithms like BBR that periodically unload the link to measure latency make things worse. Most likely though it does not matter at all which algorithm you use for a low-latency single point-to-point connection.
Also don't forget that Yggdrasil is tunneling system TCP (likely CUBIC) with high MTU over Yggdrasil TCP (currently BBR) with low MTU. Without proper research using a tool such as meshnet-lab it's impossible to tell how these tweaks affect the network performance.
v0.5 will no longer request BBR. We will leave the TCP congestion control algorithm up to the host.