<div dir="ltr">Hi,<div><br></div><div>Figured this out. Seems I had made a mistake in the names of AVPs. Changed the AVP names as the exact names used in the example contained in dispatcher doc. Dispatcher started to work, I can see even distribution of loads to 2 Asterisk servers. Will verify if maxload is being enforced or not, not really an issue even if it is not enforced. </div><div><br></div><div>Thanks,</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 27, 2015 at 9:07 AM, Ding Ma <span dir="ltr"><<a href="mailto:mading087@gmail.com" target="_blank">mading087@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi, Daniel<div><br></div><div>I just tested the dispatcher in 4.3.1. It showed the same behavior as 4.2.3. All the calls are sent to one Asterisk (the last one in the dispatcher list), the maxload setting in dispatcher table is ignored. </div><div><br></div><div>We use db dispatcher table instead of dispatcher list file, and the kamailio.cfg is the same as included in the previous email in this thread.</div><div><br></div><div>Hope I didn't make any mistake in kamailio.cfg. </div><div><br></div><div>Thanks</div><div><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 12, 2015 at 12:34 AM, Daniel-Constantin Mierla <span dir="ltr"><<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
Yes, 4.3 should have all fixes in 4.2.<br>
<br>
Cheers,<br>
Daniel<div><div><br>
<br>
<div>On 12/06/15 06:06, Ding Ma wrote:<br>
</div>
<blockquote type="cite">
<div>OK, we’ll try to update and report back. Wonder if
the latest 4.3 has all the fixes went into the latest 4.2.x. We
already have plan to upgrade to 4.3. </div>
<div>Thanks. </div>
<br>
<div>
<blockquote type="cite">
<div>On Jun 10, 2015, at 10:01 AM, Daniel-Constantin
Mierla <<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>>
wrote:</div>
<br>
<div>
<div bgcolor="#FFFFFF" text="#000000"> It was a fix
for maxload during 4.2.x, but don't recall exactly when
was backported. Can you upgrade to latest 4.2.x and see
the results? Your config file and database don't require
any change, only deploy the binaries for latest 4.2.x and
restart.<br>
<br>
If the issue is still there with latest 4.2.x, report here
and I will look at it with the first chance.<br>
<br>
Cheers,<br>
Daniel<br>
<br>
<div>On 10/06/15 16:50, Ding Ma
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>We're running kamailio 4.2.3. Are there
any changes to dispatcher in 4.2.x?</div>
<div>Thanks,</div>
<div><br>
</div>
<div># kamailio -V</div>
<div>version: kamailio 4.2.3 (x86_64/linux)
5596bd</div>
<div>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_FUTEX,
FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE,
USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST,
HAVE_RESOLV_RES</div>
<div>ADAPTIVE_WAIT_LOOPS=1024,
MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16,
MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE
8MB</div>
<div>poll method support: poll, epoll_lt,
epoll_et, sigio_rt, select.</div>
<div>id: 5596bd</div>
<div>compiled on 09:32:37 May 6 2015 with
gcc 4.4.7</div>
<div><br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Wed, Jun 10, 2015 at
7:01 AM, Daniel-Constantin Mierla <span dir="ltr"><<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
Hello,<br>
<br>
what version of kamailio are you using?<br>
<br>
Cheers,<br>
Daniel
<div>
<div><br>
<br>
<div>On 09/06/15 20:51, Ding Ma
wrote:<br>
</div>
</div>
</div>
<blockquote type="cite">
<div>
<div>
<div dir="ltr">I'm trying to
set up kamailio dispatcher to
distribute calls to 2 asterisk
servers. So far, the failover case
seems ok, but I cannot get the
dispatcher to distribute load. All
calls are going to the last
destination entry in the dispatcher
table even if I have set the maxload
attributes. I'm using algorithm 10 for
load distribution. The number of calls
sent to one asterisk is well above the
maxload. Hope someone more experienced
in dispatcher can review my config and
give me some recommendations. Thanks
in advance.
<div><br>
</div>
<div>Here is the content of
dispatcher table in postgresql db.</div>
<div><br>
<div>
<div>select * from
dispatcher;</div>
<div> id | setid |
destination | flags |
priority | attrs
| description</div>
<div>----+-------+--------------------+-------+----------+---------------------------+-------------</div>
<div> 1 | 1 | sip:<a href="http://10.0.1.31:5061/" target="_blank">10.0.1.31:5061</a>
| 0 | 0 |
duid=asterisk1;maxload=25 |
Asterisk1</div>
<div> 2 | 1 | sip:<a href="http://10.0.1.33:5061/" target="_blank">10.0.1.33:5061</a>
| 0 | 0 |
duid=asterisk2;maxload=25 |
Asterisk2</div>
<div>(2 rows)</div>
</div>
</div>
<div><br>
</div>
<div>Here are the dispatcher
sections in kamailio.cfg.</div>
<div>
<div># ----- dispatcher
params -----</div>
<div>#!ifdef
WITH_DISPATCHER</div>
<div>modparam("dispatcher",
"db_url", DBASTURL)</div>
<div>modparam("dispatcher",
"table_name", "dispatcher")</div>
<div>modparam("dispatcher",
"force_dst", 1). </div>
<div># If flag 2 is set,
then failover support is enabled.<br>
</div>
<div>modparam("dispatcher",
"flags", 3)</div>
<div># the last address in
destination set is used as a final
option to send the request to</div>
<div>modparam("dispatcher",
"use_default", 1)</div>
<div># load balancing fail
over</div>
<div>modparam("dispatcher",
"dst_avp", "$avp(dsdst)")</div>
<div>modparam("dispatcher",
"grp_avp", "$avp(dsgrp)")</div>
<div>modparam("dispatcher",
"cnt_avp", "$avp(dscnt)")</div>
<div>modparam("dispatcher",
"dstid_avp", "$avp(dsdstid)")</div>
<div>modparam("dispatcher",
"attrs_avp", "$avp(dsattrs)")</div>
<div># PVs for hashing</div>
<div>modparam("dispatcher",
"hash_pvar", "$fU@$ci")</div>
<div># PVs to store results
when calling ds_is_from_list</div>
<div>modparam("dispatcher",
"setid_pvname", "$var(setid)")</div>
<div>modparam("dispatcher",
"attrs_pvname", "$var(attrs)")</div>
<div># method to probe the
gateways</div>
<div>modparam("dispatcher",
"ds_ping_method", "OPTIONS")</div>
<div>modparam("dispatcher",
"ds_ping_from", <a>"sip:dispatcher@localhost"</a>)</div>
<div>modparam("dispatcher",
"ds_ping_interval", 30)</div>
<div>modparam("dispatcher",
"ds_probing_threshhold", 10)</div>
<div>modparam("dispatcher",
"ds_ping_reply_codes",
"class=2;code=403;code=404;code=484;code=488;class=3")</div>
<div>modparam("dispatcher",
"ds_probing_mode", 1)</div>
<div># size of hash table
storing data for call load
dispatching, power of two</div>
<div>modparam("dispatcher",
"ds_hash_size", 10)</div>
<div># expiration time in
seconds to remove the load on a
destination if no BYE was received</div>
<div>modparam("dispatcher",
"ds_hash_expire", 3600)</div>
<div># expiration time in
seconds to remove the load on a
destination if no 200 OK for
INVITE was received</div>
<div># and state updated
with ds_load_update</div>
<div>modparam("dispatcher",
"ds_hash_initexpire", 60)</div>
<div>modparam("dispatcher",
"ds_hash_check_interval", 30)</div>
<div>#!endif</div>
</div>
<div><br>
</div>
<div>
<div>route[WITHINDLG] {</div>
<div><span style="white-space:pre-wrap"> </span>if
(has_totag()) {</div>
<div><span style="white-space:pre-wrap"> </span># sequential
request withing a dialog should</div>
<div><span style="white-space:pre-wrap"> </span># take the
path determined by record-routing</div>
<div><br>
</div>
<div>#!ifdef
WITH_DISPATCHER</div>
<div><span style="white-space:pre-wrap"> </span>if(is_method("BYE|CANCEL")
&& ds_is_from_list("1",
"3"))</div>
<div><span style="white-space:pre-wrap"> </span>ds_load_update();</div>
<div>#!endif</div>
</div>
<div>......</div>
<div> }</div>
<div>}</div>
<div><br>
</div>
<div>
<div>route[FROMASTERISK] {</div>
<div>#!ifdef
WITH_DISPATCHER<br>
</div>
<div><span style="white-space:pre-wrap"> </span>if(ds_is_from_list("1",
"3")) {</div>
<div><span style="white-space:pre-wrap"> </span>xlog("L_DBG","$rm
from $fU@$si:$sp: Call from
Asterisk cluster\n");</div>
<div><span style="white-space:pre-wrap"> </span>return 1;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>return -1;</div>
<div>#!else</div>
<div><span style="white-space:pre-wrap"> </span>if
($si==$sel(cfg_get.asterisk.bindip))
{</div>
<div><span style="white-space:pre-wrap"> </span>return 1;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>return -1;</div>
<div>#!endif</div>
<div>}</div>
</div>
<div><br>
</div>
<div>
<div>onreply_route[MANAGE_REPLY]
{</div>
<div><span style="white-space:pre-wrap"> </span>xdbg("incoming
reply\n");</div>
<div>#!ifdef
WITH_DISPATCHER</div>
<div><span style="white-space:pre-wrap"> </span>if(is_method("INVITE")
&& ds_is_from_list("1",
"3")) {</div>
<div><span style="white-space:pre-wrap"> </span>if(status=~"2[0-9][0-9]")
{</div>
<div><span style="white-space:pre-wrap"> </span>ds_load_update();</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>else
if(status=~"[3-7][0-9][0-9]") {</div>
<div><span style="white-space:pre-wrap"> </span>ds_load_unset();</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div>#!endif</div>
<div><span style="white-space:pre-wrap"> </span>if(status=~"[12][0-9][0-9]")</div>
<div><span style="white-space:pre-wrap"> </span>route(NATMANAGE);</div>
<div>}</div>
</div>
<div><br>
</div>
<div>
<div>#!ifdef
WITH_DISPATCHER</div>
<div>failure_route[RTF_DISPATCH]
{</div>
<div><span style="white-space:pre-wrap"> </span>if
(t_is_canceled()) {</div>
<div><span style="white-space:pre-wrap"> </span>exit;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span># next DST -
only for 500 or local timeout</div>
<div><span style="white-space:pre-wrap"> </span>if
(t_check_status("500") or
(t_branch_timeout() and
!t_branch_replied())) {</div>
<div> # mark
the destination Inactive and
Probing</div>
<div><span style="white-space:pre-wrap"> </span>ds_mark_dst("IP");</div>
<div> #
select the new destination</div>
<div><span style="white-space:pre-wrap"> </span>if(ds_next_dst())
{</div>
<div><span style="white-space:pre-wrap"> </span>t_on_failure("RTF_DISPATCH");</div>
<div><span style="white-space:pre-wrap"> </span>route(RELAY);</div>
<div><span style="white-space:pre-wrap"> </span>exit;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div> else {</div>
<div>
# last available node failed to
reply, no other destinations
available</div>
<div>
send_reply("404", "No
destination");</div>
<div>
exit;</div>
<div> }</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div>}</div>
<div>#!endif</div>
</div>
<div><br>
</div>
<div>
<div>route[TOASTERISK] {</div>
<div>#!ifdef
WITH_DISPATCHER</div>
<div><span style="white-space:pre-wrap"> </span>#
ds_mark_dst("IP");</div>
<div><span style="white-space:pre-wrap"> </span># Call load
distribution</div>
<div><span style="white-space:pre-wrap"> </span>if(!ds_select_dst("1",
"10")) {</div>
<div><span style="white-space:pre-wrap"> </span>sl_send_reply("500",
"Service Unavailable");</div>
<div><span style="white-space:pre-wrap"> </span>xlog("L_INFO","$rm
from $fU@$si:$sp: No destinations
available for $rd\n");</div>
<div> exit;</div>
<div> }</div>
<div><span style="white-space:pre-wrap"> </span>xlog("L_DBG",
"--- SCRIPT: going to <$ru>
via <$du>\n");</div>
<div><span style="white-space:pre-wrap"> </span>t_on_failure("RTF_DISPATCH");</div>
<div>#!else</div>
<div><br>
</div>
<div> <span style="white-space:pre-wrap"> </span>$du = "sip:" +
$sel(cfg_get.asterisk.bindip) +
":"</div>
<div><span style="white-space:pre-wrap"> </span>+
$sel(cfg_get.asterisk.bindport);</div>
<div>#!endif</div>
<div><span style="white-space:pre-wrap"> </span>route(RELAY);</div>
<div><span style="white-space:pre-wrap"> </span>exit;</div>
<div>}</div>
</div>
<div><br>
</div>
<div>
<div><br>
</div>
<div># Dispatcher detects a
destination goes down</div>
<div>event_route[dispatcher:dst-down]
{</div>
<div> xlog("L_ERR",
"Destination down: $rm $ru
($du)\n");</div>
<div>}</div>
<div><br>
</div>
<div># Dispatcher detects a
destination comes up </div>
<div>event_route[dispatcher:dst-up]
{</div>
<div> xlog("L_ERR",
"Destination up: $rm $ru\n");</div>
<div>}</div>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
</div>
</div>
<pre>_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><span><font color="#888888">
</font></span></pre>
<span><font color="#888888"> </font></span></blockquote>
<span><font color="#888888"> <br>
<pre cols="72">--
Daniel-Constantin Mierla
<a href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Book: SIP Routing With Kamailio - <a href="http://www.asipto.com/" target="_blank">http://www.asipto.com</a></pre>
</font></span></div>
<br>
_______________________________________________<br>
SIP Express Router (SER) and Kamailio (OpenSER)
- sr-users mailing list<br>
<a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
<br>
<pre cols="72">--
Daniel-Constantin Mierla
<a href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Book: SIP Routing With Kamailio - <a href="http://www.asipto.com/" target="_blank">http://www.asipto.com</a></pre>
</div>
</div>
</blockquote>
</div>
<br>
</blockquote>
<br>
<pre cols="72">--
Daniel-Constantin Mierla
<a href="http://twitter.com/#!/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Book: SIP Routing With Kamailio - <a href="http://www.asipto.com" target="_blank">http://www.asipto.com</a></pre>
</div></div></div>
</blockquote></div><br></div></div></div></div>
</blockquote></div><br></div></div>