Skip to content

Refactor Relay for Symmetric NAT #152

Description

@joshuakarp

Created by @CMCDragonkai

The following discussion from 'Refactoring Network Module' MR should be addressed:

  • @Zachaccino: (+2 comments)

    Nat Type and Strategy

    Full Cone NAT

    Once an internal address (iAddr:iPort) is mapped to an external address (eAddr:ePort), any packets from iAddr:iPort are sent through eAddr:ePort.

    Any external host can send packets to iAddr:iPort by sending packets to eAddr:ePort.

    Single sided hole punching would be sufficient.

    Address Restricted Cone NAT

    Once an internal address (iAddr:iPort) is mapped to an external address (eAddr:ePort), any packets from iAddr:iPort are sent through eAddr:ePort.

    An external host (hAddr:any) can send packets to iAddr:iPort by sending packets to eAddr:ePort only if iAddr:iPort has previously sent a packet to hAddr:any. "Any" means the port number doesn't matter.

    Require coordinated 2 sided hole punching.

    Port Restricted Cone NAT

    Once an internal address (iAddr:iPort) is mapped to an external address (eAddr:ePort), any packets from iAddr:iPort are sent through eAddr:ePort.

    An external host (hAddr:hPort) can send packets to iAddr:iPort by sending packets to eAddr:ePort only if iAddr:iPort has previously sent a packet to hAddr:hPort.

    Require coordinated 2 sided hole punching.

    Symmetric NAT

    Each request from the same internal IP address and port to a specific destination IP address and port is mapped to a unique external source IP address and port; if the same internal host sends a packet even with the same source address and port but to a different destination, a different mapping is used.

    Only an external host that receives a packet from an internal host can send a packet back.

    Not Punchable, Relay is needed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

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