[SR-Users] issues with dispatcher rerouting to next server when getting a 500 from freeswitch

Charles Chance charles.chance at sipcentric.com
Sat Sep 14 10:54:41 CEST 2013


Hi,

You describe what you are trying to achieve, but not the result you are
seeing.

One thing I noticed is that in your failure route you set
t_on_failure("DISPATCH"), but should it not be t_on_failure("RTF_DISPATCH")?

Regards,

Charles
 On 14 Sep 2013 08:33, "Joseph Watson" <joseph.watson at veranetworks.com>
wrote:

> Hello Everyone,
>
> I am really having an issue getting kamailio to try another dispatch route
> when I get a 500 back from one of my freeswitch servers.
>
> Currently I have a list of freeswitch servers located in my dispatch.list
> file. If one of then is to busy it will respond with a 500 Maximum Call in
> Progress. I am trying to get Kamailio to go to the next route in the
> dispatch.list when it get one of these 503 and if it should exhaust the
> whole list respond with a 503. Here is my kamailio config
>
>
> ####### Global Parameters #########
>
> #!ifdef WITH_DEBUG
> debug=4
> log_stderror=yes
> #!else
> debug=4
> log_stderror=yes
> #!endif
>
> memdbg=5
> memlog=5
>
> log_facility=LOG_LOCAL0
>
> fork=yes
> children=10
>
> /* comment the next line to enable TCP */
> disable_tcp=yes
>
> /* uncomment the next line to disable the auto discovery of local aliases
>    based on revers DNS on IPs (default on) */
> auto_aliases=no
>
> /* uncomment and configure the following line if you want Kamailio to
>    bind on a specific interface/port/proto (default bind on all available)
> */
> listen=udp:eth0:5060
>
> sip_warning=no
>
> ####### Modules Section ########
>
> #set module path
>
> mpath="/usr/local/lib64/kamailio/modules_k/:/usr/local/lib64/kamailio/modules/"
>
> loadmodule "mi_fifo.so"
> loadmodule "kex.so"
> loadmodule "tm.so"
> loadmodule "tmx.so"
> loadmodule "sl.so"
> loadmodule "rr.so"
> loadmodule "pv.so"
> loadmodule "maxfwd.so"
> loadmodule "textops.so"
> loadmodule "siputils.so"
> loadmodule "xlog.so"
> loadmodule "sanity.so"
> loadmodule "ctl.so"
> loadmodule "mi_rpc.so"
> loadmodule "acc.so"
> loadmodule "dispatcher.so"
>
>
> # ----------------- setting module-specific parameters ---------------
>
> # ----- mi_fifo params -----
> modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
>
> modparam("xlog", "buf_size", 8192)
>
> # ----- rr params -----
> # add value to ;lr param to cope with most of the UAs
> modparam("rr", "enable_full_lr", 1)
> # do not append from tag to the RR (no need for this script)
> modparam("rr", "append_fromtag", 0)
>
>
> # ----- acc params -----
> modparam("acc", "log_flag", 1)
> modparam("acc", "failed_transaction_flag", 3)
> modparam("acc", "log_extra",
> "src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd;src_ip=$si")
>
> # ----- tm params -----
> modparam("tm", "fr_timer", 2000)
> modparam("tm", "fr_inv_timer", 40000)
> modparam("tm", "remap_503_500", 0)
>
> # ----- dispatcher params -----
> modparam("dispatcher", "list_file",
> "/usr/local/etc/kamailio/dispatcher.list")
> modparam("dispatcher", "flags", 2)
> modparam("dispatcher", "dst_avp", "$avp(i:271)")
> modparam("dispatcher", "grp_avp", "$avp(i:272)")
> modparam("dispatcher", "cnt_avp", "$avp(i:273)")
>
> #modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")
> #modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")
> #modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")
> #modparam("dispatcher", "ds_append_branch", 1)
> ####### Routing Logic ########
>
>
> # main request routing logic
>
> route {
>         append_hf("X-VSIP-CUST-IP: $si\r\n");
>         route(DISPATCH);
>
>         route(RELAY);
> }
>
> # Dispatch requests
> route[DISPATCH] {
>         # round robin dispatching on gateways group '1'
>         if(!ds_select_dst("1", "4"))
>         {
>                 send_reply("404", "No destination");
>                 exit;
>         }
> #       xlog("L_DBG", "--- SCRIPT: going to <$ru> via <$du>\n");
>         t_on_failure("RTF_DISPATCH");
>         return;
> }
>
> # Sample 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("DISPATCH");
>                         route(RELAY);
>                         exit;
>                 }
>         }
> }
>
> route[RELAY] {
> if (!t_relay()) {
>                 send_reply("503", "LB01 - All Circuits Are Busy");
> #               sl_reply_error();
>         }
>         exit;
> }
>
> I am very new to kamailio and still learning my way around. Any help you
> can provide with be fantastic!
>
> Thank you,
> Joe Watson
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>

-- 
www.sipcentric.com

Follow us on twitter @sipcentric <http://twitter.com/sipcentric>

Sipcentric Ltd. Company registered in England & Wales no. 7365592. Registered 
office: Unit 10 iBIC, Birmingham Science Park, Holt Court South, Birmingham 
B7 4EJ.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20130914/76bf151a/attachment.html>


More information about the sr-users mailing list