# QUIC NAT Traversal MA Thesis Roadmap
## Background
* Traditionally: ICE, with STUN, and fallback to TURN
* E.g., used in WebRTC for UDP communication (with fallback to TCP)
* Recently, there were some IETF discussions about NAT traversal with QUIC and different options proposed
* Most obviously, since QUIC is *just* UDP, one could run QUIC on top of ICE
* There may be better alternatives
* STUN is unencrypted
* Using QUIC does not require separate protocol stacks for ICE and STUN
* May start with a proxied QUIC connection and switch to a direct connection once suitable paths are identified. This allows us to send data over the proxied connection before finding a direct path. Requires some proxying logic, e.g., MASQUE
* Some ICE pointers:
* RFC 8445 (https://datatracker.ietf.org/doc/rfc8445/)
* Blog series by Eric Rescorla (former CTO of Firefox and WebRTC contributor):
* https://educatedguesswork.org/posts/nat-part-1/
* https://educatedguesswork.org/posts/nat-part-2/
* https://educatedguesswork.org/posts/nat-part-3/
* https://educatedguesswork.org/posts/nat-part-4/
## State of the Art
* Several proposals in IETF:
* Most important: QUIC NAT Traversal
* https://datatracker.ietf.org/doc/draft-seemann-quic-nat-traversal/
* QUIC Address Discovery as an alternative to STUN
* https://datatracker.ietf.org/doc/draft-seemann-quic-address-discovery/
* Less concerned with NATs, but related: P2P QUIC draft
* https://datatracker.ietf.org/doc/draft-thatcher-p2p-quic/
* PoC implementation of QUIC over ICE with quic-go and pion/ice:
* https://github.com/mengelbart/p2pquic
## Potential MA Contents
* Probably more system design/architecture than measurement/evaluation
* Implementation of a PoC, use case: RTP over QUIC app
* Testing in different P2P environments
* Evaluation ideas:
* Connection setup latency compared to ICE/UDP
-> Especially in lossy environments, where ICE retransmissions may be slower than QUIC retransmissions
## Required Qualifications
* Strong background in computer networking
* Knowledge of the internals of QUIC, NAT, and ICE (including STUN) are prerequisite
* Thesis will be coding intensive
* Implementation recommended to use quic-go, thus, requires experience with coding in go