geph-official / geph5

153 stars 29 forks source link

Explore implementations of reliable UDP #27

Open delta4chat opened 2 weeks ago

delta4chat commented 2 weeks ago

The Pipe trait of sosistab3 is now much improved, i.e., it assumes that the underlying transport layer protocol provides reliability, thus avoiding the "MuxStream over TCP" problem of sosistab2 (similar to the "TCP over TCP", it provides double reliability).

That is, in fact, sosistab3 can still use RUDP as long as the other crate implements the Pipe trait and replaces TCP with some other reliable UDP-based transport layer: the difference is that sosistab3 is already encrypted and obfuscated, so the RUDP protocol header needs to be individually encrypted and length-obfuscated, and there is no need to encrypt the RUDP payload part of RUDP.

For example, Sosistab3 over QUIC, KCP, or "Separating the Reliable Transport implementation from sosistab2" can be implemented.

Hopefully developers will not overlook the possibility that the community still needs reliable UDP protocols, not just TCP-only.

nullchinchilla commented 1 day ago

You're welcome to port something like sosistab2's streams over UDP to the sillad::Pipe implementation, and if the code quality is good we can integrate it into the Geph ecosystem.

But overall, I've come to believe that in most circumstances, reliable UDP