Skip to content

UDP hole-punched Multiplayer from behind NAT #15926

@GoodClover

Description

@GoodClover

Problem

Jack is playing a world (possibly with "Host Server" toggled on), and Jill wants to join, but Jack (and possibly Jill) is behind a NAT.

Currently to connect a port-forward or tunnel would be required.

Solutions

Do UDP hole-punching either via a public service fully negotiating, or just to get the external port and have them manually exchange ip:port pairs with each-other.

This makes it much easier for people to host & join private games.

Alternatives

Everyone must use an existing tunnel solution (s.a. VPN) or port-forwarding.
Tunnelling is often technical to set up or costs money.
Port-forwarding is easier but requires permission and is impossible on non-home networks.

A kid or layperson just wanting to join a game with their friends is unlikely to do either.

(There's also the possibility of UPnP, PCP, or NAT-PMP, but I think those're almost always disabled. At the least I know UPnP is very prone to security issues. This should possibly be a separate feature request.)

Additional context

This is NOT distributed servers or anything of the sort - there is still a single host (Jack). This is just an alternative way to initiate a connection between the host & clients.

Note that mobile networks used by phones often do NAT in a way that makes hole-punching unreliable at best.
For home NAT hole-punching has become a feature so should always work afaik.

Metadata

Metadata

Assignees

No one assigned

    Labels

    @ NetworkFeature requestIssues that request the addition or enhancement of a feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions