[Freeswitch-users] problem with failover routes for LCR A-Z scenario

Hound Dog d_hound at ymail.com
Thu Nov 5 07:46:28 PST 2009


thanks Rupa , 

its very creative

I saw the new feature of user rates on the trunk , but havent worked with it as im using 1.0.4 
will have a look and see if it can be used 


BTW - I already implemented anti-loop on the LCR with custom-sql , adding the incoming carrier-id to a variable on the incoming dial plan and filtering the LCR carriers not to include same carrier , solved some issues for me when carriers send me traffic that they actually supply

will document and send it to you soon


thank you v much 
Ori




----- Original Message ----
From: Rupa Schomaker <rupa at rupa.com>
To: freeswitch-users at lists.freeswitch.org
Sent: Thu, November 5, 2009 1:31:00 PM
Subject: Re: [Freeswitch-users] problem with failover routes for LCR A-Z scenario

Actually, using custom sql, you can implement the filter yourself in
the where clause.  No need for code changes.

On Thu, Nov 5, 2009 at 7:17 AM, Rupa Schomaker <rupa at rupa.com> wrote:
> Now that user rates are supported in mod_lcr, how about an option that
> says to drop the route if the user_rate is < rate ?
>
> This 1) requires you to use custom sql and 2) be able to represent
> your user rates in that sql (join to user rate table perhaps?)
>
> On Thu, Nov 5, 2009 at 1:44 AM, Hound Dog <d_hound at ymail.com> wrote:
>> I have a general question regrading MOD_LCR and the way it chooses main and failover routes ( backups )
>>
>> it came out a little long , sorry for that :)
>>
>>
>> I found that it difficult/impossible to make LCR use only carriers that I choose
>>
>> scenario is as follows , taking the UK as example for a destination  ( prices are not real , just an example )
>>
>> I have 2 carriers offering routes to the UK , landline and mobile
>>
>> my buying prices
>>
>> Destination       carrier1 Price    carrier2 price
>> 44  (all UK)      $0.01             $0.01
>> 447 (UK mobile)   $0.15             $0.19
>>
>> my selling prices
>>
>> Destination         price
>> 44  (all UK)        $0.015
>> 447 (UKmobile)      $0.17
>>
>> so for UK landline both carrier 1 and carrier 2 are good for me , so I use them and be profitable
>>
>> for UK mobile I can ** only ** make a profit if I use carrier 1   ( if I use carrier2 I actually lose money on every calls since I sell the call for 17 cents but buy for 19 cents so I LOSE 2 cents a minute)
>>
>>
>> translating it to MOD_LCR information
>>
>> digits     rate        carrier_id       ( other columns ignored )
>> 44         0.01        1
>> 44         0.01        2
>> 447        0.015       1
>>
>> this looks good :
>>     44 prefix will be shared between carrier 1 and 2
>>     447 prefix will only go to carreir 1
>>
>> so it fits perfectly - BUT
>>
>> testing this I get -
>>
>> API CALL [lcr(447965404547)] output:
>>  | Digit Match | Carrier | Rate     | Codec | CID Regexp | Dialstring |
>>  | 447         | carr1   | 0.15     | G711  |            | [lcr_carrier=carr1,lcr_rate=1.00000,absolute_codec_string=G729]sofia/external/447965404547 at 10.10.10.1 |
>>  | 44          | carr2   | 0.01     | G711  |            | [lcr_carrier=carr2,lcr_rate=1.00000,absolute_codec_string=G729]sofia/external/447965404547 at 10.10.10.2 |
>>
>> Notice the lcr engine is using carrier2 to route the call as backup for carrier1 , because it has coverage of that range ( 44 covers 447xxxx )  - it all makes sense
>>
>>
>> ** BUT ** carrier2 should not be used for 447 range , I will lose money on each call I send there , and I actually prefer calls to fail
>>
>>
>> so far I didnt find a solution for that , so if there is one I love bo pointed there
>>
>>
>>
>>
>>
>>
>> I did think it over a little and came up with 2 options that could be used ,
>>  and I am also planning to code them and propose patch to maintainers ,
>>  I would love to get comments on those ( in case there are no existing solution )
>>
>>
>> option 1 - setting some routes as last option , add another param to the LCR table called  last_route ,
>>  when hitting a route with last_route=1,  stop processing additional routes and return your routing decision so far
>>  so in our case the route entry with 44 to carrier1 will have last_route=1  , the other 44 routes will have last_route=0 to allow for failover
>>
>> option 2 - don't allow shorter prefixes , once a prefix match was found with a N digits length , do not accept less digits prefix matches.
>> in other words dont failover from a finer route to a wider route.
>> it will need to be a global option and I will be quite simple to use,
>>  but will require entering mutiple entries of the same length prefix for each carrier you would like to use
>>  its intutive and relatively simple to manage , but requires more lcr entries to get you where you want
>>
>>
>>
>>
>>
>> _______________________________________________
>> FreeSWITCH-users mailing list
>> FreeSWITCH-users at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> http://www.freeswitch.org
>>
>
>
>
> --
> -Rupa
>



-- 
-Rupa

_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users at lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org



      





More information about the FreeSWITCH-users mailing list