← Back to team overview

p2psp team mailing list archive

Re: NAT Traversal Set of rules implementation

 

Hi Vicente,

On 15.06.2015 08:08, Vicente Gonzalez wrote:
> For now, simulation is enough. However, as you thing, we should test
> the "definitive" solution in a real SYM scenario. I'm pretty sure that
> the University of Almería has one. Let me first check it and, if this
> is true, we'll try to run your code here.
Ok, running the code when ready on a real symmetric NAT implementation
would be great!

Over the weekend I implemented algorithm 1 and 2 of the NAT Traversal
Set of rules [1] as {Splitter,Peer,Monitor}_NTS classes, inheriting from
and based on the DBS classes. You can have a look at the NTS branch
changes for details [2].
That first algorithm part has the effect that now FCN<->SYM peer
connections work, in comparison to the existing Full cone NAT Set of
rules. See the tables below for details.
Next I will implement code as in the nts_tests program [3] to make
RCN<->SYM and PRCN<->PRCN connections work as well.
After this I will implement the other NTS algorithms specified in the
paper to detect NAT types.

Currently I perform the connection tests manually, by changing the
iptables rules (and incrementing the port numbers each time, as the
"established" and "related" connection flags remain for a while for
already used ports) and writing the results in a table.
Now I am writing a bash script to automatically run these tests and
output a result table. I would put the script in the "tools" directory
when ready, if that's ok?

Thanks and have a nice week,
Max


[1] splitter sends "[send hello to (X)]" to all peers, the peers receive
this and send "[hello]" to (X).
[2] https://github.com/jellysheep/p2psp/compare/e4e16bd9...jellysheep:nts
[3]
https://github.com/jellysheep/p2psp/commit/31d3231011fabbb393c43c294f0e77c7c983a04d
=> a peer takes the source port of an incoming packet from a known host
(the port is, in case of a symmetric NAT, different from the port
reported by the splitter) and sends all further messages to this port

*
**Test results:*

Full cone NAT Set of rules (FNS):

1 \ 2 	*FCN* 	*RCN* 	*PRCN* 	*SYM*
*FCN* 	yes 	yes 	yes 	no
*RCN* 	yes 	yes 	yes 	no
*PRCN* 	yes 	yes 	no 	no
*SYM* 	no 	no 	no 	no


NAT Traversal Set of rules (NTS), with algorithms 1 and 2:

1 \ 2 	*FCN* 	*RCN* 	*PRCN* 	*SYM*
*FCN* 	yes 	yes 	yes 	*yes*
*RCN* 	yes 	yes 	yes 	*no*
*PRCN* 	yes 	yes 	*no* 	no
*SYM* 	*yes* 	*no* 	no 	no



Follow ups

References