Inter-Asterisk eXchange (IAX) is a communication protocol used to initiate user sessions, similar to an SIP, in order to transmit and control streaming media, especially in Voice over Internet Protocol calls. IAX2 (the newest version) is a preferred method because of its flexibility, as it is compatible with a variety of codecs, and jitters and lag are minimal due to trunking and multiplexing, which means the amount of bandwidth and latency are also kept at minimal levels.
Trunking merges data from more than one call into a unified packet stream, which decreases the IP overhead, and thus does not create latency. The protocol is also preferable in VoIP connections within servers aside from a client-server communication where IP headers consume a large amount of bandwidth.
Because the technology transmits media and signaling on the same port, parameters and commands are relayed in binary with allocated numeric codes given to extensions. Unlike H.323, SIP or MGCP, which all utilize RTP streams to transmit data, IAX uses a User Datagram Protocol (UDP) data stream in order to communicate with endpoints, meaning the protocol works well with firewalls.
Asterisk, one of the first open source, free-of-charge software rendition of a public branch exchange (PBX), used IAX as a way to operate with SIP telephones. IAX assists in the trunking efficiency of calls in the Asterisk PBX network. This allows Asterisk to support PSTN and VoIP services, which can aid in upgrading older systems to accommodate newer technology. Mark Spencer, creator of Asterisk, created IAX for the purpose of VoIP signaling for Asterisk. Although IAX originated from Asterisk, it is compatible with other softswitches, especially in IP-to-IP communications.