<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>