Peer-to-Peer Communication Across Network Address Translators
Network Address Translation (NAT) causes well-known difficulties for Peer-To-Peer (P2P) communication, since the peers involved may not be reachable at any globally valid IP address. Several NAT traversal techniques are known, but their documentation is slim, and data about their robustness or relative merits is slimmer. This paper documents and analyzes one of the simplest but most robust and practical NAT traversal techniques, commonly known as "Hole Punching." Hole punching is moderately well-understood for UDP communication, but the authors show how it can be reliably used to set up peer-to-peer TCP streams as well.