<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">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 class="">Thanks. </div><br class=""><div><blockquote type="cite" class=""><div class="">On Jun 10, 2015, at 10:01 AM, Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com" class="">miconda@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" class="">
<div bgcolor="#FFFFFF" text="#000000" class="">
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 class="">
<br class="">
If the issue is still there with latest 4.2.x, report here and I
will look at it with the first chance.<br class="">
<br class="">
Cheers,<br class="">
Daniel<br class="">
<br class="">
<div class="moz-cite-prefix">On 10/06/15 16:50, Ding Ma wrote:<br class="">
</div>
<blockquote cite="mid:CAD6FCvMoNoxxEjWfqz5zXqA3WtykNrgcW0vE0fZZ2aFCPY3PHg@mail.gmail.com" type="cite" class="">
<div dir="ltr" class="">
<div class="">We're running kamailio 4.2.3. Are there any changes to
dispatcher in 4.2.x?</div>
<div class="">Thanks,</div>
<div class=""><br class="">
</div>
<div class=""># kamailio -V</div>
<div class="">version: kamailio 4.2.3 (x86_64/linux) 5596bd</div>
<div class="">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 class="">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 class="">poll method support: poll, epoll_lt, epoll_et, sigio_rt,
select.</div>
<div class="">id: 5596bd</div>
<div class="">compiled on 09:32:37 May 6 2015 with gcc 4.4.7</div>
<div class=""><br class="">
</div>
<div class="gmail_extra"><br class="">
<div class="gmail_quote">On Wed, Jun 10, 2015 at 7:01 AM,
Daniel-Constantin Mierla <span dir="ltr" class=""><<a moz-do-not-send="true" href="mailto:miconda@gmail.com" target="_blank" class="">miconda@gmail.com</a>></span> wrote:<br class="">
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000" class=""> Hello,<br class="">
<br class="">
what version of kamailio are you using?<br class="">
<br class="">
Cheers,<br class="">
Daniel
<div class="">
<div class="h5"><br class="">
<br class="">
<div class="">On 09/06/15 20:51, Ding Ma wrote:<br class="">
</div>
</div>
</div>
<blockquote type="cite" class="">
<div class="">
<div class="h5">
<div dir="ltr" class="">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 class=""><br class="">
</div>
<div class="">Here is the content of dispatcher table in
postgresql db.</div>
<div class=""><br class="">
<div class="">
<div class="">select * from dispatcher;</div>
<div class=""> id | setid | destination |
flags | priority | attrs
| description</div>
<div class="">----+-------+--------------------+-------+----------+---------------------------+-------------</div>
<div class=""> 1 | 1 | sip:<a moz-do-not-send="true" href="http://10.0.1.31:5061/" target="_blank" class="">10.0.1.31:5061</a> |
0 | 0 | duid=asterisk1;maxload=25 |
Asterisk1</div>
<div class=""> 2 | 1 | sip:<a moz-do-not-send="true" href="http://10.0.1.33:5061/" target="_blank" class="">10.0.1.33:5061</a> |
0 | 0 | duid=asterisk2;maxload=25 |
Asterisk2</div>
<div class="">(2 rows)</div>
</div>
</div>
<div class=""><br class="">
</div>
<div class="">Here are the dispatcher sections in
kamailio.cfg.</div>
<div class="">
<div class=""># ----- dispatcher params -----</div>
<div class="">#!ifdef WITH_DISPATCHER</div>
<div class="">modparam("dispatcher", "db_url",
DBASTURL)</div>
<div class="">modparam("dispatcher", "table_name",
"dispatcher")</div>
<div class="">modparam("dispatcher", "force_dst", 1). </div>
<div class=""># If flag 2 is set, then failover support
is enabled.<br class="">
</div>
<div class="">modparam("dispatcher", "flags", 3)</div>
<div class=""># the last address in destination set is
used as a final option to send the request
to</div>
<div class="">modparam("dispatcher", "use_default", 1)</div>
<div class=""># load balancing fail over</div>
<div class="">modparam("dispatcher", "dst_avp",
"$avp(dsdst)")</div>
<div class="">modparam("dispatcher", "grp_avp",
"$avp(dsgrp)")</div>
<div class="">modparam("dispatcher", "cnt_avp",
"$avp(dscnt)")</div>
<div class="">modparam("dispatcher", "dstid_avp",
"$avp(dsdstid)")</div>
<div class="">modparam("dispatcher", "attrs_avp",
"$avp(dsattrs)")</div>
<div class=""># PVs for hashing</div>
<div class="">modparam("dispatcher", "hash_pvar",
"$fU@$ci")</div>
<div class=""># PVs to store results when calling
ds_is_from_list</div>
<div class="">modparam("dispatcher", "setid_pvname",
"$var(setid)")</div>
<div class="">modparam("dispatcher", "attrs_pvname",
"$var(attrs)")</div>
<div class=""># method to probe the gateways</div>
<div class="">modparam("dispatcher", "ds_ping_method",
"OPTIONS")</div>
<div class="">modparam("dispatcher", "ds_ping_from", <a moz-do-not-send="true" class="">"sip:dispatcher@localhost"</a>)</div>
<div class="">modparam("dispatcher",
"ds_ping_interval", 30)</div>
<div class="">modparam("dispatcher",
"ds_probing_threshhold", 10)</div>
<div class="">modparam("dispatcher",
"ds_ping_reply_codes",
"class=2;code=403;code=404;code=484;code=488;class=3")</div>
<div class="">modparam("dispatcher", "ds_probing_mode",
1)</div>
<div class=""># size of hash table storing data for
call load dispatching, power of two</div>
<div class="">modparam("dispatcher", "ds_hash_size",
10)</div>
<div class=""># expiration time in seconds to remove
the load on a destination if no BYE was
received</div>
<div class="">modparam("dispatcher", "ds_hash_expire",
3600)</div>
<div class=""># expiration time in seconds to remove
the load on a destination if no 200 OK for
INVITE was received</div>
<div class=""># and state updated with ds_load_update</div>
<div class="">modparam("dispatcher",
"ds_hash_initexpire", 60)</div>
<div class="">modparam("dispatcher",
"ds_hash_check_interval", 30)</div>
<div class="">#!endif</div>
</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">route[WITHINDLG] {</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if
(has_totag()) {</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>#
sequential request withing a dialog should</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>#
take the path determined by record-routing</div>
<div class=""><br class="">
</div>
<div class="">#!ifdef WITH_DISPATCHER</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if(is_method("BYE|CANCEL")
&& ds_is_from_list("1", "3"))</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>ds_load_update();</div>
<div class="">#!endif</div>
</div>
<div class="">......</div>
<div class=""> }</div>
<div class="">}</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">route[FROMASTERISK] {</div>
<div class="">#!ifdef WITH_DISPATCHER<br class="">
</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if(ds_is_from_list("1",
"3")) {</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>xlog("L_DBG","$rm
from $fU@$si:$sp: Call from Asterisk
cluster\n");</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>return
1;</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>}</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>return
-1;</div>
<div class="">#!else</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if
($si==$sel(cfg_get.asterisk.bindip)) {</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>return
1;</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>}</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>return
-1;</div>
<div class="">#!endif</div>
<div class="">}</div>
</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">onreply_route[MANAGE_REPLY] {</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>xdbg("incoming
reply\n");</div>
<div class="">#!ifdef WITH_DISPATCHER</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if(is_method("INVITE")
&& ds_is_from_list("1", "3")) {</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if(status=~"2[0-9][0-9]")
{</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>ds_load_update();</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>}</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>else
if(status=~"[3-7][0-9][0-9]") {</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>ds_load_unset();</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>}</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>}</div>
<div class="">#!endif</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if(status=~"[12][0-9][0-9]")</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>route(NATMANAGE);</div>
<div class="">}</div>
</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">#!ifdef WITH_DISPATCHER</div>
<div class="">failure_route[RTF_DISPATCH] {</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if
(t_is_canceled()) {</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>exit;</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>}</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>#
next DST - only for 500 or local timeout</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if
(t_check_status("500") or
(t_branch_timeout() and
!t_branch_replied())) {</div>
<div class=""> # mark the destination
Inactive and Probing</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>ds_mark_dst("IP");</div>
<div class=""> # select the new
destination</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if(ds_next_dst())
{</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>t_on_failure("RTF_DISPATCH");</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>route(RELAY);</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>exit;</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>}</div>
<div class=""> else {</div>
<div class=""> # last available
node failed to reply, no other destinations
available</div>
<div class=""> send_reply("404",
"No destination");</div>
<div class=""> exit;</div>
<div class=""> }</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>}</div>
<div class="">}</div>
<div class="">#!endif</div>
</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">route[TOASTERISK] {</div>
<div class="">#!ifdef WITH_DISPATCHER</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>#
ds_mark_dst("IP");</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>#
Call load distribution</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>if(!ds_select_dst("1",
"10")) {</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>sl_send_reply("500",
"Service Unavailable");</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>xlog("L_INFO","$rm
from $fU@$si:$sp: No destinations available
for $rd\n");</div>
<div class=""> exit;</div>
<div class=""> }</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>xlog("L_DBG",
"--- SCRIPT: going to <$ru> via
<$du>\n");</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>t_on_failure("RTF_DISPATCH");</div>
<div class="">#!else</div>
<div class=""><br class="">
</div>
<div class=""> <span style="white-space:pre-wrap" class=""> </span>$du
= "sip:" + $sel(cfg_get.asterisk.bindip) +
":"</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>+
$sel(cfg_get.asterisk.bindport);</div>
<div class="">#!endif</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>route(RELAY);</div>
<div class=""><span style="white-space:pre-wrap" class=""> </span>exit;</div>
<div class="">}</div>
</div>
<div class=""><br class="">
</div>
<div class="">
<div class=""><br class="">
</div>
<div class=""># Dispatcher detects a destination goes
down</div>
<div class="">event_route[dispatcher:dst-down] {</div>
<div class=""> xlog("L_ERR", "Destination down: $rm
$ru ($du)\n");</div>
<div class="">}</div>
<div class=""><br class="">
</div>
<div class=""># Dispatcher detects a destination comes
up </div>
<div class="">event_route[dispatcher:dst-up] {</div>
<div class=""> xlog("L_ERR", "Destination up: $rm
$ru\n");</div>
<div class="">}</div>
</div>
</div>
<br class="">
<fieldset class=""></fieldset>
<br class="">
</div>
</div>
<pre class="">_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a moz-do-not-send="true" href="mailto:sr-users@lists.sip-router.org" target="_blank" class="">sr-users@lists.sip-router.org</a>
<a moz-do-not-send="true" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank" class="">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><span class="HOEnZb"><font color="#888888" class="">
</font></span></pre>
<span class="HOEnZb"><font color="#888888" class=""> </font></span></blockquote>
<span class="HOEnZb"><font color="#888888" class=""> <br class="">
<pre cols="72" class="">--
Daniel-Constantin Mierla
<a moz-do-not-send="true" href="http://twitter.com/#%21/miconda" target="_blank" class="">http://twitter.com/#!/miconda</a> - <a moz-do-not-send="true" href="http://www.linkedin.com/in/miconda" target="_blank" class="">http://www.linkedin.com/in/miconda</a>
Book: SIP Routing With Kamailio - <a moz-do-not-send="true" href="http://www.asipto.com/" target="_blank" class="">http://www.asipto.com</a></pre>
</font></span></div>
<br class="">
_______________________________________________<br class="">
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
mailing list<br class="">
<a moz-do-not-send="true" href="mailto:sr-users@lists.sip-router.org" class="">sr-users@lists.sip-router.org</a><br class="">
<a moz-do-not-send="true" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank" class="">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br class="">
<br class="">
</blockquote>
</div>
<br class="">
</div>
</div>
</blockquote>
<br class="">
<pre class="moz-signature" cols="72">--
Daniel-Constantin Mierla
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a>
Book: SIP Routing With Kamailio - <a class="moz-txt-link-freetext" href="http://www.asipto.com/">http://www.asipto.com</a></pre>
</div>
</div></blockquote></div><br class=""></body></html>