IAX versus SIP
Date: Mon, 5 Jul 2004 18:59:52 -0500 (CDT)
From: Mark Spencer <markster@digium.com>
Let me summarize some differences between SIP and IAX, and it might help you make a decision about what is best for you.
1) IAX is more efficient on the wire than RTP for any number of calls, any codec. The benefit is anywhere from 2.4k for a single call to approximately tripling the number of calls per megabit for G.729 when measured to the MAC level when running trunk mode.
2) IAX is information-element encoded rather than ASCII encoded. This makes implementations substantially simpler and more robust to buffer overrun attacks since absolutely no text parsing or interpretation is required. The IAXy runs its entire IP stack, IAX stack, TDM interface, echo canceler, and callerid generation in 4k of heap and stack and 64k of flash. Clearly this demonstrates the implementation efficiency of its design. The size of IAX signaling packets is phenomenally smaller than those of SIP, but that is generally not a concern except with large numbers of clients frequently registering. Generally speaking, IAX2 is more efficient in its encoding, decoding and verifying information, and it would be extremely difficult for an author of an IAX implementation to somehow be incompatible with another implementation since so little is left to interpretation.
3) IAX has a very clear layer2 and layer3 separation, meaning that both signaling and audio have defined states, are robustly transmitted in a consistent fashion, and that when one end of the call abruptly disappears, the call WILL terminate in a timely fashion, even if no more signaling and/or audio is received. SIP does not have such a mechanism, and its reliability from a signaling perspective is obviously very poor and clumsy requiring additional standards beyond the core RF3261.
4) IAX's unified signaling and audio paths permit it to transparently navigate NAT's and provide a firewall administrator only a *single* port to have to open to permit its use. It requires an IAX client to know absolutely nothing about the network that it is on to operate. More clearly stated, there is *never* a situation that can be created with a firewall in which IAX can complete a call and not be able to pass audio (except of course if there was insufficient bandwidth).
5) IAX's authenticated transfer system allows you to transfer audio and call control off a server-in-the-middle in a robust fashion such that if the two endpoints cannot see one another for any reason, the call continues through the central server.
6) IAX clearly separates Caller*ID from the authentication mechanism of the user. SIP does not have a clear method to do this unless Remote-Party-ID is used.
7) SIP is an IETF standard. While there is some fledgling documentation courtesy Frank Miller, IAX is not a published standard at this time.
September 2006: Now there is an IETF Draft to be discovered at http://www.ietf.org/internet-drafts/draft-guy-iax-01.txt October 2006: IETF Draft for IAX2 to be discovered at http://www.ietf.org/internet-drafts/draft-guy-iax-02.txt Sometime between: (the version 03 was published in the mean time) March 30th, 2008: IETF Draft for IAX2, version 4: http://www.ietf.org/internet-drafts/draft-guy-iax-04.txt
8) IAX allows an endpoint to check the validity of a phone number to know whether the number is complete, may be complete, or is complete but could be longer. There is no way to completely support this in SIP.
9) IAX always sends DTMF out of band so there is never any confusion about what method is used.
10) IAX support transmission of language and context, which are useful in an Asterisk environment. That's pretty much all that comes to mind at the moment.
Mark
RS:
I Guess there must be some advantages to SIP (or we should call the writers of it stupid).
So here a few questions to elaborate how IAX handles:
1) Bandwidth indications
2) New codecs
3) extensibility
4) Call Hold and other complex scenarios
5) Video telephone
I have got the impression this has all been better arranged in SIP
Disadvantages (taken from Internet Draft at http://www.ietf.org/internet-drafts/draft-guy-iax-05.txt)
Date: Wed, 18 Mar 2009
From: Sameer Verma <sverma@sfsu.edu>
While IAX is very effective, addressing many of today's communications needs, it does have a few limitations. For instance, IAX uses a point-to-point codec negotiation mechanism that limits extensibility because every IAX node in a call path must support every used codec to some degree. In addition, the codec definition is controlled by an internally defined 32-bit mask, so the codecs must be defined in the protocol, and the maximum number of simultaneous codecs is, therefore, limited.
One of IAX's design strengths also presents a potential problem. The use of a single, well-known, port makes the protocol an easier target for denial of service attacks. Real time systems like VoIP are particularly sensitive to these attacks.
The protocol is typically deployed with all signaling and media going to a centralized server. While this combined path approach provides a great deal of control, it limits the overall system scalability. IAX now provides the ability to split the media from the signaling stream which overcomes this limitation of earlier IAX versions.
Most IAX drawbacks are due to implementation issues rather than protocol issues. Threading presents a series of problems. Many implementations have a limited number of threads available to process IAX traffic and can become overwhelmed by high use or denial of service attacks. Newer implementations have additional controls to minimize the impact of these challenges.
The paper from: http://www.voip-info.org/wiki/view/IAX+versus+SIP