KaiKai: A NAT Traversal Approach by Using Protocol Behavior Analysis

Typical NAT traversable applications solve the peer-to-peer communication problems by means of STUN-like NAT traversal approach. For example, Skype is a well-known NAT traversable application. The Skype developer claims that peer-to-peer voice over IP (VoIP) service can work across NATs/firewalls. Two Skype clients which reside in different NATs can connect directly with each other. Nonetheless, Skype clients can not traverse through the NAT daemon on FreeBSD system without "Deny Incoming" option being set. The default of this option is disabled and Skype clients must depend on third parties to relay voice instead of contacting with correspondent directly. The situation result in voice quality degradation and scalability problems. This paper proposes a novel approach "KaiKai" for applications to solve this problem. KaiKai can make two clients contact directly even these two clients reside in different NATs. By using protocol behavior analysis, KaiKai can cooperate with NATs with or without "Deny Incoming" option being set. We implemented KaiKai on Windows system and chose Skype as our demonstration application. Our experiments show that KaiKai can make two Skype clients connect directly behind different NATs. Consequently, the better quality of service and scalability can be achieved.