NAT Traversal in MaidSafe-Routing and peer sampling service (PSS)


I’ve just read “DHT-based NAT Traversal” by David Irvine of Maidsafe and done some research on other solutions out there such as Usurp, which is actually mentioned alongside Maidsafe SON here Usurp: Distributed NAT Traversal for Overlay Networks

It states here about Maidsafe SON “private nodes pick a rendezvous parent using bootstrap nodes from their own routing table dump on start-up, so there are no guarantees on whether a node can discover the rendezvous server responsible for a private node- false negatives are possible. Also, they do not separate NAT type identification from NAT traversal, so, similar to Interactive Connectivity Establishment (ICE), as nodes do not know each others NAT type, a connection request results in a node trying to connect using several mechanisms in parallel: direct connection, connection reversal, and hole-punching.”

Now I’m not aware if these issues have been addressed.

However my question more pertains to several interesting papers on newer peer sampling services such as Nylon, Croupier, or this Wormhole-Based PSS

The advantages of these systems is well encapsulated in the following:

“Despite much recent research on peer-to-peer (P2P) protocols for the Internet, there have been relatively few practical protocols designed to explicitly account for Network Address Translation gateways (NATs). Those P2P protocols that do handle NATs circumvent them using relaying and hole-punching techniques to route packets to nodes residing behind NATs. In this paper, we present Croupier, a peer sampling service (PSS) that provides uniform random samples of nodes in the presence of NATs in the network. It is the first NAT-aware PSS that works without the use of relaying or hole-punching. By removing the need for relaying and hole-punching, we decrease the complexity and overhead of our protocol as well as increase its robustness to churn and failure. We evaluated Croupier in simulation, and, in comparison with existing NAT-aware PSS’, our results show similar randomness properties, but improved robustness in the presence of both high percentages of nodes behind NATs and massive node failures. Croupier also has substantially lower protocol overhead.”

Is something like this possible in the Maidsafe Architecture?
Whether they’re the Usurp DHT-based, the Nylon RVP-based, or something more like Croupier or the Wormhole gossip protocols, it may be something to revisit.


Quick answer, I have not read those other papers, but have bookmarked this post (thanks). The quote about maidsafe is out of date now (not sure it was ever true). We do get the NAT type and distinguish full cone, symmetric and port restricted (as well as port duplicated (reused) symmetric NAT, what ever that is called). In MaidSafe the connect messages in routing establish the appropriate ip:port for the connecting nodes based on their type.

It is for sure one of the test elements we are looking at, so far we bust through all NAT types we have tried. There are some very weird behaviours out there now as manufacturers condense port usage as much as possible.

I suspect the paper was written based on the older MaidSafe-DHT implementation. Nwo we do a bunch of tests on node types before a connection. Thanks for the link, the guys will find this interesting to compare with what we have done and if we can improve protocol overhead then great.

Good find.