[Asterisk-Dev] IAX2 Transfer Message Sequence?

Steven Sokol ssokol at sokol-associates.com
Sun Jan 18 10:39:23 MST 2004


Yes!  Thank you very much.  This is exactly what I needed to see.

Thanks again!

Sokol

> -----Original Message-----
> From: asterisk-dev-admin at lists.digium.com [mailto:asterisk-dev-
> admin at lists.digium.com] On Behalf Of Mark Spencer
> Sent: Saturday, January 17, 2004 5:11 PM
> To: asterisk-dev at lists.digium.com
> Subject: Re: [Asterisk-Dev] IAX2 Transfer Message Sequence?
> 
> > > Can anyone summarize the sequence of messages that need to be
> > > sent/received in order to execute an IAX2 native transfer?
> > >  I just asked on IRC and was dutifully told "read the
> > > source". Duh.  I have read the source. And googled the
> > > archive.  The source tells me what all of the command are,
> > > and how Asterisk processes each of them.  It just doesn't
> > > tell me anything about the sequence that Asterisk is
> > > expecting in order to execute either a blind or a
> > > consultative transfer.
> 
> I would say that "read the iax2 debug" is perhaps a more helpful
mantra in
> this case than "read the source".
> 
> Essentially it works like this (a little simplified):
> 
> A -> B      "NEW"           (A sets up a call to B)
> A <- B      "ACK"           (B acknowledges)
>      B -> C "NEW"           (B sets up call to C)
>      B <- C "ACK"           (C acks)
>      B <- C "RINGING"       (C informs B of ringing if applicable)
> A <- B      "RINGING"       (B informs A of ringing if applicable)
>      B <- C "ANSWER"        (C informs B of answer condition)
> A <- B      "ANSWER"        (B informs A of answer condition)
> 
> At this point, there are two calls setup, one from A->B and one from
B->C.
> Audio is passing both directions via "B".  "B" then decides to
complete
> the transfer so that "A" and "C" talk directly:
> 
> A <- B      "TXREQ"         (B requests A test connectivity to C)
>      B -> C "TXREQ"         (B requests C test connectivity to A)
> A    ->   C "TXCNT"         (A attempts contact with C)
> A    <-   C "TXCNT"         (C attempts contact with A)
> A    <-   C "TXACC"         (C verifies connectivity with A)
> A    ->   C "TXACC"         (A verifies connectivity with C)
> 
> Note that if A can't see C or C can't see A, this the end...  audio
> continues to be bridged through B, and the user is none-the-wiser.
This
> keeps IAX transfer robust across even the penultimately worst routers
> (although the ulitimately worst routers crash when you try to send to
two
> different destinations from the same source).
> 
> A -> B      "TXREADY"       (A informs B that everything looks good)
>      B <- C "TXREADY"       (C informs B that everything looks good)
> A <- B      "TXREL"         (B releases A to talk to C)
>      B -> C "TXREL"         (B releases C to talk to A)
> 
> And at this point, the sequence numbers and jitter buffer timers are
> reset, and A and C now talk happily ever after until HANGUP do them
part.
> 
> Was that helpful?
> 
> Mark
> 
> _______________________________________________
> Asterisk-Dev mailing list
> Asterisk-Dev at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-dev
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev





More information about the asterisk-dev mailing list