VoIP Protocols




The mechanism for carrying a VoIP connection generally involves a series of signaling
transactions between the endpoints (and gateways in between), culminating into two
persistent  media streams (one for each direction) that carry the actual  conversation.
There are several protocols in existence to handle this. In this section, we will discuss
some of those that are important to VoIP in general and to Asterisk specifically.

IAX (The “Inter-Asterisk eXchange” Protocol)

If you claim to be one of the folks in the know when it comes to Asterisk, your test will
come when you have to pronounce the name of this protocol. It would seem that you
should say “eye-ay-ex”, but this hardly rolls off the tongue very well.† Fortunately, the

proper pronunciation is in fact “eeks.”‡ IAX is an open protocol, meaning that anyone
can download and develop for it, but it is not yet a standard of any kind.§

It is expected that IAX2 will become an IETF protocol soon. IAX2 is currently in draft
status with the IETF, and it is widely expected to become an official protocol in a few
years’ time.
In Asterisk, IAX is supported by the chan_iax2.so module.

History

The IAX protocol was developed by Digium for the purpose of communicating with
other Asterisk servers (hence the Inter-Asterisk eXchange protocol). It is very important
to note that IAX is not at all limited to Asterisk. The standard is open for anyone to
use,  and it  is  supported by many other  open source telecom projects, as well as by
several hardware vendors. IAX is a transport protocol (much like SIP) that uses a single
UDP port (4569) for both the channel signaling and media streams. As discussed later
in this chapter, this makes it easier to manage when behind NATed firewalls.
IAX also has the unique ability to trunk multiple sessions into one dataflow, which can
be a tremendous bandwidth advantage when sending a lot of simultaneous channels
to  a  remote box.  Trunking  allows multiple media  streams  to  be represented with  a