One reason analog telephones are still around is that you can buy an inexpensive model, plug it in and begin making calls right away. When was the last time you were able to do that with a new IP phone? Most VoIP protocols are hard to configure in certain environments, making it difficult to get many new VoIP products working out of the box.
After Mark Spencer created Asterisk, the open source PBX, he started to see how this lack of simplicity could be a huge barrier to the VoIP market. In response, he created a new protocol called IAX.
The goals for this new protocol were to minimize the necessary bandwidth for signaling and media, and provide internal support for network address translation (NAT) transparency, all while remaining extensible for future enhancements. No extra configuration is necessary to coerce IAX to traverse NAT firewalls.
Instead of using Real-time Protocol (RTP), IAX uses User Datagram Protocol (UDP) over a single Internet port (Port 4569) to transmit and receive signaling and media. IAX easily traverses firewalls and uses much less overhead than RTP. IAX can triple the number of calls sent through a single megabit when using the G.729 compression codec. For example, pairing G.729 with the IAX protocol allows at least 103 calls to be sent over 1M bit of bandwidth.
Rather than parsing text commands, IAX uses binary-only data because this is the natural way for machines to communicate with each other.
The IAX protocol responses are sent back to wherever they came from rather than having to negotiate a foreign IP address. Because it constantly sends ping-pong queries, if the line suddenly goes dead, the IAX device will realize this in less than a minute.
All signaling takes place within a consistent Layer 2 data link layer. Dual-tone multi-frequency tones are always sent through the same path as the rest of the signaling data and so are reliably retransmitted on the other end.
The IAX protocol transmits audio packets with only 4 bytes of header each and commands use of very little bandwidth. For multiple calls, IAX trunking reduces the overhead of each channel by combining data from several channels into one packet, reducing not only the number of headers but also the number of packets. This is important for wireless networks.
Better yet, the IAX protocol is so simple and straightforward that the entire IP stack, IAX stack, TDM interface, echo cancellation and caller ID generation has been implemented in an analog terminal adapter (ATA). An ATA device includes an Ethernet jack and a phone jack, and converts any analog phone to an IP phone. An IAX ATA device can be built using only an 8-bit microprocessor, 4K bytes of RAM and 64K bytes of internal flash memory. In the near future, someone could build a US$10 IP phone using inexpensive parts such as these.
Future product presence
The IAX protocol is being extended to include encryption and intercom functionality. Although all implementations are the same, the major obstacle now for IAX's acceptance by vendors seems to be its lack of a documented standard. However, many contributors are working to create a standard, and anyone can volunteer to contribute to the cause.
Even without a documented standard, a number of vendors have created new IAX-compatible products or extended their current products through IAX support.
The traditional analog public switched telephone network service is reliable because it is so simple that there is very little that can go wrong. The goal behind the engineering of IAX is to make VoIP equally simple, so that one day even the least technical employees in your office can plug in an inexpensive IP phone and start making calls on it right away.