NATT - NAT traversal
NAT traversal allow two passive clients to connect to each other. For more information about NAT traversal[1][2].
If a client does not support TCP4 or TCP6, it will send an RCM to the client it is trying to connect to. If the other client also doesn't support TCP4 (or TCP6 correspondingly), NAT traversal may instead be used. The feature should be signalled in SUP as NATT.
Do note that the hub must forward I4 or I6 for respective clients' INF.
BASE RCM updates
When receiving an RCM and the client does not support TCP4 or TCP6, and if NAT-T is supported in the remote client, a NAT command should be sent repeating the protocol and token. The port shall be the outbound port to the connected hub.
NAT
NAT protocol port token
Contexts: T
States: NORMAL
Upon receiving this, try and connect to the specified port. An RNT command should be sent repeating the protocol and token. The port shall be the outbound port to the connected hub. Upon receiving this, try and connect to the specified port.
RNT
RNT protocol port token
Contexts: T
States: NORMAL
Upon receiving this, try and connect to the specified port.
Example
Client A is connected to hub A with the outbound port 1000 and client B is connected to hub A with the outbound port 2000. Client A has the SID AAAA and client B has the SID BBBB.
| Client A: DRCM AAAA BBBB ADC/1.0 foobar
| Client B: DNAT BBBB AAAA ADC/1.0 2000 foobar
|
| <Client A connects to client B's IP address and port 2000>
|
| Client A: DRNT AAAA BBBB ADC/1.0 1000 foobar
|
|
| <Client B connects to client A's IP address and port 1000>
|
References
- ↑ NAT Traversal Constraints by Cologic (Jun 15, 2010)
- ↑ Passive Mode C-C Connections and NAT Traversal by Cologic (Feb 13, 2010)
Links
NAT Traversal Compatibility Survey
|