← Back to team overview

p2psp team mailing list archive

Re: NAT Traversal Set of rules implementation

 

Hello Max,

thanks for your report.

Please, check also: http://slides.p2psp.org/BCN-2015, where we provide some
ideas about NAT traversal algorithms in P2PSP.

Regards,
Vi.



On Sun, Jun 21, 2015 at 10:21 PM Max Mertens <max.mail@xxxxxxxxxx> wrote:

>  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
>
-- 
-- 
Vicente González Ruiz
Depto de Informática
Escuela Técnica Superior de Ingeniería
Universidad de Almería

Carretera Sacramento S/N
04120, La Cañada de San Urbano
Almería, España

e-mail: vruiz@xxxxxx
http://www.ual.es/~vruiz
tel: +34 950 015711
fax: +34 950 015486

Follow ups

References