Hi Henning/All, After some digging we realized the system was already retrying thanks to this block on kamailio.cfg
# Try next destionations in failure route 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())) { if(ds_next_dst()) { t_on_failure("RTF_DISPATCH"); route(RELAY); exit; } } } How can we control the maximum number of retries? Seems to be infinite at the moment? Or !t_branch_replied()means that each backend can only reply once? Thanks you With best wishes, Unai Rodriguez On 6 Dec 2022, 10:04 +0100, Henning Westerholt <h...@gilawa.com>, wrote: > Hello, > > you can implement this by using a failure_route. There is one example in the > dispatcher module configuration how to do it. > > Cheers, > > Henning > > -- > Henning Westerholt – https://skalatan.de/blog/ > Kamailio services – https://gilawa.com > > From: sr-users <sr-users-boun...@lists.kamailio.org> On Behalf Of Unai > Rodriguez > Sent: Saturday, December 3, 2022 5:16 PM > To: sr-users@lists.kamailio.org > Subject: [SR-Users] How to have Kamailio retry backends > > Dear List, > > We’re using Kamailio to load balance MRCP requests to multiple backend groups > with a configuration as follows: > > # kamailio.cfg > ... > ... > route[DISPATCH] { > if($ua=="mrcp_backend_1") { > if(!ds_select_dst("1", "4")) { > send_reply("404", "No > destination"); > exit; > } > } > if($ua=="mrcp_backend_2") { > if(!ds_select_dst("2", "4")) { > send_reply("404", "No > destination"); > exit; > } > } > xlog("L_DBG", "--- SCRIPT: going to <$ru> via <$du>\n"); > t_on_failure("RTF_DISPATCH"); > route(RELAY); > exit; > } > ... > ... > > # dispatcher.list > 1 sip:mrcp01.server.int:8060;transport=tcp > 1 sip:mrcp02.server.int:8060;transport=tcp > > 2 sip:mrcp03.server.int:8060;transport=tcp > 2 sip:mrcp04.server.int:8060;transport=tcp > > With this configuration, Kamailio load balances the initial SIP INVITE among > the MRCP servers. After the INVITE, the service communicates directly to the > MRCP servers via SIP (for hanging up the call), MRCPv2 (for sending speech > control messages), and RTP (for sending audio). > > We would like to implement a configurable number of retries, so that if a > particular backend times out, Kamailio would retry X times to other > backend(s). In short, something equivalent to HAProxy’s retries, but for > Kamailio. This probably implies having Kamailio always as part of our > communication (not just load balancing the initial SIP INVITE). > > I haven’t been able to find much information about this, could someone > provide some pointers? > > Thank you so much > > With best wishes, > Unai Rodriguez
__________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users