Institute for Software Research International
School of Computer Science, Carnegie Mellon University


TCP Connections for P2P Apps:
A Software Approach to Solving the NAT Problem

Jeffrey L. Eppinger

January 2005


Keywords: P2P, peer-to-peer, NAT Traversal, TCP, network address translation

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 communications 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, using UPnP, or even deploying IPv6. This paper argues that the above approaches suffer from scalability problems, do not address mobility issues, require deploying new network infrastructure, or require using nonstandard communications interfaces, non-standard communication stacks, and non-standard security protocols. 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.

8 pages

Return to: SCS Technical Report Collection
School of Computer Science homepage

This page maintained by