p2psp team mailing list archive
-
p2psp team
-
Mailing list archive
-
Message #00300
Re: NAT Traversal Set of rules implementation
Hi Vicente,
On 08/13/2015 11:58 PM, Vicente Gonzalez wrote:
> Well, your heuristic could work. Have you already implemented it?
Not yet, but it is just a few lines to change/add.
>> The case SYMSP<->SYMSP is difficult to handle in real-world
>> scenarios, as for each tried destination port (probable source
>> port of the other peer) another source port is created. So if
>> another UDP connection besides the P2PSP software is established,
>> the two peers are "out of step" and cannot connect to each other,
>> because the source ports do not match.
>>
>> Well, this is something quite difficult to control. I suppose
>> that for these cases, the incoming could try to join the team
>> more than one time, with the aim of that this situation does not
>> happen in some of the tries.
> This would be good and convenient for the user, if you do not have
> to retry connecting the peers yourself. I would like to implement
> it like this:
> Considering the splitter timeout noted above, the peer will have a
> timeout on its own and will retry incorporation into the team
> before the splitter quits the connection. Also if a connection to
> one or more peers cannot be established (I suppose *all* have to
> be working for P2PSP to work), then the peer will retry as well.
> When retrying incorporation, the peer sends goodbye messages to
> all connected peers and closes the UDP socket, then retries
> sending UDP packets from a new socket to the splitter and the
> monitor again. So the TCP connection to the splitter has to remain
> open until the arriving peer is connected to all existing peers
> (or else the peer would have to start "from scratch", connecting
> to the splitter, receiving the configuration etc.).
>
>
> Well, keeping the TCP connection to the splitter could be dangerous
> for the splitter if the number of incoming peers (with joining
> problems) is high, but, taking into account that we have only two more
> weeks to finish our work, please, implement the easiest (for you)
> solution.
Ok, now I have implemented most parts of this, and the TCP socket can be
closed as early as before, because all further communication between
splitter and peer uses UDP.
On 08/14/2015 12:05 AM, Vicente Gonzalez wrote:
>
> Are the monitor peers assumed to have a known public endpoint,
> i.e. are not behind a NAT?
>
>
> Yes, you can assume that all monitor peers are fully accessible
> (although they could live in a private network).
>
>
> ...
>
> As you prefer, but again, we can assume that all monitor peers will be
> fully accesible from the rest of the team (remember that the monitor
> peers are controlled by the team administrator).
Ok, this is good. Then I will implement the first method (using more
monitors for port step determination), as it does not add much
complexity to the software.
As for the time until "pencils down" date, I plan to finish the last
coding tasks [1] until Sunday, and to test on real hardware from
tomorrow until Tuesday, and after that finish the documentation and
clean up the code until next Friday.
For the testing, I will use the university server for the splitter, and
my home router, mobile network (I am curious about the NAT type) and
some free VPNs (if they have a NAT?) for peers.
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.
It would be great if you could find out the NAT type of your university,
this [2] is a good tool to check. Do you know about more routers I can
use besides the ones mentioned above?
Thanks,
Max
[1] Currently remaining coding tasks: the two mentioned above (retrying
incorporation, using more monitors to determine port step), determining
the currently allocated source port of existing peers, adding improved
port prediction algorithm.
[2] http://nattest.net.in.tum.de/test.php
Follow ups
References
-
NAT Traversal Set of rules implementation
From: Max Mertens, 2015-06-06
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-07-03
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-07-08
-
Re: NAT Traversal Set of rules implementation
From: Vicente Gonzalez, 2015-07-09
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-07-11
-
Re: NAT Traversal Set of rules implementation
From: Vicente Gonzalez, 2015-07-13
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-07-13
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-07-17
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-07-22
-
Re: NAT Traversal Set of rules implementation
From: Vicente Gonzalez, 2015-07-24
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-07-25
-
Re: NAT Traversal Set of rules implementation
From: Vicente Gonzalez, 2015-07-27
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-08-02
-
Re: NAT Traversal Set of rules implementation
From: Vicente Gonzalez, 2015-08-03
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-08-05
-
Re: NAT Traversal Set of rules implementation
From: Vicente Gonzalez, 2015-08-06
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-08-10
-
Re: NAT Traversal Set of rules implementation
From: Vicente Gonzalez, 2015-08-11
-
Re: NAT Traversal Set of rules implementation
From: Max Mertens, 2015-08-12
-
Re: NAT Traversal Set of rules implementation
From: Vicente Gonzalez, 2015-08-13