[asterisk-users] Calls hang up after 20 seconds
SIP
sip at arcdiv.com
Mon Oct 19 07:32:36 CDT 2009
Kevin P. Fleming wrote:
> SIP wrote:
>
>
>> In an ideal world, when Asterisk sent an ACK, whatever server/client it
>> was connected to would respond accordingly. It is, however, not an ideal
>> world, so this doesn't always happen.
>>
>
> This is not correct; there are no responses to SIP ACK messages. In
> addition. ACK messages are *required* for proper SIP operation; lack of
> an ACK to a response from Asterisk absolutely requires that Asterisk
> assume that either the response was never delivered to the requester, or
> that that requester has stopped responding. In either case, the SIP
> dialog/transaction in question must be terminated, because it is no
> longer in a determinate state.
>
> If the SIP network does not route ACK responses properly, it is broken.
>
>
And yet, again, many clients send no ACKs at all. Asterisk assumes
they're not connected, and disconnects them. Even after the conversation
is going nicely. ACK is required for INVITE requests (ONLY) that have
route header fields. Otherwise, you rely somewhat heavily on loose
routing of the ACK messages, which can result in any manner of fun loops
dependent on the proxies in the mix and what sort of routes they may be
tacking on.
ACK was intended as a reliable method of determining whether or not a
conversation has been well and truly established. But in reality, it is
one of the less reliable methods.
Add in PRACK to the mix (which increments the CSeq), and you can even
get some fun race conditions which cause a search for matching ACK/CSeq
pairs to fail on some servers (I'm not saying Asterisk does this, I'm
just saying it does happen -- I've no idea how Asterisk handles PRACKs).
Those servers may not proxy the ACK back to the final destination,
assuming that the ACK is no longer an hop by hop but and end to end ACK
dependent on how the CSeq matches up.
N.
More information about the asterisk-users
mailing list