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?