IAX
Encyclopedia
IAX is the Inter-Asterisk eXchange protocol
native to Asterisk
PBX and supported by a number of other softswitch
es and PBXs. It is used for enabling VoIP connections between servers
beside client–server communication.
IAX now most commonly refers to IAX2, the second version of the IAX protocol. The original IAX protocol has been deprecated in favor of IAX2.
The IAX2 protocol was published as an informational (non-standards-track) RFC 5456 by discretion of the RFC Editor in February 2010.
IAX2 uses a single UDP
data stream (usually on port 4569) to communicate between endpoints, multiplexing signaling and media flow. IAX2 easily traverses firewalls and network address translators. This is in contrast to SIP
, H.323
and MGCP which use an out-of-band
RTP
stream to deliver information.
IAX2 supports trunking
, multiplexing
channels over a single link. When trunking
, data from multiple calls are merged into a single stream of packets between two endpoints, reducing the IP overhead without creating additional latency. This is advantageous in VoIP transmissions, in which IP headers use a large percentage of bandwidth
.
(Network Address Translation) transparency. Another goal is to be easy to use behind firewalls.
The basic structure of IAX is that it multiplexes signaling and multiple media streams over a single UDP
(user datagram protocol) stream between two computers. IAX is a binary protocol, designed to reduce overhead especially in regard to voice streams. Bandwidth efficiency in some places is sacrificed in exchange for bandwidth efficiency for individual voice calls. One UDP
stream is easier to setup for users that are behind a firewall.
An additional benefit to having a single stream is the added security, which can be implemented very easily. Furthermore, in countries where ISP
s are filtering VoIP, IAX can be easily hidden.
This flaw no longer exists in up-to-date installations of Asterisk and other PBXes.
Communications protocol
A communications protocol is a system of digital message formats and rules for exchanging those messages in or between computing systems and in telecommunications...
native to Asterisk
Asterisk (PBX)
Asterisk is a software implementation of a telephone private branch exchange ; it was created in 1999 by Mark Spencer of Digium. Like any PBX, it allows attached telephones to make calls to one another, and to connect to other telephone services including the public switched telephone network and...
PBX and supported by a number of other softswitch
Softswitch
A softswitch is a central device in a telecommunications network which connects telephone calls from one phone line to another, typically via the internet, entirely by means of software running on a general-purpose computer system...
es and PBXs. It is used for enabling VoIP connections between servers
Inter-server
In computer network protocol design, inter-server communication is an extension of the client–server model in which data are exchanged directly between servers...
beside client–server communication.
IAX now most commonly refers to IAX2, the second version of the IAX protocol. The original IAX protocol has been deprecated in favor of IAX2.
The IAX2 protocol was published as an informational (non-standards-track) RFC 5456 by discretion of the RFC Editor in February 2010.
Basic properties
IAX2 is a VoIP protocol that carries both signaling and media on the same port. The commands and parameters are sent in binary format and any extension has to have a new numeric code allocated. Historically this was modeled after the internal data passing of Asterisk modules .IAX2 uses a single UDP
User Datagram Protocol
The User Datagram Protocol is one of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer applications can send messages, in this case referred to as datagrams, to other hosts on an Internet Protocol network without requiring...
data stream (usually on port 4569) to communicate between endpoints, multiplexing signaling and media flow. IAX2 easily traverses firewalls and network address translators. This is in contrast to SIP
Session Initiation Protocol
The Session Initiation Protocol is an IETF-defined signaling protocol widely used for controlling communication sessions such as voice and video calls over Internet Protocol . The protocol can be used for creating, modifying and terminating two-party or multiparty sessions...
, H.323
H.323
H.323 is a recommendation from the ITU Telecommunication Standardization Sector that defines the protocols to provide audio-visual communication sessions on any packet network...
and MGCP which use an out-of-band
Out-of-band
The term out-of-band has different uses in communications and telecommunication. In case of out-of-band control signaling, signaling bits are sent in special order in a dedicated signaling frame...
RTP
Real-time Transport Protocol
The Real-time Transport Protocol defines a standardized packet format for delivering audio and video over IP networks. RTP is used extensively in communication and entertainment systems that involve streaming media, such as telephony, video teleconference applications, television services and...
stream to deliver information.
IAX2 supports trunking
Trunking
In modern communications, trunking is a concept by which a communications system can provide network access to many clients by sharing a set of lines or frequencies instead of providing them individually. This is analogous to the structure of a tree with one trunk and many branches. Examples of...
, multiplexing
Multiplexing
The multiplexed signal is transmitted over a communication channel, which may be a physical transmission medium. The multiplexing divides the capacity of the low-level communication channel into several higher-level logical channels, one for each message signal or data stream to be transferred...
channels over a single link. When trunking
Trunking
In modern communications, trunking is a concept by which a communications system can provide network access to many clients by sharing a set of lines or frequencies instead of providing them individually. This is analogous to the structure of a tree with one trunk and many branches. Examples of...
, data from multiple calls are merged into a single stream of packets between two endpoints, reducing the IP overhead without creating additional latency. This is advantageous in VoIP transmissions, in which IP headers use a large percentage of bandwidth
Bandwidth (computing)
In computer networking and computer science, bandwidth, network bandwidth, data bandwidth, or digital bandwidth is a measure of available or consumed data communication resources expressed in bits/second or multiples of it .Note that in textbooks on wireless communications, modem data transmission,...
.
Origin of IAX
The IAX and IAX2 protocols were created by Mark Spencer for Asterisk for VoIP signaling. The protocol sets up internal sessions and these sessions can use whichever codec they want for voice transmission. The Inter-Asterisk Exchange protocol essentially provides control and transmission of streaming media over IP (Internet Protocol) networks. IAX is extremely flexible and can be used with any type of streaming media including video, however it is mainly designed for control of IP voice calls.The goals of IAX
The primary goals for IAX were to minimize bandwidth used in media transmissions, with particular attention drawn to control and individual voice calls, and to provide native support for NATNetwork address translation
In computer networking, network address translation is the process of modifying IP address information in IP packet headers while in transit across a traffic routing device....
(Network Address Translation) transparency. Another goal is to be easy to use behind firewalls.
The basic structure of IAX is that it multiplexes signaling and multiple media streams over a single UDP
User Datagram Protocol
The User Datagram Protocol is one of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer applications can send messages, in this case referred to as datagrams, to other hosts on an Internet Protocol network without requiring...
(user datagram protocol) stream between two computers. IAX is a binary protocol, designed to reduce overhead especially in regard to voice streams. Bandwidth efficiency in some places is sacrificed in exchange for bandwidth efficiency for individual voice calls. One UDP
User Datagram Protocol
The User Datagram Protocol is one of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer applications can send messages, in this case referred to as datagrams, to other hosts on an Internet Protocol network without requiring...
stream is easier to setup for users that are behind a firewall.
An additional benefit to having a single stream is the added security, which can be implemented very easily. Furthermore, in countries where ISP
Internet service provider
An Internet service provider is a company that provides access to the Internet. Access ISPs directly connect customers to the Internet using copper wires, wireless or fiber-optic connections. Hosting ISPs lease server space for smaller businesses and host other people servers...
s are filtering VoIP, IAX can be easily hidden.
IAX drawbacks
- Awkward extensibility: Due to the lack of a generic extension mechanism, every new feature has to be added in the protocol specification, which makes it less flexible than H.323H.323H.323 is a recommendation from the ITU Telecommunication Standardization Sector that defines the protocols to provide audio-visual communication sessions on any packet network...
, SIPSession Initiation ProtocolThe Session Initiation Protocol is an IETF-defined signaling protocol widely used for controlling communication sessions such as voice and video calls over Internet Protocol . The protocol can be used for creating, modifying and terminating two-party or multiparty sessions...
or MGCP. - Vulnerability: IAX2 is vulnerable to Resource Exhaustion DoS 0days that are currently available to the public. There are currently no solutions to these issues. The current best practices include limiting UDP port access to specific trusted IP addresses. Internet facing IAX2 ports are considered vulnerable and should be monitored closely. The fuzzer used to detect these application vulnerabilities was posted on milw0rm and is included in the VoIPer svn tree. These issues were briefly mentioned in the IAX RFC #5456 on page 94.
This flaw no longer exists in up-to-date installations of Asterisk and other PBXes.
External links
- "IAX: Inter-Asterisk eXchange Version 2" protocol specification
- "Inter-Asterisk Exchange (IAX): Deployment Scenarios in SIP-Enabled Networks" A book which describes the IAX protocol and its associated objects and operations in order to offer conversational services. Issues related to NAT traversal, support of IPv6, IPv4-IPv6 interworking, deployment in P2P context, etc.
- IANA Registration for IAX Enumservice
- Firewall Rules for IAX2 and SIP (voip-info.org)