Sponsor: VoiceMeUp - Corporate & Wholesale VoIP Services

VoIP Mailing List Archives
Mailing list archives for the VoIP community
 SearchSearch 

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


 
Post new topic   Reply to topic    VoIP Mailing List Archives Forum Index -> freeSWITCH Users
View previous topic :: View next topic  
Author Message
d_hound at ymail.com
Guest





PostPosted: Thu Nov 05, 2009 2:52 am    Post subject: [Freeswitch-users] problem with failover routes for LCR A-Z Reply with quote

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 Smile


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@10.10.10.1 |
| 44 | carr2 | 0.01 | G711 | | [lcr_carrier=carr2,lcr_rate=1.00000,absolute_codec_string=G729]sofia/external/447965404547@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@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org
Back to top
rupa at rupa.com
Guest





PostPosted: Thu Nov 05, 2009 8:30 am    Post subject: [Freeswitch-users] problem with failover routes for LCR A-Z Reply with quote

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@ymail.com> wrote:
Quote:
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 Smile


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@10.10.10.1 |
 | 44          | carr2   | 0.01     | G711  |            | [lcr_carrier=carr2,lcr_rate=1.00000,absolute_codec_string=G729]sofia/external/447965404547@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@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

_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org
Back to top
rupa at rupa.com
Guest





PostPosted: Thu Nov 05, 2009 8:39 am    Post subject: [Freeswitch-users] problem with failover routes for LCR A-Z Reply with quote

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@rupa.com> wrote:
Quote:
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@ymail.com> wrote:
Quote:
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 Smile


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@10.10.10.1 |
 | 44          | carr2   | 0.01     | G711  |            | [lcr_carrier=carr2,lcr_rate=1.00000,absolute_codec_string=G729]sofia/external/447965404547@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@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@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org
Back to top
d_hound at ymail.com
Guest





PostPosted: Thu Nov 05, 2009 11:07 am    Post subject: [Freeswitch-users] problem with failover routes for LCR A-Z Reply with quote

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@rupa.com>
To: freeswitch-users@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@rupa.com> wrote:
Quote:
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@ymail.com> wrote:
Quote:
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 Smile


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@10.10.10.1 |
| 44 | carr2 | 0.01 | G711 | | [lcr_carrier=carr2,lcr_rate=1.00000,absolute_codec_string=G729]sofia/external/447965404547@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@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@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org






_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org
Back to top
rupa at rupa.com
Guest





PostPosted: Thu Nov 05, 2009 11:17 am    Post subject: [Freeswitch-users] problem with failover routes for LCR A-Z Reply with quote

On Thu, Nov 5, 2009 at 9:46 AM, Hound Dog <d_hound@ymail.com> wrote:
Quote:
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

Cool, if you have issues let me know. We can work through 'em.

Quote:
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

custom sql really is a powerful feature. It does require a bit of
thinking, but since it can use any channel variable it is very
flexible.

Quote:


thank you v much
Ori




----- Original Message ----
From: Rupa Schomaker <rupa@rupa.com>
To: freeswitch-users@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@rupa.com> wrote:
Quote:
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@ymail.com> wrote:
Quote:
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 Smile


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@10.10.10.1 |
 | 44          | carr2   | 0.01     | G711  |            | [lcr_carrier=carr2,lcr_rate=1.00000,absolute_codec_string=G729]sofia/external/447965404547@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@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@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org






_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@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

_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org
Back to top
Display posts from previous:   
Post new topic   Reply to topic    VoIP Mailing List Archives Forum Index -> freeSWITCH Users All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group

VoiceMeUp - Corporate & Wholesale VoIP Services