Hi Daniel,

Many thanks for taking the time to reply.

I have updated to 4.3.1, and am still having the same issue. However, I have found a work around to the issue (or at least another way of doing what i needed to do).

I plan to have a cluster of 5 or more media servers (only have 2 at the moment, as I am still working through the kamailio/asterisk config) and wanted to be able to force traffic through 1 media server for the sakes of tracing and troubleshooting. The weighting method appeared to allow me to do this. However, after reading through the dispatcher module readme, I found the flags options will allow me to disable targets by adjusting the flags within the database.

For reasons I don't fully understand, when set to 50/50, 60/40 etc. the balancing appears to work fine. Its only when you set it the targets to 100/0 things start to go awry, but the only reason to do this was to send all traffic to one destination. As setting the flag to 4 against the target disables routing to it, I can leave the weighting alone, and just adjust the flag values as and when needed.

Kind Regards,

---------
Ben Bliss

On 16/10/2015 3:26 PM, Daniel-Constantin Mierla wrote:
Hello,

can try with latest version in 4.2 series? There was a fix to weight
based balancing quite some time ago, but it might be after 4.2.4 was
released.

Cheers,
Daniel

On 15/10/15 18:11, Ben Bliss wrote:
Hi,

I am having issues getting the dispatcher to work using weighting. I
have been digging through old posts to the list, and tried all that I
have found, but am still having no luck at all.

So, information...

version: kamailio 4.2.4 (amd64/freebsd) be62bd
flags: STATS: Off, USE_TCP, USE_TLS, TLS_HOOKS, USE_RAW_SOCKS,
DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC,
F_MALLOC, DBG_F_MALLOC, USE_PTHREAD_MUTEX, USE_DNS_CACHE,
USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024,
BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, select, kqueue.
id: be62bd

Dispatcher configuration...

modparam("dispatcher", "db_url", DBURL)
modparam("dispatcher", "table_name", "dispatcher")
modparam("dispatcher", "flags", 3)
modparam("dispatcher", "force_dst", 1)
modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")
modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")
modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")

Dialplan config..

route[DISPATCH] {
         if(!ds_select_dst("1", "9"))
         {
                 send_reply("404", "No destination");
                 exit;
         }
         xlog("L_DBG", "--- SCRIPT: going to <$ru> via <$du>\n");
         t_on_failure("RTF_DISPATCH");
         return;

I am loading the values from a database, which are being loaded fine,
and appear to be being formatted correctly aswell..

+----+-------+-------------------------+-------+----------+------------+----------------------+

| id | setid | destination             | flags | priority | attrs
| description          |
+----+-------+-------------------------+-------+----------+------------+----------------------+

|  1 |     1 | sipx.x.x.106:5060 |     8 |        1 | weight=100 |
                             |
|  2 |     1 | sip:x.x.x.107:5060 |     8 |        1 | weight=0   |
                              |
+----+-------+-------------------------+-------+----------+------------+----------------------+


The IP's are public, so i've masked them... The following is from
kamcmd..

{
         NRSETS: 1
         RECORDS: {
                 SET: {
                         ID: 1
                         TARGETS: {
                                 DEST: {
                                         URI: sip:x.x.x.107:5060
                                         FLAGS: AP
                                         PRIORITY: 1
                                         ATTRS: {
                                                 BODY: weight=0
                                                 DUID:
                                                 MAXLOAD: 0
                                                 WEIGHT: 0
                                         }
                                 }
                                 DEST: {
                                         URI: sip:x.x.x106:5060
                                         FLAGS: AP
                                         PRIORITY: 1
                                         ATTRS: {
                                                 BODY: weight=100
                                                 DUID:
                                                 MAXLOAD: 0
                                                 WEIGHT: 100
                                         }
                                 }
                         }
                 }
         }
}

However, when any call is placed, it will always goto the server
ending 107 (with weight 0, which means, as far as I understand, it
should be ignored). I've tried with ; after the weights, this made no
change either.

When set to round robin, or via priority, it appears to work fine.

Any ideas?



_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to