started with tcp, took 1-2 days to finish basic stuff. add syn cookies to prevent ddos?
then quic. oh what a MONSTER. took more than a week and still not finished
done:
connection actor model
zero-copy with Bytes
cryptography and tls handshake via rustls (initial, handshake, 1-rtt)
packet and frame parser
handling of major frames: stream, ack, crypto, padding, ping, connection_close, new_connection_id, retire_connection_id
loss recovery logic with rtt estimation (and pto_count, ping probes)
congestion control (cubic)
stream management (reassembly, flow control)
retry packet support
packet coalescing into a single udp datagram
basic cid management
qlog and qkeylog for debugging
0-rtt (session resumption with in-memory store)
header protection and packet number decoding
transport parameters encoding/decoding
custom timing wheel and custom dashmap(sharded map) - just for fur
todo:
proper header building
ack with ecn
finish cid rotation
test with qlog qvis, compare with quinn, do fuzzing tests (or miri)
cargo run --bin tcp
cargo run --bin quic
windows:
need a TUN interface - download wintun.dll and put it in target/debug
route -p ADD 10.0.0.9 MASK 255.255.255.255 10.0.0.1