[OpenSIPS-Users] [NEW] Dynamic Routing enhancements in OpenSIPS 1.8.0

Vlad Paiu vladpaiu at opensips.org
Thu Mar 29 10:28:40 CEST 2012


Hello,

The latest dynamic routing improvements allow to distribute the load on 
multiple gw's within a carrier, based on weights.
So for example you can define a new carrier, c1, that has two gateways, 
g1 and g2, like this
     c1 = g1=50,g2=50
and then, for a specific prefix rule, set c1 in the gw list and the load 
will be distributed evenly between the two gateways.

You might want to read again Bogdan's initial email, in order to get a 
better grasp of the newly available features.


Regards,

Vlad Paiu
OpenSIPS Developer
http://www.opensips-solutions.com


On 03/29/2012 10:26 AM, [Digital^Dude] ® wrote:
> If I set DR to route based on all dialed prefixes, can I achieve load 
> balanced setup with failover? If yes, how do I configure them? I have 
> been able to configure them individually, but how to made these two 
> modules work together?
>
> On Wed, Mar 28, 2012 at 2:31 PM, Bogdan-Andrei Iancu 
> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>
>     Hi Ali,
>
>     Both modules are routing engines - the DR module routes based on
>     dialled prefix, while the LB routes based on the load of the
>     destinations (active calls).
>
>     Regards,
>     Bogdan
>
>
>     On 03/27/2012 07:36 PM, Ali Pey wrote:
>>
>>     What are the differences between the Dynamic Routing and
>>     Load-Balancer Modules?
>>
>>     They seem very similar except that we don't have rules in
>>     Load-Balancer Module. Can DR module be used as a load-balancer?
>>     Is it possible to have the features of both modules together? A
>>     load-balancer with rules?
>>
>>
>>     Regards,
>>     Ali
>>
>>
>>
>>     On Fri, Mar 23, 2012 at 9:11 AM, Bogdan-Andrei Iancu
>>     <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>>
>>         Hi all
>>
>>         In OpenSIPS 1.8.0, the Dynamic Module comes with some major
>>         changes and enhancements :
>>
>>         Carrier concept added
>>         ----------------------
>>         Now you can group the GWs in carrier, so you can achieve a
>>         better control over the destinations. A carrier is a list of
>>         gws - for each carrier, you can define how the gws should be
>>         sort - based on the definition order, or based on weigths .
>>         Once again, this setting is per carrier. Also you can enabled
>>         / disable carriers (via MI) during runtime. The carrier has
>>         attached an attribute string that will be pushed to script
>>         when a gws from the carrier will be used.
>>
>>         When defining a routing rule, you can define a list of gws
>>         and carriers to be used (a mixed list). How the list from the
>>         rule is interpreted (order or weight), depends on a flag in
>>         do_routing() function.
>>
>>         Ex:
>>             gateways :  g1, g2, g3, g4, g5
>>             carriers :  c1 = g1=75,g2=25  (a premium carrier),
>>         ordering based on weight
>>                         c2 = g3,g4  (a standard carrier), ordering
>>         based on given order
>>             rules:   prefix= 004021 ; list = #c1,#c2,g5  - first we
>>         will try do distribute 75/25 the traffic
>>                           between the gws from carrier c1 and if all
>>         fail, we will try gws from carrier c2
>>                           (according the ordering defined for c2),
>>         and so on
>>
>>                      prefix= 004072 ; list = #c2=50,g5=50  - all
>>         traffic will be weight balanced between carrier
>>                           c2 and gw g5; of course, if carrier c2 is
>>         to be used, the corresponding traffic will
>>                           routed over the c2 gateways according to
>>         its definition
>>
>>
>>         do_routing() enhancements
>>         --------------------------
>>         The do_routing() function takes several flags (as second
>>         optional parameter) to control the matching and ordering in
>>         the rules:
>>
>>             * /W/ - Instead of using the destination (from the rule
>>               definition) in the given order, sort them based on
>>               their weight.
>>             * /F/ - Enable rule fallback; normally the engine is
>>               using a single rule for routing a call; by setting this
>>               flag, the engine will fallback and use rules with less
>>               priority or shorter prefix when all the destination
>>               from the current rules failed.
>>             * /L/ - Do strict length matching over the prefix -
>>               actually DR engine will do full number matching and not
>>               prefix matching anymore.
>>
>>         Also, the function takes a new third optional parameter - a
>>         white list of gateways -> during the routing, only the
>>         gateways from this list will be considered valid (from the
>>         gws specified by the routing rules)
>>
>>
>>         Rule fallback
>>         --------------
>>         Before, the dr module was matching and using a single rule.
>>         Now, via the F flag, you can instruct the DR engine to
>>         fallback and use additional rules that match (with looser
>>         matching) the dialed prefix - like rules with same prefix but
>>         lower priority, rules with shorter prefix.
>>         The fallback is transparent done, via the use_next_gw() function.
>>
>>         Ex:
>>            prefix 004072, prio 10  => g1,g2
>>           prefix 004072, prio  1  => g3
>>            prefix 0040,   prio  1  => g4,g5
>>
>>            when dialing 00407221234567 and using fallback, the gws
>>         g1, g2 (first rule), g3 (second rule) and g4 , g5 (third
>>         rule) will be used.
>>
>>
>>         New routing functions
>>         ----------------------
>>         route_to_gw(gw_id) - function to trigger the direct routing
>>         to a given gateway. Attributes and per-gw preocessing will be
>>         available.
>>
>>         route_to_carrier(carrier_id) -f unction to trigger the direct
>>         routing to a given carrier. In this case the routing is not
>>         done prefix based, but carrier based (call will be sent to
>>         the GWs of that carrier, based on carrier policy)
>>
>>
>>
>>         For more, please see the online documentation for the DR module:
>>         www.opensips.org/html/docs/modules/1.8.x/drouting.html
>>         <http://www.opensips.org/html/docs/modules/1.8.x/drouting.html>
>>
>>
>>         Regards,
>>         Bogdan
>>
>>         -- 
>>         Bogdan-Andrei Iancu
>>         OpenSIPS Founder and Developer
>>         http://www.opensips-solutions.com
>>
>>
>>         _______________________________________________
>>         Users mailing list
>>         Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>>         http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>>
>>     _______________________________________________
>>     Users mailing list
>>     Users at lists.opensips.org  <mailto:Users at lists.opensips.org>
>>     http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
>     -- 
>     Bogdan-Andrei Iancu
>     OpenSIPS Founder and Developer
>     http://www.opensips-solutions.com
>
>
>     _______________________________________________
>     Users mailing list
>     Users at lists.opensips.org <mailto: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/20120329/5576f03b/attachment-0001.htm>


More information about the Users mailing list