IAX, the Inter-Asterisk exchange protocol, was designed by Mark Spencer and Frank W. Miller of Digium, and is concerned primarily with transmission of streaming audio (later, perhaps video) over IP networks - most notably, the public Internet. Voice over IP (VoIP) services are the primary application for IAX, which is designed as an alternative to the Session Initiation Protocol (SIP) and the Media Gateway Control Protocol (MGCP). MGCP is not a protocol often implemented in free software, and SIP primarily operates over UDP, making IAX an excellent alternative to both.

Bandwidth delay products, UDP, and TCP

When dealing with VoIP networks, there are a number of concerns in the concept of a bandwidth-delay product. BDP is a component of a comprehensive network latency measurement system and a term used in network design. The relevance to VoIP is that voice traffic is highly susceptible to delays in transmission, packet loss, and packet reordering. Signalling protocols are also very susceptible to these issues. The underlying network transport protocols, TCP and UDP, are very important in the transmission of this higher-level application data. TCP provides a better solution than UDP in many cases since it is a reliable protocol, although it still has its disadvantages (overhead matters when you are transmitting many small packets). While IAX is primarily implemented using UDP, it offers a level of reliability that SIP does not possess, and can multiplex voice calls into a single packet by judicious use of heartbeat and timestamp fields within its packets. IAX also avoids several NAT problems that SIP is susceptible to (SIP carries the IP addresses within the packet, whereas IAX does not).

Call Flows

All flows refer to "system A" (caller) and "system B" (receiver).

  • Call Setup:
  • Call Teardown: Consists of HANGUP->ACK.

Full Frames, Mini Frames, and Meta Frames

IAX frames can be defined as "full" (or F) frames, which are the only ones transmitted reliably, or mini frames, which are used for transmitting media. There are also meta frames, which are used for carrying miscellaneous trunking data and which are not discussed in the latest version of the specification.

IAX is currently only supported using the Asterisk open-source PBX.