This document discusses the challenges of implementing distributed hash tables (DHTs) behind network address translation (NAT) devices. It provides background on how NATs and DHTs work individually. Several research projects are summarized that have explored techniques for enabling DHT lookups and routing when nodes are behind NATs, including caching unreachable nodes, parallel lookups, and using rendezvous points. The document also discusses the "non-transitive connectivity" problem caused by NATs and different approaches researchers have taken to address it, such as source routing and tunneling.
3. we know
• how NATs work
• how DHTs work
• classic NAT traversal techniques
• UPnP, relaying, hole punching
4. DHT assumptions
• “Every node in the overlay is able to
exchange messages with any other overlay
node”
• But it’s not true in several cases
5. Kademlia
• XOR as distance metric
• single routing table (bucket list)
• closer/farther buckets as finger table and
routing table
6. Kademlia and NATs
• UPnP if possible
• ‘Invisible nodes’ are cached [Freedman05]
• Lookups done in parallel [Maymounkov]
• No details on specific NAT types
7. BitTorrent
• tcp-layer for file-transport
• udp-layer for searches
• built-in DHT (CHORD alike)
• for tracker-less file-sharing
8. BitTorrent and NATs
• PORT msg for NAT traversal:
• tcp-layer pass ip:port to the udp-layer
• only discussed: http://lists.ibiblio.org/pipermail/
bittorrent/2007-June/002116.html
• In [Lai05] support for Restricted/Port
Restricted in the tcp-layer
9. Maidsafe-DHT
• Kademlia++ built-in NAT traversal, C++
• force-k, report dead-nodes in responses
• UDP hole-punching
• Nodes in the routing table used as
rendezvous points to forward OPEN_HOLE
messages
• UPnP
10. BruNet
• UCLA, Chord-alike, C#, CoRR’07
• a library to build NAT-resilient
DHTs
• 2-phase protocol
• request connection
• handshake: nodes exchange
their public/private addresses
11. BruNet and NATs
• Due to 2-phase, nodes learn public address
• Rendez-vous nodes can be NATted
• It doesn’t work if boths are SYM NATs
• Claims to perform distributed tunneling for
problematic routing problems (SYM NATs,
firewalls, BGP outages)
• no references on papers
12. non-transitive
connectivity
• [Freedman05] describes the non-transitive
connectivity problem
• NATs induce this problem
X
B
A C
13. non-transitive
connectivity
• [Freedman05] report solutions adopted by
3 majors DHT implementations
• Defined as hacks, not as protocol-redesign
• caching unreachable nodes
• iterative routings
14. NTC in FreePastry
• Exchange link state informations among leaf
sets
• restricted to local leafset, not finger table
• probabilistic approach
15. Source-routing to solve
NTC
• In [Dedinski,ISCC’07] a generic source-
routing solution is proposed to NTC
• To build routing tables, nodes exchange full
paths
• Optimizations
• probing, load-balancing
• Evaluation with Chord
16. UIP: Unmanaged
Internet Protocol
• Ford, 2003, tech report
• Routing protocol
• Adapt Kademlia, but relax basic assumption
• don’t assume global connectivity
• physical and virtual links
• support source routing
• recursive tunnelling
17. UIP: recursive
tunnelling
arge
m.
in a
ns a
sical
rop-
ward- Figure 9: Forwarding by Recursive Tunneling
18. UIP
• Ideas are there
• No explicit reference to NAT traversal
techniques
• No evaluations
19. References
• “Non-Transitive Connectivity and DHTs”, Freedman et alii, WORLDS’05
• “A Source Routing Solution to Non-Transitivity Connectivity Problems in
DHTs”, Dedinksi et alii, ISCC’07
• “Implementing NAT traversal on BitTorrent”,Lai’05, unpublished
• “WoW: Self organizing...”, Ganguly et ali, HDPC’07
• “A Symphony Conducted by Brunet”, Boykin2007, tech report
• “Scalable Internet Routing on Topology-Independent Node Identities”, Ford,
2003