[SR-Users] Question about LCR

Daniel-Constantin Mierla miconda at gmail.com
Wed Mar 9 01:19:56 CET 2011


Hello,

I am not an extensive user of lcr module, but probably next_gw() adds a
branch each time is called in failure route.

If yes (when true you should see some parallel forking, depending o how the
addresses are selected), you can mark the "bad" branches with a branch flag
and drop them in a branch_route.

        while(next_gw()){
            if($var(gw_flag) != $avp(i:712)){
                xlog("L_INFO","Found an LCR destination which is different
than current, routing. ($ci)");
                t_on_reply("1");
                t_on_failure("1");
                t_on_branch("1");
                t_relay();
                exit;
            }else{
                xlog("L_INFO","The next destination in LCR has the same AVP
flag, skipping. ($ci)");
                setbflag(10);
            }
        }


branch_route[1] {
   if(isbflagset(10))
       drop;
}

However, if the destinations are selected like provider 1, provider 2,
provider 1, provider 2, the condition you have in config file failure route
is not good, since you check for change of the provider in each step, which
happens in this case. Maybe you can use flags to check if a provider was
used (or avps).

Cheers,
Daniel

On Tue, Mar 8, 2011 at 11:35 PM, Geoffrey Mina <geoffreymina at gmail.com>wrote:

> Hello,
> I have a question about LCR which I have been unable to solve.  I have 4
> upstream carrier gateways owned by 2 carriers.  Each carrier provides a
> primary and secondary gateway for load balancing purposes.  On a 5XX error I
> am trying to send the same call to the other carrier.  If both carriers
> reject the call with 5XX, I allow the response to go downstream to my
> asterisk server.  The issue I am running into is that in a scenario where
> both my carriers respond with a 5XX, I end up presenting the same call to
> all 4 gateways.  I would like to present the call to one gateway on each
> carrier and not try the same carriers second gateway for the same call.
> Here is what is happening now:
>
> ASTERISK --> INVITE --> KAMAILIO
> INVITE --> CARRIER A/GATEWAY 1 <-- 5XX Error
> INVITE --> CARRIER A/GATEWAY 2 <-- 5XX Error
> INVITE --> CARRIER B/GATEWAY 1 <-- 5XX Error
> INVITE --> CARRIER B/GATEWAY 2 <-- 5XX Error
> KAMAILIO --> 5XX Error --> ASTERISK
>
> OR any combination of the above... i.e.
>
> ASTERISK --> INVITE --> KAMAILIO
> INVITE --> CARRIER A/GATEWAY 1 <-- 5XX Error
> INVITE --> CARRIER B/GATEWAY 2 <-- 5XX Error
> INVITE --> CARRIER B/GATEWAY 1 <-- 5XX Error
> INVITE --> CARRIER A/GATEWAY 2 <-- 5XX Error
> KAMAILIO --> 5XX Error --> ASTERISK
>
>
> What I want to happen is:
>
> ASTERISK --> INVITE --> KAMAILIO
> INVITE --> CARRIER A/GATEWAY 1 or 2 <-- 5XX Error
> INVITE --> CARRIER B/GATEWAY 1 or 2 <-- 5XX Error
> KAMAILIO --> 5XX Error --> ASTERISK
>
> I tried dealing with the issue using some flags on the gateway, but i
> couldn't get the logic to work properly.  Here is the path I was heading
> down, but my plan fell apart after some testing.
>
> CARRIER A has a gateway flag of "1"
> CARRIER B has a gateway flag of "2"
>
> failure_route[1]{
>        $var(gw_flag) = $avp(i:712);
>
>         while(next_gw()){
>             if($var(gw_flag) != $avp(i:712)){
>                 xlog("L_INFO","Found an LCR destination which is different
> than current, routing. ($ci)");
>                 t_on_reply("1");
>                 t_on_failure("1");
>                 t_relay();
>                 exit;
>             }else{
>                 xlog("L_INFO","The next destination in LCR has the same AVP
> flag, skipping. ($ci)");
>             }
>         }
>
>         # let the reply go upstram - it is the default action
>         xlog("L_ERR", "No Next Gateway - M=$rm RURI=$ru F=$fu T=$tu IP=$si
> ID=$ci\n");
>         exit;
> }
>
>
> Any help would be greatly appreciated.
>
> Thanks,
> Geoff
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>


-- 
Daniel-Constantin Mierla
  http://www.asipto.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20110309/2ff0ddc9/attachment.htm>


More information about the sr-users mailing list