Asterisk IAX channels


New in Asterisk v1.2.0: The naming convention for IAX channels has changed in a minor way such that the call number follows a "-" rather than a "/" character.

As of january 2004, IAX is now the same as IAX2. The old version is now labeled IAX1. For backwards
compability, the source for IAX1 is still in the source tree and compilation can be enabled in the Makefile.

For more information on the protocol, see IAX2.
IAXtel from Dec. 2003 only supports IAX2.


IAX2 can be used to

Channels are configured in iax.conf and used in extensions.conf

Channel Naming

The format of an IAX channel name used for an outgoing connection is:

IAX/[<user>[:<secret>]@]<peer>[:<portno>][/<exten>[@<context>][/<options>]]

  • <user>: UserID on remote peer, or name of client configured in iax.conf (optional)
  • <secret>: Password (optional). Alternatively it can be the filename of an RSA key, without the trailing extension (.key or .pub), and enclosed in [square brackets], like this: [thefilename]
  • <peer>: Name of server to connect to
  • <portno>: Port number for connection on server (optional)
  • <exten>: Extension in the remote Asterisk server (optional)
  • <context>: Context to use in the remote Asteriskserver (optional)
  • <options>: The only option available is 'a' meaning 'request autoanswer'

Example outgoing channel names:
  • IAX/mark:asdf@myserver/6275@default — Call to "myserver" using "mark" as username and "asdf" as password, and requesting extension 6275 in default context
  • IAX/iaxphone/s/a — Call to "iaxphone" requesting immediate answer.
  • IAX/guest@misery.digium.com — Call Digium
  • IAX/john:[johnrsa]@somewhere.com — Call to somewhere.com, using "john" as a username and an RSA key for authentication.

The format of an IAX channel name used for an incoming connection is simply:

IAX[[<username>@]<host>]/<callno>

  • <username>: the username, if known
  • <host>: the apparent host connecting
  • <callno>: the local call number

Example incoming channel names:
  • IAX[mark@192.168.0.1]/14 — Call number 14 from user "mark" at 192.168.0.1
  • IAX[192.168.10.1]/13 — Call 13 from 192.168.10.1

Trunking

IAX Trunking needs support of a hardware timer. See Asterisk timer for more information.
IAX Trunking allows multiple voice streams to share a single "trunk" to another server, reducing overhead created by IP packets. Basically after 4 concurrent calls you start seeing a per packet savings when trunking is enabled.

Use experience (early 2005): "A long time ago i tried to make one big iax2 trunk for one of my customers, i soon changed this to several small trunks. (bandwith doesnt rise all that much if you use 2 trunks instead of 1.) Asterisk didnt seem to like my big trunk very much (i don't remember how big it was, but probably over 100 calls). I think, but am not sure, that with a lot of calls inside the trunk, some calls seemed to go suddenly go outside of the trunk in one or more directions, bursts of error messages appeared on the cli etc." The user settled for ~60 calls/trunk and had that working fine.

i didnt investigate it a lot more, my problems went away with splitting them up in smaller trunks.

Jitter buffer


There is a new jitter buffer implementation in Asterisk 1.2. This new jitter buffer has a feature that enables trunk time stamps to be sent within the trunked stream. This enables the use of the jitter buffer with a trunked IAX2 connection (previously impossible). However, enabling trunk time stamps in a trunk connection to an older version of asterisk causes problems including one-way audio. See The New Jitter Buffer in Asterisk by Steve Kann for more info.

DTMF issues: The IAX jitterbuffer is known to cause DTMF recognition troubles (1.2, 1.4), so set jitterbuffer=no if you experience trouble.

Jitter buffer debugging

In order to obtain information on the current state of the jitter buffer, enter on the console:
iax2 set debug jb
or
iax2 set debug jb off
to disable jb debugging. Whenever frames are leaving the jitter buffer, a letter is printed (letter: event, action):

G: growing jitter buffer, interpolating last frame
o: not a voice frame, forwarding it to the decoder
v: early or late voice frame, forwarding it to the decoder
V: voice frame, forwarding it to the decoder
l: late voice frame, too late to play so it's dropped
L: lost frame, interpolating last frame
s: shrinking jb, frame lost
S: shrinking jb, no frame lost

See also




