Hi QUIC and MASQUE enthusiasts,

Christian and I have published a blog post describing our vision for a p2p
extension of QUIC: https://seemann.io/posts/2024-10-26---p2p-quic/. The
idea is to do everything inside of QUIC: Imagine two p2p nodes first
establishing a proxied connection via a relay (immediately starting to
exchange application data), and the QUIC stack migrating this connection
towards a direct path between the two nodes in the background.

It turns out that there are just a few missing pieces:

   1. We can use the listener extension to CONNECT-UDP (
   https://datatracker.ietf.org/doc/draft-schinazi-connect-udp-listen/) to
   enable relaying between peers that don't have a direct connection (yet),
   and for peers where NAT traversal fails (thereby replacing what
   traditionally a TURN server would've been deployed for).
   2. It is trivial to perform address discovery inside of QUIC (replacing
   STUN):
   https://datatracker.ietf.org/doc/draft-seemann-quic-address-discovery/
   3. Finally, we can use QUIC's path migration logic to establish the NAT
   bindings ("hole punching") required for a direct connection between two
   nodes. We just need to allow the server to initiate paths, and coordinate
   hole punching attempts:
   https://datatracker.ietf.org/doc/draft-seemann-quic-nat-traversal/

In terms of maturity, the address discovery draft has gone through a couple
of revisions since we last discussed it in the QUIC WG in Prague, and is
now implemented by multiple QUIC stacks. The NAT traversal draft needs a
bit more work.

While these drafts were all presented individually, we haven’t talked a lot
about how they fit into the bigger picture before presenting the vision in
our blog post. We would love to get feedback from the working groups, and
help to drive the drafts to publication.

-- Marten

Reply via email to