[asterisk-dev] 'IAX2 call variable passing between servers '

John Todd jtodd at loligo.com
Fri Aug 4 10:46:14 MST 2006


At 11:39 AM -0400 8/4/06, Andrew Kohlsmith wrote:
>On Friday 04 August 2006 10:34, Jared Smith wrote:
>>  No, what's comical is your insistence that IAX2 was designed to pass
>>  variables between servers.  IAX2 was designed to pass *calls* between
>>  Asterisk servers, not arbitrary variables.
>
>I disagree.  I have read several places and the code has provision for passing
>arbitrary data, not just voice (and video).  It doesn't do all these things
>*yet*, but I think it's very shortsighted to say that IAX2 was designed to
>pass *calls* and calls *only*, especially when the IEs are in place.  Check
>iax2-parser.c for more information.
>
>In fact, there are IEs for passing RDNIS, TON, and a host of other data that
>Mr. Garstang is saying should be passed.  The code agrees with him, at least
>in spirit.  Perhaps it's not IMPLEMENTED yet, but it's certainly not outside
>of the scope of the protocol.
>
>>  Who has the expectation that IAX2 should pass variables?  I think most
>
>I do.  It is important to be able to pass call information around in addition
>to audio and control frames.  The IAX2 jitter buffer already does this, and
>it only makes sense to keep (or at least allow) arbitrary data to be able to
>be passed.  I really like Tilghman's conceptual patch and hope to improve
>upon it and help test it out.
>
>In fact, the ability to pass URLs back and forth is (was?) in the code; IAX2
>isn't just for passing calls around.  It's arguable how MUCH call information
>should be passed around, but the concept of passing data relating to the call
>in progress is arguably as important to pass as the audio frames themselves!
>
[snip]

I would tend to agree with Andrew's summary.

I think a few things are clear to me:

  1) Some number of people would like to transfer variables within IAX2
       call setup streams, and think that it would be extremely convenient
       and functional for them to do so between their own machines, or
       between their own machines and other's machines.  This is not a
       whim or a request for something that is considered lightly; there
       are significant scale problems that can be solved with such a
       variable transfer which would otherwise require a completely
       separate out-of-band method of data transfer, a method which
       seems to be needlessly complex when the protocol could so
       easily provide a more reasonable implementation for minor scale
       data transmission.

  2) There are security issues with transferring values within IAX2, and
       it should be required to actively extract values from an IAX2 setup
       session instead of having values "magically" appear.

  3) Existing IAX2 protocol features already transfer a limited set of values
       such as URLs.  Extending this set seems to not be difficult, and not
       against any protocol specification nor in contradiction to any
       earlier code implemented within Asterisk.

  4) Tilghman has graciously created a patch that seems to address #1
       in a way that is compatible with #2, and it can be found
       on the bugtracker: http://bugs.digium.com/view.php?id=7619

  5) Those who fit the profile of people described in #1 above should test
       the patch in #4 above, and should restrict their comments and
       requests to the patch notes.

  6) Implementing variable transfer within IAX2 does not seem to be on first
       impression to be something that will harm or otherwise inconvenience
       those who do not choose to use it.  Therefore, unless doubts can be
       expressed in clear and convincing terms otherwise, it seems that there
       would be no reason to NOT implement such a method in TRUNK if it
       passes testing.

JT



More information about the asterisk-dev mailing list