Node NAT statuses
M
Written by Mysterium Network
Updated over a week ago

There are three NAT statuses that your node can attain. They determine the types of consumers the node can connect with. The statuses are:

  • Open – this status indicates that the node is capable of establishing connections with any type of consumer.

  • Moderate – this status indicates that the node is capable of establishing connections with most types of consumers.

  • Strict – this status indicates the node can only establish connections with Open NAT type consumers.

How Is the Status Determined?

Through the TequilAPI endpoint /tequilapi/nat/type, the NodeUI component is gathering information from the node in order to determine the NAT type. After it has performed a series of checks, its results will be one of the following NAT types:

  • none ("None").

  • fullcone ("Full Cone").

  • rcone ("Restricted Cone").

  • prcone ("Port Restricted Cone").

  • symmetric ("Symmetric").

For more information about the NAT definitions above, please refer to Internet Society RFC 3489.

NodeUI Conversion

Once the NAT type is detected, NodeUI is converting it into a human readable format with a more detailed description. Below are the conversion of NAT types into a human readable format types:

  • All connections are counted for none, fullcone, rcone NAT types.

  • Most connections are counted only for prcone.

  • Limited connections are counted only for symmetric NAT type.

Unknown marked if we failed to detect NAT type using user services.

Example of such conversion below:

export const nat2Human = (type: string): NatHumanInfo => { 
switch (type) {
case 'none':
return { connectionAcceptance: 'All', label: 'None', variant: 'ok' }
case 'fullcone':
return { connectionAcceptance: 'All', label: 'Full Cone', variant: 'ok' } case 'rcone':
return { connectionAcceptance: 'All', label: 'Restricted Cone', variant: 'ok' }
case 'prcone':
return { connectionAcceptance: 'Most', label: 'Port Restricted Cone', variant: 'ok' }
case 'symmetric':
return { connectionAcceptance: 'Limited', label: 'Symmetric', variant: 'warning' }
default:
return { connectionAcceptance: 'Unknown', label: 'Unknown', variant: 'error' }
}
}
Did this answer your question?