Skip to content

Client should open path for off-path path challenges from server #283

@flub

Description

@flub

We used to do this in the DISCO world too: when we received a PING we sent a PONG and also used this to trigger a new PING so the path would become open from both sides. So this is needed for feature parity.

This is easiest to describe as a specific scenario:

  • Server is behind NAT/firewall.
  • Client has a publicly reachable IP.
  • Client connects to server over relay transport.
  • Before the server has the chance to send any ADD_ADDRESS frames the client already initiates holepunching
    • Because it already has local addresses it can send in REACH_OUT frames.
    • This should speed up the direct connection
  • Server sends an off-path PATH_CHALLENGE to the client's public IP, but on path 0.
  • Client responds with an off-path PATH_RESPONSE.
    • But does not open a new path!

In this scenario the client should learn about a new server address from receiving the PATH_CHALLENGE. This address is already validated too. So the client should try an open that as a new path by sending it's own PATH_CHALLENGE on a new PathId, since it still needs to path-validate this path itself.

This speeds up how quickly the endpoints can switch to a direct connection.

Metadata

Metadata

Assignees

No one assigned

    Labels

    QNTQUIC NAT Traversal extension and all holepunching issues

    Type

    Projects

    Status

    👍 Ready

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions