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?
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?
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?
Hello,
On 19/10/15 12:07, Ben Bliss wrote:
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.
ok, I will look at 100/0 weight whenever I get a chance.
Best regards, Daniel
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?