[OpenSIPS-Users] How to reach failure_route if remote end doesn't reply on INVITEs

Brett Nemeroff brett at nemeroff.com
Thu Jul 13 14:09:10 UTC 2023


Simon,
What you are describing is the default behavior. For "fast failover" you'll
need to adjust the fr_timeout parameter. If you read the tm module
documentation (which I included for you below) , I believe you'll see that
it describes how to do exactly what are you doing. I don't think you
actually want to use DLG_timeout for your purposes; however, it might work
fine given that you reset it after the call is answered.

See the full docs for the tm module for your version here:
https://opensips.org/html/docs/modules/2.1.x/tm.html#fr_timeout

And for your convenience, I've cut and pasted the relevant sections from
the link above:

-----%<-----
1.1.2. Timeout-Based Failover

Timeouts can be used to trigger failover behavior. E.g. if we send a call
to a gateway and the gateway does not send a provisional response within 3
seconds, we want to cancel this call and send the call to another gateway.
Another example is to ring a SIP client only for 30 seconds and then
redirect the call to the voicemail.

The transaction module exports two types of timeouts:

   -

   *fr_timeout* - used when no response was received yet. If there is no
   response after *fr_timeout* seconds, the timer triggers (and failure
   route will be executed if t_on_failure() was called). For INVITE
   transactions, if a provisional response was received, the timeout is reset
   to *fr_inv_timeout* seconds and RT_T2 for all other transactions. Once a
   final response is received, the transaction has finished.
   -

   *fr_inv_timeout* - this timeout starts counting down once a provisional
   response was received for an INVITE transaction.

For example: You want to have failover if there is no provisional response
after 3 seconds, but you want to ring for 60 seconds. Thus, set the
*fr_timeout* to 3 and *fr_inv_timeout* to 60.

-----%<-----


Please let us know if you need anything else
-Brett



On Thu, Jul 13, 2023 at 8:39 AM Simon Gajski via Users <
users at lists.opensips.org> wrote:

> Thank you
> it works as expected
>
> BR
> Simon
> M S je 13.07.2023 ob 11:27 napisal:
>
> You can set DLG_timeout to 2sec for failure route to work, then also look
> for ACK in main route to set DLG_timeout to 3600 (for example) if the call
> was answered.
>
> On Thu, Jul 13, 2023 at 10:28 AM Simon Gajski via Users <
> users at lists.opensips.org> wrote:
>
>> Hi
>>
>> I am running opensips 2.1.1 and have a question regarding accessing
>> failure_route.
>>
>>
>> In case I send INVITE to some destination where I receive 3xx, 4xx or
>> 5xx reply, call goes to failure_route and uses next gw from there.
>> Everything fine so far.
>> But in some cases it hapens that opensips sends INVITE to a destination
>> from where there is no reply.
>> In this case opensips repeatedly sends INVITEs to that destination and
>> doesn't do failover to failure_route.
>>
>> I played so far with $DLG_timeout variable, set to 2 sec.
>> In this case opensips does failover to failure_route after 2 sec,
>> however established call via next gw is also terminated after 2 sec.
>>
>>
>> Is there another way to reach failure_route if remote end doesn't replay
>> in expected time?
>>
>> BR
>> Simon
>>
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20230713/207be5b1/attachment-0001.html>


More information about the Users mailing list