280 views
# 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