Hi Jeff,
Jeff Pyle wrote:
> This goes way back. Bogdan addressed it last year sometime, citing a reason
> why ACK processing is slower than other processing. And, since the two
> messages hit different children of Opensips, the ACK hits the exit gate after
> the reINVITE, even though the ACK arrived first. I've seen it with
> Broadworks and Asterisk.
>
> There were a number of solutions posted although none of them worked for me.
> My workaround is to call a perl script to sleep for 100ms if the message is
> not an ACK. That allows the ACK time to get through.
For this solution, you can use the usleep function provided by opensips :
http://www.opensips.org/html/docs/modules/1.6.x/cfgutils.html#id228403
And you can optimize this a bit by doing sleep only for the non-ACK
sequential requests - check based on totag.
Also , if you were using dialog support, you can check the dialog state,
and if there is an re-INVITE for a dialog still in "confirmed but not
acked" state, do the sleep, otherwise, let it go through.
> I would certainly love a "real" solution, that is, speeding up the ACK or
> some other mechanism to enforce the sequence.
>
The problem is that opensips tries to do something more than it should -
it tries to match (as transactions) the ACK for 200 OK against the
INVITE - this is bogus (the the 200 OK ACK and INVITE are separate
transactions) and the algorithm is very slow and costly - normally this
is dialog matching and not transaction matching.
I would love to disable that part (and be fully RFC compliant), but this
will alter some of the current behaviour, like :
- ACC module is using TM to get the 200OK ACK - not sure how many
people are using it.
- OSP module is using that also, so sure for what purposes.
Regards,
Bogdan
>
> - Jeff
>
> On Apr 1, 2010, at 3:47 PM, Brett Nemeroff wrote:
>
>
>> Hello All,
>> I'm working with a Broadsoft which is setup to send outbound calls to
>> OpenSIPs. The Broadsoft extension is set to ring simultaneously
>> multiple extensions. One which hits the proxy and the other is
>> internal on the broadsoft.
>>
>> What I'm seeing is an outbound call from broadsoft to the proxy to the
>> provider (normal)
>> the provider answers and replies with a 200 OK, forwarded onto
>> broadsoft, without problem.
>>
>> However, then I immediately get a ACK / INVITE FROM the broadsoft in
>> reply to the 200 OK. That seems ok, but when it goes to the provider
>> the ORDER is switched and it forwards the INVITE first THEN the ACK.
>>
>> I'm not sure if that matters, but the provider is replying with a 400
>> Bad Request. Which may be because I'm trying to reinvite a call which
>> hasn't been ACKd yet?
>>
>> Any ideas here? why would the order change? And could this potentially
>> cause call setup issues?
>>
>> Thanks,
>> Brett
>>
>> _______________________________________________
>> Users mailing list
>> [email protected]
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>
>
> _______________________________________________
> Users mailing list
> [email protected]
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
--
Bogdan-Andrei Iancu
www.voice-system.ro
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users