Skip to content

Feature Request: Implementation of draft-seemann-quic-nat-traversal-02 for P2P QUIC Connections #6

@minchopm

Description

@minchopm

Description
I am interested in extending the functionality of INVISV masque to support peer-to-peer (P2P) QUIC connections, as described in the Internet-Draft titled "Using QUIC to traverse NATs" (draft-seemann-quic-nat-traversal-02). This draft outlines methods for QUIC to effectively traverse NATs using techniques like ICE and path validation mechanism.

Current Functionality
The current implementation of INVISV masque supports the IETF MASQUE protocol, primarily for tunnelling traffic through a proxy server. This is a fantastic foundation for incorporating QUIC NAT traversal as it deals with similar challenges of network communication across NATs.

Proposed Feature
The draft suggests two main methods for NAT traversal:

Using an external signalling channel with ICE to negotiate UDP address pairs.
A direct approach using a QUIC extension for NAT traversal that doesn't require ICE, but uses path validation to establish and verify direct connections.
Given the existing capabilities of the masque server to handle proxied connections, I believe integrating the NAT traversal QUIC extension could enable direct P2P connections between QUIC clients that first connect through the masque proxy.

Questions and Implementation Thoughts

Is it feasible to integrate this draft's proposed methods into the masque server?
Could the masque server be used to initially relay connection IDs and other necessary information between clients before establishing a direct path?
What modifications would be required on the masque server and the client library to support this?
Potential Benefits

Enhanced utility of the masque server for more complex network scenarios, especially those requiring reliable NAT traversal.
Broadens the use case for QUIC implementations, aligning with ongoing advancements in QUIC and NAT traversal techniques.
I am eager to discuss this possibility further and explore how we might collaborate on or contribute to this feature. Any guidance or thoughts on this would be greatly appreciated.

Thank you for considering this enhancement.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions