TCP Connections for P2P Apps: A Software Approach to Solving the NAT Problem
journal contributionposted on 01.01.2005, 00:00 by Jeffrey L Eppinger
Many P2P applications need to connect to each other via TCP, but are increasingly stymied by NAT boxes. Some popular P2P applications do not address NAT traversal or do so poorly. A few newer ones route com- munications between NATed peers through relay servers or through non-NATed peers, or they ask users to reconfigure their NAT boxes. Some emerging solutions suggest using SIP to set up tunneling over UDP, us- ing UPnP, or even deploying IPv6. This paper argues that the above approaches suffer from scalability prob- lems, do not address mobility issues, require deploying new network infrastructure, or require using non- standard communications interfaces, non-standard communication stacks, and non-standard security proto- cols. We advocate direct TCP connections between peers. We present NatTrav, our NAT Traversal Java package that makes TCP connections between NATed peers and addresses all of the above concerns. We then compare NatTrav with some of the other current and emerging solutions.