Skip to content

Selithrarion/rust-quic-deep-dive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rust quic deep dive

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

About

low level networking stuff, building quic from scratch to understand foundations

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages