The general perception is that unlike SIP, IAX does not suffer from NAT traversal problem. Claims along this line are routinely made and every time I encounter such a claim I will scratch my head and will do some fact checking to confirm my understanding is correct. The latest example of such a claim was recently made by Ted Wallingford as part of his review of a SOHO PBX from Jazinga. It is informative to analyze how IAX handles (“does not suffer” is not a correct characterization) NAT traversal. This is topical because Adobe has announced that they are planning to support UDP based media streaming in Flash 10 and I suspect that they are using the same methodology that IAX uses. In this post I argue that either of the schemes falls within ICE framework.
IAX specification itself claims that NAT traversal is much simpler because “IAX also uses the same UDP port for both its signaling and media messages, and because all communications regarding a call are done over the same point-to-point path”. This can not be the full explanation. If so, then SIP could also decide to use a standard UDP port for media and realize the same benefit. Consider the case of an end-point that is behind a NAT. Even though that end-point will use the well-known port 4569 for IAX, there is no guarantee that NAT will allocate the same port number for external communication. So how will an external end-point reach this end-point? It is clear that such end-points need to be aided by an external peer, otherwise known as “server”. Since this server will handle the media packets as well, it is essentially acting like a TURN server. Involving a TURN server for the duration of the call is inefficient. Recognizing this, IAX specification has developed “Call Path Optimization” (Section 6.5)procedure. According to this procedure, the IAX server will request the two end-points to exchange media directly between themselves by providing the IP addresses of the end-points. Since the server is providing the IP addresses, they are “server reflexive addresses” that ICE uses. We know that there are instances when these server reflexive addresses will not be reachable as in the case when the two end-points are behind the same NAT. Thus the procedure specified in the IAX specification is sub-optimal to IAX. Of course they can update their procedure to conform to ICE. But the point remains that IAX addresses NAT traversal problem not because it uses the same UDP port for media and signaling, but because it uses a server that can act as a TURN server and that server facilitates an ICE-like procedure.
From the description of Flash 10, it is clear that they are also doing a similar thing. But it is not clear whether they are following the full ICE framework or a subset. It is worthing looking into it once we have additional information.
Copyright © 2003-2009 Moca Educational Products.