New in Asterisk v1.2.0: The naming convention for IAX channels has changed in a minor way such that the call number follows a "-" rather than a "/" character.

As of january 2004, IAX is now the same as IAX2. The old version is now labeled IAX1. For backwards
compability, the source for IAX1 is still in the source tree and compilation can be enabled in the Makefile.

For more information on the protocol, see IAX2.
IAXtel from Dec. 2003 only supports IAX2.


IAX2 can be used to

Channels are configured in iax.conf and used in extensions.conf

Channel Naming

The format of an IAX channel name used for an outgoing connection is:

IAX/[<user>[:<secret>]@]<peer>[:<portno>][/<exten>[@<context>][/<options>]]

  • <user>: UserID on remote peer, or name of client configured in iax.conf (optional)
  • <secret>: Password (optional). Alternatively it can be the filename of an RSA key, without the trailing extension (.key or .pub), and enclosed in [square brackets], like this: [thefilename]
  • <peer>: Name of server to connect to
  • <portno>: Port number for connection on server (optional)
  • <exten>: Extension in the remote Asterisk server (optional)
  • <context>: Context to use in the remote Asteriskserver (optional)
  • <options>: The only option available is 'a' meaning 'request autoanswer'

Example outgoing channel names:
  • IAX/mark:asdf@myserver/6275@default — Call to "myserver" using "mark" as username and "asdf" as password, and requesting extension 6275 in default context
  • IAX/iaxphone/s/a — Call to "iaxphone" requesting immediate answer.
  • IAX/guest@misery.digium.com — Call Digium
  • IAX/john:[johnrsa]@somewhere.com — Call to somewhere.com, using "john" as a username and an RSA key for authentication.

The format of an IAX channel name used for an incoming connection is simply:

IAX[[<username>@]<host>]/<callno>

  • <username>: the username, if known
  • <host>: the apparent host connecting
  • <callno>: the local call number

Example incoming channel names:
  • IAX[mark@192.168.0.1]/14 — Call number 14 from user "mark" at 192.168.0.1
  • IAX[192.168.10.1]/13 — Call 13 from 192.168.10.1

Trunking

IAX Trunking needs support of a hardware timer. See Asterisk timer for more information.
IAX Trunking allows multiple voice streams to share a single "trunk" to another server, reducing overhead created by IP packets. Basically after 4 concurrent calls you start seeing a per packet savings when trunking is enabled.

Use experience (early 2005): "A long time ago i tried to make one big iax2 trunk for one of my customers, i soon changed this to several small trunks. (bandwith doesnt rise all that much if you use 2 trunks instead of 1.) Asterisk didnt seem to like my big trunk very much (i don't remember how big it was, but probably over 100 calls). I think, but am not sure, that with a lot of calls inside the trunk, some calls seemed to go suddenly go outside of the trunk in one or more directions, bursts of error messages appeared on the cli etc." The user settled for ~60 calls/trunk and had that working fine.

i didnt investigate it a lot more, my problems went away with splitting them up in smaller trunks.

Jitter buffer


There is a new jitter buffer implementation in Asterisk 1.2. This new jitter buffer has a feature that enables trunk time stamps to be sent within the trunked stream. This enables the use of the jitter buffer with a trunked IAX2 connection (previously impossible). However, enabling trunk time stamps in a trunk connection to an older version of asterisk causes problems including one-way audio. See The New Jitter Buffer in Asterisk by Steve Kann for more info.

DTMF issues: The IAX jitterbuffer is known to cause DTMF recognition troubles (1.2, 1.4), so set jitterbuffer=no if you experience trouble.

Jitter buffer debugging

In order to obtain information on the current state of the jitter buffer, enter on the console:
iax2 set debug jb
or
iax2 set debug jb off
to disable jb debugging. Whenever frames are leaving the jitter buffer, a letter is printed (letter: event, action):

G: growing jitter buffer, interpolating last frame
o: not a voice frame, forwarding it to the decoder
v: early or late voice frame, forwarding it to the decoder
V: voice frame, forwarding it to the decoder
l: late voice frame, too late to play so it's dropped
L: lost frame, interpolating last frame
s: shrinking jb, frame lost
S: shrinking jb, no frame lost

See also



Created by: oej, Last modification: Fri 04 of Feb, 2011 (11:06 UTC) by dyer
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+