-
Notifications
You must be signed in to change notification settings - Fork 497
Description
Describe the feature
Multiplexing UDP traffic, i.e. client fanning out a single UDP stream to multiple WebSocket streams and assemble them at the server side.
Describe the reason for such feature
Current design to transport UDP traffic (e.g. WireGuard) through TCP WebSocket experiences severe head-of-line blocking in busy or lossy network environments. Multiplexing the traffic, i.e. splitting one UDP stream into several transport sessions will significantly reduce the probability and duration of blocking, hence improve the performance. And UDP is natively unsequenced.
Describe alternatives you've considered
There have been discussions around HTTP/2 multiplexing and HTTP/3 QUIC for this tool. In addition to the fact there are heavy contraints when used behind reverse proxies, and that HTTP/3 QUIC is not yet supported in this tool, HTTP/2 multiplexing won't solve this problem particularly with payloads like WireGuard. Because the traffic is still seen as a single session, it will not have native multiplexing, therefore is still up to wstunnel to simulate it.