Re: [SR-Users] dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find load for (from asterisk call-id)
Hi again There is something that i am starting to realize and i think is the source of the problem. Since i am not sure, I think someone can clarify this to me. As i said the problem rises when i do a 2 call leg conversation. In which, since Asterisk is a B2BUA and creates another channel (which ends up being another dialog), there is a point where Asterisk initiates the SIP flow. Sip Client 1 ---> Kamailio --> Asterisk (dialog 1) Asterisk -> Kamailio -> Sip Client 2 (dialog 2) Now, since both Asterisk takes part of the destination addresses which the dispatcher modules are managing at the moment, there is no way (from what i know) that the ds_load_update() actually records that call load. I am pretty sure that there is some way to manage this better, and since i am new to Kamailio, I think you guys can help me out easily Thank you very much for your time 2016-04-04 18:35 GMT-03:00 TEG AMJG: > Hi Alberto, thanks for your reply > > yeah, i am using ds_select_dst("0","10") in this case because i use > setid=0 in the dispatcher table as you can see in this route block > > route[TOASTERISK] { > #!ifdef WITH_LOADBALANCE > xlog("L_INFO","UBICAR: Forwarding non-registrar requests to > Asterisk \n"); > if(!ds_select_dst("0", "10")) { > sl_send_reply("500", "Service Unavailable"); > xlog("L_ERROR","UBICAR: No destinations available for $rd > \n"); > exit; > } > xlog("L_ERROR","UBICAR: AVP $avp(dsdstid)\n"); > xlog("L_INFO","UBICAR: Dispatching to Asterisk Box $du\n"); > t_set_fr(0,1); > t_on_failure("MANAGE_FAILURE"); > route(RELAY); > exit; > #!endif > } > > Also both Asterisk are responding to ping probes done by Kamailio, they > are actually responding 404 but are still kept alive thanks to this param: > > modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=480;code=404") > > and the command kamctl dispatcher dump shows them with flags=AP > > URI:: sip:192.168.10.191:5060 flags=AP priority=0 > attrs=duid=PBX2;my=pbx2;maxload=200 > URI:: sip:192.168.10.190:5060 flags=AP priority=0 > attrs=duid=PBX1;my=pbx1;maxload=200 > > Also, i would like to know if there is a way to print some kind of table > to see how kamailio are keeping these call loads recorded. I have been > looking for it but i cannot find any way of doing it > > Again, thank you very much for your reply > > > 2016-04-04 14:23 GMT-03:00 Alberto Sagredo > : > >> Hi >> >> Are you using ds_select_dst("1", "10"); somewhere ? >> >> You have to check Asterisk is responding to OPTIONS as dispatcher >> considered UP when 200 OK from Asterisk or SIP Gateway is received.. and >> not if not received. >> >> I have used dispatcher but not with 10 option on algo... >> >> BR >> >> >> >> >> 2016-04-04 8:07 GMT+02:00 TEG AMJG : >> >>> Hi >>> >>> I am new to Kamailio and i am just trying to setup a kamailio (v4.2.3) >>> dispatcher to distribute calls to 2 asterisk using the call load >>> distribution algorithm (alg 10). I started to test and see how all it is >>> working and in the logs appears that the call load record it cannot be >>> found. >>> >>> - ERROR: dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find >>> load for (call id generated by asterisk) >>> >>> I am getting this error trying a 2 call leg conversation when asterisk >>> is creating the BYE message destinated to the callee after receiving a BYE >>> message from the caller, and the BYE message by Asterisk reach Kamailio to >>> then apply the ds_load_update function >>> >>> From what i understand about ds_load_update it is that it sets the load >>> to an specific destination if Kamailio receives a 2xx reply of an INVITE >>> message, and removes it if Kamailio receives a BYE message based from the >>> Call-id received in that message, where it is actually failing in my >>> implementation at the moment >>> >>> Here are the blocks of code of the dispatcher parameters and where the >>> function ds_load_update() is being used: >>> #!ifdef WITH_LOADBALANCE >>> >>> #Parameters using Dispatcher from DB >>> # -- >>> modparam("dispatcher", "db_url", DBURL) >>> modparam("dispatcher", "table_name", "dispatcher") >>> # -- >>> >>> #Enabling failover mechanism >>> # --- >>> modparam("dispatcher", "flags", 2) >>> # --- >>> >>> #Setting dispatcher parameters in AVP >>> # --- >>> modparam("dispatcher", "dst_avp", "$avp(AVP_DST)") >>> modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)") >>> modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)") >>> modparam("dispatcher", "dstid_avp", "$avp(dsdstid)") >>> # --- >>> >>> #Setting dispatcher result in PV variables >>> # --- >>> modparam("dispatcher", "attrs_pvname", "$var(attrs)") >>> # --- >>> >>> >>> #Enabling dispatcher algorithm according to call loads >>> #
Re: [SR-Users] dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find load for (from asterisk call-id)
hello. how can i block SIP messages by message content type. for exlamle : text/plain tanks in advance! From: sr-users [sr-users-boun...@lists.sip-router.org] on behalf of TEG AMJG [tega...@gmail.com] Sent: Tuesday, April 05, 2016 1:35 AM To: Kamailio (SER) - Users Mailing List Subject: Re: [SR-Users] dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find load for (from asterisk call-id) Hi Alberto, thanks for your reply yeah, i am using ds_select_dst("0","10") in this case because i use setid=0 in the dispatcher table as you can see in this route block route[TOASTERISK] { #!ifdef WITH_LOADBALANCE xlog("L_INFO","UBICAR: Forwarding non-registrar requests to Asterisk \n"); if(!ds_select_dst("0", "10")) { sl_send_reply("500", "Service Unavailable"); xlog("L_ERROR","UBICAR: No destinations available for $rd \n"); exit; } xlog("L_ERROR","UBICAR: AVP $avp(dsdstid)\n"); xlog("L_INFO","UBICAR: Dispatching to Asterisk Box $du\n"); t_set_fr(0,1); t_on_failure("MANAGE_FAILURE"); route(RELAY); exit; #!endif } Also both Asterisk are responding to ping probes done by Kamailio, they are actually responding 404 but are still kept alive thanks to this param: modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=480;code=404") and the command kamctl dispatcher dump shows them with flags=AP URI:: sip:192.168.10.191:5060<http://192.168.10.191:5060> flags=AP priority=0 attrs=duid=PBX2;my=pbx2;maxload=200 URI:: sip:192.168.10.190:5060<http://192.168.10.190:5060> flags=AP priority=0 attrs=duid=PBX1;my=pbx1;maxload=200 Also, i would like to know if there is a way to print some kind of table to see how kamailio are keeping these call loads recorded. I have been looking for it but i cannot find any way of doing it Again, thank you very much for your reply 2016-04-04 14:23 GMT-03:00 Alberto Sagredo <alberto.sagr...@avanzada7.com<mailto:alberto.sagr...@avanzada7.com>>: Hi Are you using ds_select_dst("1", "10"); somewhere ? You have to check Asterisk is responding to OPTIONS as dispatcher considered UP when 200 OK from Asterisk or SIP Gateway is received.. and not if not received. I have used dispatcher but not with 10 option on algo... BR 2016-04-04 8:07 GMT+02:00 TEG AMJG <tega...@gmail.com<mailto:tega...@gmail.com>>: Hi I am new to Kamailio and i am just trying to setup a kamailio (v4.2.3) dispatcher to distribute calls to 2 asterisk using the call load distribution algorithm (alg 10). I started to test and see how all it is working and in the logs appears that the call load record it cannot be found. - ERROR: dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find load for (call id generated by asterisk) I am getting this error trying a 2 call leg conversation when asterisk is creating the BYE message destinated to the callee after receiving a BYE message from the caller, and the BYE message by Asterisk reach Kamailio to then apply the ds_load_update function From what i understand about ds_load_update it is that it sets the load to an specific destination if Kamailio receives a 2xx reply of an INVITE message, and removes it if Kamailio receives a BYE message based from the Call-id received in that message, where it is actually failing in my implementation at the moment Here are the blocks of code of the dispatcher parameters and where the function ds_load_update() is being used: #!ifdef WITH_LOADBALANCE #Parameters using Dispatcher from DB # -- modparam("dispatcher", "db_url", DBURL) modparam("dispatcher", "table_name", "dispatcher") # -- #Enabling failover mechanism # --- modparam("dispatcher", "flags", 2) # --- #Setting dispatcher parameters in AVP # --- modparam("dispatcher", "dst_avp", "$avp(AVP_DST)") modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)") modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)") modparam("dispatcher", "dstid_avp", "$avp(dsdstid)") # --- #Setting dispatcher result in PV variables # --- modparam("dispatcher", "attrs_pvname", "$var(attrs)") # --- #Enabling dispatcher algorithm according to call loads # --- modparam("dispatcher", "ds_hash_size",8) modparam("dispatcher", "ds_hash_expire", 3600) modparam("dispatcher", "ds_hash_initexpire", 60) # --- # Setting parameters for probing dispatc
Re: [SR-Users] dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find load for (from asterisk call-id)
Hi Alberto, thanks for your reply yeah, i am using ds_select_dst("0","10") in this case because i use setid=0 in the dispatcher table as you can see in this route block route[TOASTERISK] { #!ifdef WITH_LOADBALANCE xlog("L_INFO","UBICAR: Forwarding non-registrar requests to Asterisk \n"); if(!ds_select_dst("0", "10")) { sl_send_reply("500", "Service Unavailable"); xlog("L_ERROR","UBICAR: No destinations available for $rd \n"); exit; } xlog("L_ERROR","UBICAR: AVP $avp(dsdstid)\n"); xlog("L_INFO","UBICAR: Dispatching to Asterisk Box $du\n"); t_set_fr(0,1); t_on_failure("MANAGE_FAILURE"); route(RELAY); exit; #!endif } Also both Asterisk are responding to ping probes done by Kamailio, they are actually responding 404 but are still kept alive thanks to this param: modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=480;code=404") and the command kamctl dispatcher dump shows them with flags=AP URI:: sip:192.168.10.191:5060 flags=AP priority=0 attrs=duid=PBX2;my=pbx2;maxload=200 URI:: sip:192.168.10.190:5060 flags=AP priority=0 attrs=duid=PBX1;my=pbx1;maxload=200 Also, i would like to know if there is a way to print some kind of table to see how kamailio are keeping these call loads recorded. I have been looking for it but i cannot find any way of doing it Again, thank you very much for your reply 2016-04-04 14:23 GMT-03:00 Alberto Sagredo: > Hi > > Are you using ds_select_dst("1", "10"); somewhere ? > > You have to check Asterisk is responding to OPTIONS as dispatcher > considered UP when 200 OK from Asterisk or SIP Gateway is received.. and > not if not received. > > I have used dispatcher but not with 10 option on algo... > > BR > > > > > 2016-04-04 8:07 GMT+02:00 TEG AMJG : > >> Hi >> >> I am new to Kamailio and i am just trying to setup a kamailio (v4.2.3) >> dispatcher to distribute calls to 2 asterisk using the call load >> distribution algorithm (alg 10). I started to test and see how all it is >> working and in the logs appears that the call load record it cannot be >> found. >> >> - ERROR: dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find load >> for (call id generated by asterisk) >> >> I am getting this error trying a 2 call leg conversation when asterisk >> is creating the BYE message destinated to the callee after receiving a BYE >> message from the caller, and the BYE message by Asterisk reach Kamailio to >> then apply the ds_load_update function >> >> From what i understand about ds_load_update it is that it sets the load >> to an specific destination if Kamailio receives a 2xx reply of an INVITE >> message, and removes it if Kamailio receives a BYE message based from the >> Call-id received in that message, where it is actually failing in my >> implementation at the moment >> >> Here are the blocks of code of the dispatcher parameters and where the >> function ds_load_update() is being used: >> #!ifdef WITH_LOADBALANCE >> >> #Parameters using Dispatcher from DB >> # -- >> modparam("dispatcher", "db_url", DBURL) >> modparam("dispatcher", "table_name", "dispatcher") >> # -- >> >> #Enabling failover mechanism >> # --- >> modparam("dispatcher", "flags", 2) >> # --- >> >> #Setting dispatcher parameters in AVP >> # --- >> modparam("dispatcher", "dst_avp", "$avp(AVP_DST)") >> modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)") >> modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)") >> modparam("dispatcher", "dstid_avp", "$avp(dsdstid)") >> # --- >> >> #Setting dispatcher result in PV variables >> # --- >> modparam("dispatcher", "attrs_pvname", "$var(attrs)") >> # --- >> >> >> #Enabling dispatcher algorithm according to call loads >> # --- >> modparam("dispatcher", "ds_hash_size",8) >> modparam("dispatcher", "ds_hash_expire", 3600) >> modparam("dispatcher", "ds_hash_initexpire", 60) >> # --- >> >> # Setting parameters for probing dispatcher destinations >> # --- >> modparam("dispatcher", "ds_ping_interval", 20) >> modparam("dispatcher", "ds_ping_from", "sip:kamailio1@") >> modparam("dispatcher", "ds_probing_mode", 1) >> modparam("dispatcher", "ds_probing_threshhold", 2) >> modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=480;code=404") >> # --- >> >> ... >> route[WITHINDLG] { >> if (has_totag()) { >> # sequential request withing a dialog should >> # take the path determined by record-routing >> >> #!ifdef WITH_LOADBALANCE >> if(is_method("BYE|CANCEL")){ >> xlog("L_ERROR","UBICAR BYE ds_load_update requesturi=$ru >> from=$fu method=$rm callid=$ci to=$tu reply=$mt rrcode=$rr rcode=$rs\n"); >> ds_load_update(); >> } >> #!endif >> ... >> } >> >> ... >> >> onreply_route[MANAGE_REPLY] { >> #!ifdef WITH_LOADBALANCE >> if(is_method("INVITE")) { >>
Re: [SR-Users] dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find load for (from asterisk call-id)
Hi Are you using ds_select_dst("1", "10"); somewhere ? You have to check Asterisk is responding to OPTIONS as dispatcher considered UP when 200 OK from Asterisk or SIP Gateway is received.. and not if not received. I have used dispatcher but not with 10 option on algo... BR 2016-04-04 8:07 GMT+02:00 TEG AMJG: > Hi > > I am new to Kamailio and i am just trying to setup a kamailio (v4.2.3) > dispatcher to distribute calls to 2 asterisk using the call load > distribution algorithm (alg 10). I started to test and see how all it is > working and in the logs appears that the call load record it cannot be > found. > > - ERROR: dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find load > for (call id generated by asterisk) > > I am getting this error trying a 2 call leg conversation when asterisk is > creating the BYE message destinated to the callee after receiving a BYE > message from the caller, and the BYE message by Asterisk reach Kamailio to > then apply the ds_load_update function > > From what i understand about ds_load_update it is that it sets the load to > an specific destination if Kamailio receives a 2xx reply of an INVITE > message, and removes it if Kamailio receives a BYE message based from the > Call-id received in that message, where it is actually failing in my > implementation at the moment > > Here are the blocks of code of the dispatcher parameters and where the > function ds_load_update() is being used: > #!ifdef WITH_LOADBALANCE > > #Parameters using Dispatcher from DB > # -- > modparam("dispatcher", "db_url", DBURL) > modparam("dispatcher", "table_name", "dispatcher") > # -- > > #Enabling failover mechanism > # --- > modparam("dispatcher", "flags", 2) > # --- > > #Setting dispatcher parameters in AVP > # --- > modparam("dispatcher", "dst_avp", "$avp(AVP_DST)") > modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)") > modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)") > modparam("dispatcher", "dstid_avp", "$avp(dsdstid)") > # --- > > #Setting dispatcher result in PV variables > # --- > modparam("dispatcher", "attrs_pvname", "$var(attrs)") > # --- > > > #Enabling dispatcher algorithm according to call loads > # --- > modparam("dispatcher", "ds_hash_size",8) > modparam("dispatcher", "ds_hash_expire", 3600) > modparam("dispatcher", "ds_hash_initexpire", 60) > # --- > > # Setting parameters for probing dispatcher destinations > # --- > modparam("dispatcher", "ds_ping_interval", 20) > modparam("dispatcher", "ds_ping_from", "sip:kamailio1@") > modparam("dispatcher", "ds_probing_mode", 1) > modparam("dispatcher", "ds_probing_threshhold", 2) > modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=480;code=404") > # --- > > ... > route[WITHINDLG] { > if (has_totag()) { > # sequential request withing a dialog should > # take the path determined by record-routing > > #!ifdef WITH_LOADBALANCE > if(is_method("BYE|CANCEL")){ > xlog("L_ERROR","UBICAR BYE ds_load_update requesturi=$ru > from=$fu method=$rm callid=$ci to=$tu reply=$mt rrcode=$rr rcode=$rs\n"); > ds_load_update(); > } > #!endif > ... > } > > ... > > onreply_route[MANAGE_REPLY] { > #!ifdef WITH_LOADBALANCE > if(is_method("INVITE")) { > if(status=~"2[0-9][0-9]") { > xlog("L_ERROR","UBICAR setting ds_load_update > requesturi=$ru from=$fu method=$rm callid=$ci to=$tu reply=$mt rrcode=$rr > rcode=$rs"); > 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); > } > } > > > This is what i am getting from logs after the 2 call legs conversation > completes: > > kam1 /usr/sbin/kamailio[4082]: ERROR:
[SR-Users] dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find load for (from asterisk call-id)
Hi I am new to Kamailio and i am just trying to setup a kamailio (v4.2.3) dispatcher to distribute calls to 2 asterisk using the call load distribution algorithm (alg 10). I started to test and see how all it is working and in the logs appears that the call load record it cannot be found. - ERROR: dispatcher [dispatch.c:1416]: ds_load_remove(): cannot find load for (call id generated by asterisk) I am getting this error trying a 2 call leg conversation when asterisk is creating the BYE message destinated to the callee after receiving a BYE message from the caller, and the BYE message by Asterisk reach Kamailio to then apply the ds_load_update function >From what i understand about ds_load_update it is that it sets the load to an specific destination if Kamailio receives a 2xx reply of an INVITE message, and removes it if Kamailio receives a BYE message based from the Call-id received in that message, where it is actually failing in my implementation at the moment Here are the blocks of code of the dispatcher parameters and where the function ds_load_update() is being used: #!ifdef WITH_LOADBALANCE #Parameters using Dispatcher from DB # -- modparam("dispatcher", "db_url", DBURL) modparam("dispatcher", "table_name", "dispatcher") # -- #Enabling failover mechanism # --- modparam("dispatcher", "flags", 2) # --- #Setting dispatcher parameters in AVP # --- modparam("dispatcher", "dst_avp", "$avp(AVP_DST)") modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)") modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)") modparam("dispatcher", "dstid_avp", "$avp(dsdstid)") # --- #Setting dispatcher result in PV variables # --- modparam("dispatcher", "attrs_pvname", "$var(attrs)") # --- #Enabling dispatcher algorithm according to call loads # --- modparam("dispatcher", "ds_hash_size",8) modparam("dispatcher", "ds_hash_expire", 3600) modparam("dispatcher", "ds_hash_initexpire", 60) # --- # Setting parameters for probing dispatcher destinations # --- modparam("dispatcher", "ds_ping_interval", 20) modparam("dispatcher", "ds_ping_from", "sip:kamailio1@") modparam("dispatcher", "ds_probing_mode", 1) modparam("dispatcher", "ds_probing_threshhold", 2) modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=480;code=404") # --- ... route[WITHINDLG] { if (has_totag()) { # sequential request withing a dialog should # take the path determined by record-routing #!ifdef WITH_LOADBALANCE if(is_method("BYE|CANCEL")){ xlog("L_ERROR","UBICAR BYE ds_load_update requesturi=$ru from=$fu method=$rm callid=$ci to=$tu reply=$mt rrcode=$rr rcode=$rs\n"); ds_load_update(); } #!endif ... } ... onreply_route[MANAGE_REPLY] { #!ifdef WITH_LOADBALANCE if(is_method("INVITE")) { if(status=~"2[0-9][0-9]") { xlog("L_ERROR","UBICAR setting ds_load_update requesturi=$ru from=$fu method=$rm callid=$ci to=$tu reply=$mt rrcode=$rr rcode=$rs"); 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); } } This is what i am getting from logs after the 2 call legs conversation completes: kam1 /usr/sbin/kamailio[4082]: ERROR: