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