NAT Traversal Techniques and UDP Keep-Alive Interval Optimization
Widmer, Christopher Daniel
MetadataShow full item record
NAT traversal presents a challenge to Peer to Peer (P2P) applications, as in many instances a third party is needed to help initiate communication between two hosts when one is behind one or more NAT devices. Much work has gone into facilitating communication across NATs using various protocols, and several standards have been developed to this end. This thesis explores the advantages and disadvantages of several of these standards, including protocols for interacting with the NAT device itself (NAT Port Mapping Protocol (NATPMP), Port Control Protocol (PCP), and Universal Plug and Play (UPnP)), and those using an external server to obtain the external facing address and port mapping of a client (Session Traversal Utilities for NAT (STUN)). The results from a small series of performance tests are also described. A common technique for maintaining connections through NATs is to use some form of “keep-alive” message so that the connection mapping in the NAT device will not expire. This thesis explores several existing methods for encoding and scheduling keep-alive messages. In addition, it introduces a new state-based technique, “STUN Calc Keep-Alive”, as an extension of the STUN protocol for calculating an appropriate keep-alive interval for a User Datagram Protocol (UDP) connection with the current network configuration and efficiently adapting to NAT mapping lifetime changes. In addition to having the algorithm run on a dedicated connection, two possible implementations for running the algorithm using a “single channel”, or on the same connection as other application traffic, are described.