[OpenSIPS-Users] DRouting Feature Request

Bogdan-Andrei Iancu bogdan at opensips.org
Thu Jul 24 11:24:24 CEST 2014


Hi,

Just tested the case , see below tables:

mysql> select * from dr_gateways;
+----+-------+------+----------------+-------+------------+-------+------------+-------+--------+-------------+
| id | gwid  | type | address        | strip | pri_prefix | attrs | 
probe_mode | state | socket | description |
+----+-------+------+----------------+-------+------------+-------+------------+-------+--------+-------------+
|  1 | one   |    0 | 127.0.0.1:5070 |     0 | NULL       | NULL  
|          0 |     0 | NULL   |             |
|  2 | two   |    0 | 127.0.0.1:5080 |     0 | NULL       | NULL  
|          0 |     0 | NULL   |             |
|  3 | three |    0 | 127.0.0.1:5090 |     0 | NULL       | NULL  
|          0 |     0 | NULL   |             |
+----+-------+------+----------------+-------+------------+-------+------------+-------+--------+-------------+
3 rows in set (0.00 sec)

mysql> select * from dr_carriers;
+----+-----------+---------------+-------+-------+-------+-------------+
| id | carrierid | gwlist        | flags | state | attrs | description |
+----+-----------+---------------+-------+-------+-------+-------------+
|  1 | cr1       | one=50,two=50 |     3 |     0 | |             |
+----+-----------+---------------+-------+-------+-------+-------------+
1 row in set (0.00 sec)

mysql> select * from dr_rules;
+--------+---------+--------+---------+----------+---------+------------+-------+-------------+
| ruleid | groupid | prefix | timerec | priority | routeid | gwlist     
| attrs | description |
+--------+---------+--------+---------+----------+---------+------------+-------+-------------+
|      1 | 1       |        |         |        0 | NULL    | #cr1,three 
| NULL  |             |
+--------+---------+--------+---------+----------+---------+------------+-------+-------------+
1 row in set (0.00 sec)



And it works, I get in log (for an xlog("GW IDs are      : 
$(avp(dr_gw)[*]) \n"); after do_routing("1") )  :

"GW IDs are      : two, three "
    or
"GW IDs are      : one, three "

Keep in mind is a probabilistic dispersion (not a rigorous round robin), 
so running 2-3 times may not be relevant. Do a larger set of tests (like 
10 or so).

Regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 23.07.2014 18:37, Kneeoh wrote:
> I thought that would work too. But if I put (dr_carriers table) gwlist:gw1=50,gw2=50 flags:3 it Always picks gw1. I want it to alternate between gw1 and gw2
>
> Ultimately I'm trying to do something like: dr_rules: gwlist: #cr1=50,#cr2=50 lets say it picks cr1, then go to the dr_carriers table where it will pick ONE of the carrier gateways based on weight, if that gateway fails or times out use the next carrier cr2, not the next gateway for cr1
>
>
> On Wednesday, July 23, 2014 10:07 AM, Bogdan-Andrei Iancu <bogdan at opensips.org> wrote:
> Hi,
>
> Actually you can combine the flags and use 0x03 - ordering by weights
> and use only first. Just give it a try.
>
> Regards,
>
> Bogdan-Andrei Iancu
> OpenSIPS Founder and Developer
> http://www.opensips-solutions.com
>
>
>
>
> On 23.07.2014 03:29, Kneeoh wrote:
>> It would be great if you could combine the binary Flags for dr_carrier routing:
>>
>> flags : 0x1 - use weight for sorting the list and not definition order; 0x2 - use only the first gateway from the carrier (depending on the sorting); 0x4 - disable the usage of this carrier
>>
>> such that where 1+2 = 3 the gateways are first sorted by weight then returns only the top result for each carrier. This would allow for equitable distribution between carrier gateways. This way gw1=100,gw2=100 would have a roughly equal chance of being picked (if enabled=true). At present it either cycles through all carrier gateways OR when the binary flag is set to 2, it picks the first gateway ONLY, ALL THE TIME.
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users




More information about the Users mailing list