p2psp team mailing list archive
-
p2psp team
-
Mailing list archive
-
Message #00215
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