# Reliudp: Custom reliable udp protocol for Rust (Work in progress) ## Short version Features: * No unsafe code * All the downsides of UDP with the sluggishness of TCP * Slow as a camel * I'm not sure how it works * Experimental * Not safe against DOS attacks Downsides: * It works ## Long version This crate is meant be be akin to `https://github.com/BonsaiDen/cobalt-rs`, in the sense that it provides: * Connection over UDP * Guarantee that a message arrives at destination * Extremely Low Latency This crate was mainly made in mind for use cases where *bandwidth is plentifull* and *low latency is of the utmost importance*. Specifically, online multiplayer gaming. ### What is the advantage over raw UDP? * Keeps track of connection, handles timeouts (uses 2-way handshake) * Automatic packet re-ordering * Additional CRC32 check over IP packets, reducing chances of corrupted data to almost none * Possibility to make sure a packet arrives at destination ### What is the advantage over raw TCP? * Not stream based * You choose which packets should be discarded if it doesn't go through the first time: * Key messages will make sure to go through with an Ack system * Forgettable messages will be discarded if packet wasn't complete the first time ### What are the drawbacks ? * (Planned) No network congestion handling * (Planned) No test coverage * (Planned) No optionnal SSL and/or other secure way to send data: everything is plaintext * (Planned) No error correction codes of any kind (Hamming, ...) * (May change in the future) Payloads are limited in size (around ~300KB) * Untested against DOS attacks * No `Future`s support. Will probably never have it. ## License MIT