zerotier / ZeroTierOne

A Smart Ethernet Switch for Earth
https://zerotier.com
Other
14.55k stars 1.7k forks source link

ECN bleaching - RFC6040 not supported #2246

Open mrjstrand opened 8 months ago

mrjstrand commented 8 months ago

Just discovered that it currently seems impossible to use ZeroTeir with L4S which is relying on handling of ECN bits according to RFC6040 across tunnels. Without supporting RFC6040 congestion controllers and rate adaptors that is using L4S is not possible to use through ZeroTeir. I.e. TCP Prague, BBRv2, AppleQUIC, SCReAM etc... will not be possible to use any Congestion Experienced (CE) indication from L4S enabled intermediate nodes and needs to fall back to e.g. loss based legacy behavior. This will potentially break some time sensitive applications (like remote gaming and other remote controlled Use Cases) and will limit the usability of ZeroTeir.

joseph-henry commented 8 months ago

Thank you for this. I can think of a few situations where this was likely the culprit for some issues. We'll work on testing this idea.

laduke commented 8 months ago

What is an easy way to test the effects of this?

mrjstrand commented 8 months ago

As described you can test with ping and check inner and outer header with tcpdump. Like this from a ZT end point:

ping -Q 0x01

On Tue, 12 Mar 2024, 19:45 Travis LaDuke, @.***> wrote:

What is an easy way to test the effects of this?

— Reply to this email directly, view it on GitHub https://github.com/zerotier/ZeroTierOne/issues/2246#issuecomment-1992322619, or unsubscribe https://github.com/notifications/unsubscribe-auth/BDC22RVINBEIZ6RUIQTJS5DYX5EOHAVCNFSM6AAAAABEIEOM4OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJSGMZDENRRHE . You are receiving this because you authored the thread.Message ID: @.***>

laduke commented 8 months ago

Thanks. I see, but what is a test closer a real usecase or application that works better if these bits are set correctly?

mrjstrand commented 8 months ago

To test using L4S you can create a bottleneck with a tool called Jens: https://github.com/telekom/aml-jens

then use a L4S enabled congestion control e.g the SCReAM test application: https://github.com/EricssonResearch/scream

or e.g. TCP Prague: https://github.com/L4STeam/linux

The SCReAM test app provides quite detailed logs over what is observed at the endpoints while the Jens tool provides observation at the bottleneck as well as CE markings.

Den tis 12 mars 2024 kl 20:16 skrev Travis LaDuke @.***

:

Thanks. I see, but what is a test closer a real usecase or application that works better if these bits are set correctly?

— Reply to this email directly, view it on GitHub https://github.com/zerotier/ZeroTierOne/issues/2246#issuecomment-1992368321, or unsubscribe https://github.com/notifications/unsubscribe-auth/BDC22RTANEIAOGOOXML5DBLYX5IBRAVCNFSM6AAAAABEIEOM4OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJSGM3DQMZSGE . You are receiving this because you authored the thread.Message ID: @.***>