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
>> Users@lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>     
>
>
> _______________________________________________
> Users mailing list
> Users@lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>   


-- 
Bogdan-Andrei Iancu
www.voice-system.ro


_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to