[Home]

Summary:ASTERISK-18618: IAX2 needs to be converted to use bitmask lists for codec selections
Reporter:Nikos Patronas (celicas)Labels:
Date Opened:2011-09-25 10:01:55Date Closed:2015-02-25 17:17:35.000-0600
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Channels/chan_iax2
Versions:11 10.0.0-beta1 Frequency of
Occurrence
Constant
Related
Issues:
Environment:Centos 5.7Attachments:( 0) debug_error_iax_silk.log
( 1) debug_success_additional_codecs.log
( 2) debug_success_sip_silk.log
( 3) extensions.conf
( 4) iax.conf
( 5) sip.conf
Description:SipPhone --sip/alaw--> Ast10B1 --sip/silk--> Ast10B1 --...-- ===> SUCCESS
SipPhone --sip/alaw--> Ast10B1 --iax2/silk--> Ast10B1 --...-- ===> ERROR

When trying to trunk a call from a sip device to a 10.0.0 Beta1 server to another same server via sip, I can force to use silk (8,12,..) between the servers entering disallow=all \ allow=silk8 in the trunk context in sip.conf and the call is placed successfully.
When trying the same thing using iax2 channel between servers, the first server claims "Don't know any of (nothing) formats" and "Unable to create translator path for (nothing) to (alaw)" before hanging up. No debug output here because no iax call is attempted.
As soon as I add eg. alaw to the allow parameter (allow=silk8,silk12,alaw) the connection establishes using alaw of course. Then the debugger indicates
CODEC_PREFS     : (alaw|silk8|silk12|ulaw)
FORMAT          : 8
FORMAT2         : alaw
CAPABILITY      : 8
CAPABILITY2     : alaw
(yes, without declaring ulaw!)

I attach the configuration and debugger output files. In case I change the "iax2" word in "Dial" function (extensions.conf) with "sip" the call is placed normally using silk through sip
Comments:By: Nikos Patronas (celicas) 2011-09-25 10:33:21.019-0500

All files come from the first server.
codecs.conf is the default.
SIP log starts with communication with the ip phone (10.0.20.12) and then calls the 2nd server (192.168.88.105)

By: Tilghman Lesher (tilghman) 2011-09-25 11:11:35.384-0500

The issue is that when the codecs were changed from a bitmask to the method that doesn't have such a low limit on the number of codecs, the decision was made not to convert IAX2 to that new method, nor to allocate element types to carry that information.  Therefore, IAX2 will not support any codecs beyond those supported in 1.8 in 10.

This is likely not a solvable issue in this release cycle.

By: Leif Madsen (lmadsen) 2011-09-26 09:25:48.688-0500

Acknowledging this issue because this is probably something we need to resolve for Asterisk 11. Also might be worth it to document this type of thing in the iax.conf.sample file as well so people are aware of the codec limitations with IAX2 in Asterisk 10.

By: Matt Jordan (mjordan) 2015-02-25 17:17:28.654-0600

This actually can't be solved.

The IAX2 protocol defines in its RFC the allowed media formats:

https://tools.ietf.org/html/rfc5456#section-8.7

SILK is not included. As such, any IAX2 session that is attempted with a media format capability not listed in that section will fail. Changing that would require a modification to the RFC, which is highly unlikely to ever occur.