Patent ID: 8130760

Claim:
A method of resolving NAT and firewall related issues for initiation of a session, the method including: determining NAT/firewall topology by sending two or more messages from the initiating peer device by an unreliable transport protocol through one or more NAT and firewall devices to two or more external IP/port addresses, listening for responses, and determining from the responses or lack of responses whether the firewall will allow initiation of unreliable transport protocol sessions or determining whether the NAT assigns IP/port addresses to the messages that are predictable by the initiating peer device; sending one or more probe messages through the one or more NAT and firewall devices to an external server, listening for responses and identifying from the responses one or more external IP/port addresses assigned by the NAT to the one or more probe messages; proceeding with an exchange of session initiation messages, wherein a session initiation message from the initiating peer device includes at least an internal, inside the NAT, IP/port address and the external IP/port addresses for the initiating peer device; using at least results of the determining NAT/firewall topology, selecting potentially successful hole punching strategies and commencing, if selected, cooperative punching to establish an unreliable transport session between the initiating and responding peer devices without forwarding through an external media forwarding device, wherein cooperative hole punching means one peer device causing the NAT to open a port and listening for packets from an other peer device addressed to the opened port.