I've been researching on several NAT Traversal algorithms for project I'm working on. I tried FaceTime on several routers with different NAT configurations and it seemed to work great but couldn't figure out the algorithm. Any help will be much appreciated.
STUN and TURN are listed in the open source protocols used by FaceTime [1], so it is probably one or both of those. There are probably a few more methods too, and it will just keep trying until it finds one that works on the current network.<p>[1] <a href="http://blog.imtc.org/index.php/2010/06/09/the-technology-behind-apples-facetime-standards/" rel="nofollow">http://blog.imtc.org/index.php/2010/06/09/the-technology-beh...</a>
STUN and TURN were already mentioned.<p>There is also Apple's own NAT-PMP which is more like UPnP but simpler. It can directly ask your (Apple) router to open a port and redirect it incoming traffic to a specific IP address on your local network.<p><a href="https://secure.wikimedia.org/wikipedia/en/wiki/NAT_Port_Mapping_Protocol" rel="nofollow">https://secure.wikimedia.org/wikipedia/en/wiki/NAT_Port_Mapp...</a><p>I bet Apple also supports UPnP these days.