System information
thousands of packages, and then deliver each package in whatever way possible to the
far end. Clearly, some way of dealing with this is required.
VoIP Protocols
The mechanism for carrying a VoIP connection generally involves a series of signaling
transactions between the endpoints (and gateways in between), culminating in 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 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.
§
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 appendix, 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
result in a tremendous bandwidth advantage when sending a lot of simultaneous chan-
nels to a remote box. Trunking allows multiple media streams to be represented with
a single datagram header, which lowers the overhead associated with individual
channels. This helps to lower latency and reduce the processing power and bandwidth
required, allowing the protocol to scale much more easily with a large number of active
channels between endpoints. If you have a large quantity of IP calls to pass between
two endpoints, you should take a close look at IAX trunking.
† It sounds like the name of a Dutch football team.
‡ Go ahead. Say it. That sounds much better, doesn’t it?
§ Officially, the current version is IAX2 (officially standardized by the IETF in RFC 5456), but all support for
IAX1 has been dropped, so whether you say “IAX” or “IAX2,” it is expected that you are talking about
version 2.
VoIP Protocols | 619