When I was testing my dispatcher setup with sipp, I noticed after a 
number of calls go through, failure_route will get called, even though
I have a generous timeout value and the gateways are under no 
significant load.

In my manual, (with phone) tests, the dispatcher never encountered the 
problem (until I had a live number on, and many calls went through), so 
perhaps it is more related to the speed of calls coming in...

I had the failure_route mark the gateway inactive so I would no as soon 
as it occurred... a good number of calls went through before the problem 
was encountered.

####### Global Parameters #########

debug=6
log_stderror=no
log_facility=LOG_LOCAL0

fork=yes
children=4

/* uncomment the next line to disable TCP (default on) */
disable_tcp=yes

/* uncomment the next line to enable the auto temporary blacklisting of
   not available destinations (default disabled) */
#disable_dns_blacklist=no

/* uncomment the next line to enable IPv6 lookup after IPv4 dns
   lookup failures (default disabled) */
#dns_try_ipv6=yes

/* uncomment the next line to disable the auto discovery of local aliases
   based on revers DNS on IPs (default on) */
#auto_aliases=no

port=5060
listen=udp:XXX.XXX.XXX.XXX:5060


####### Modules Section ########

#set module path
mpath="/usr/lib/openser/modules/"


#basic modules for load balancing

loadmodule "maxfwd.so"
loadmodule "sl.so"
loadmodule "dispatcher.so"
loadmodule "tm.so"


/* additional modules loaded */
loadmodule "mysql.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
loadmodule "xlog.so"
loadmodule "exec.so"


# ----------------- setting module-specific parameters ---------------

#TM params

modparam("tm", "fr_timer", 3)
modparam("tm", "fr_inv_timer", 5)


# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
modparam("mi_fifo", "fifo_mode", 0666)

#-----dispatcher params------
# modparam("dispatcher", "force_dst", 1)
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", "list_file", "/etc/openser/dispatcher.list") 
#text file config
modparam("dispatcher", "db_url", 
"mysql://openser:open...@localhost/openser")


modparam("dispatcher", "ds_ping_method", "OPTIONS")   #OPTIONS OR INFO
modparam("dispatcher", "ds_ping_from", "sip:[email protected]")
modparam("dispatcher", "ds_ping_interval", 5)
modparam("dispatcher", "ds_probing_threshhold", 2)





####### Routing Logic ########


# main request routing logic

route{
xlog("L_INFO","Route Called :)\n");

    if( src_ip== 10.1.10.0/24){
        route(1);
    }
    else{
        sl_send_reply("403","Forbidden");
        xlog("L_INFO", "Unauthorized IP address $si TO $ou Sent 403\n");
        exit;
    }
 
}

route[1]{
    if(ds_select_dst("1","0")){
        t_on_reply("1");
        t_on_failure("1");
        t_relay();
    }
    else{
        if(is_method("INVITE")){
            sl_send_reply("600","Busy everywhere.");
            xlog("L_INFO","ALL DESTINATIONS FAILED!\n");
            #exec_msg("/usr/bin/nohup /usr/scripts/sip-failed.php 
all_destinations_down_1 '$si' '$rU' '$fu'");
            exit;
        }
    }
}


failure_route[1]{
    xlog("L_INFO","Called failure_route!\n");
    ds_mark_dst("0");
   
    if(ds_next_dst()){
        xlog("L_INFO","Failure route, trying again\n");
        t_on_reply("1");
        t_on_failure("1");
        t_relay();
    }
    else{
        if(is_method("INVITE")){
            t_reply("503","Service Unavailable.");
            xlog("L_INFO","ALL DESTINATIONS FAILED!\n");
           #exec_msg("/usr/bin/nohup /usr/scripts/sip-failed.php 
all_destinations_down_2 '$si' '$rU' '$fu'");
        }
    }
###############End of Config################################



Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: DBG:core:parse_to: end 
of header reached, state=10
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: DBG:core:parse_to: 
display={sut}, ruri={sip:serv...@xxxxxxxxxxx16:5060}
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
DBG:core:get_hdr_field: <To> [39]; uri=[sip:serv...@xxxxxxxxxxx16:5060]
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
DBG:core:get_hdr_field: to body [sut 
<sip:serv...@xxxxxxxxxxx16:5060>#015#012]
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
DBG:core:get_hdr_field: cseq <CSeq>: <1> <INVITE>
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
DBG:core:parse_headers: flags=8
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
DBG:tm:t_reply_matching: hash 500 label 764062811 branch 0
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
DBG:tm:t_reply_matching: REF_UNSAFE: after is 1
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
DBG:tm:t_reply_matching: reply matched (T=0x7f0bec0c1198)!
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: DBG:tm:t_check: 
end=0x7f0bec0c1198
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: DBG:tm:reply_received: 
org. status uas=100, uac[0]=0 local=0 is_invite=1)
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
WARNING:core:run_actions: null action list (rec_level=1)
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
DBG:tm:t_should_relay_response: T_code=100, new_code=100
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: DBG:tm:relay_reply: 
branch=0, save=0, relay=-1
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: DBG:tm:set_timer: 
relative timeout is 5
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
DBG:tm:insert_timer_unsafe: [1]: 0x7f0bec0c13e8 (46)
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: DBG:tm:t_unref: 
UNREF_UNSAFE: after is 0
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: 
DBG:core:destroy_avp_list: destroying list (nil)
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28587]: DBG:core:receive_msg: 
cleaning up
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28592]: DBG:tm:utimer_routine: 
timer routine:4,tl=0x7f0bec0b6258 next=(nil), timeout=42000000
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28592]: DBG:tm:timer_routine: 
timer routine:1,tl=0x7f0bec047570 next=0x7f0bec043e48, timeout=42
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28592]: 
DBG:tm:final_response_handler: stop retr. and send CANCEL (0x7f0bec047320)
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28592]: 
DBG:tm:t_should_relay_response: T_code=100, new_code=408
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28592]: DBG:tm:t_pick_branch: 
picked branch 0, code 408
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28592]: 
DBG:tm:is_3263_failure: dns-failover test: branch=0, last_recv=408, flags=2
Aug  7 10:49:33 phonev2 /usr/sbin/openser[28592]: Called failure_route!

^^That was the first time failure_route was called...

I even commented out my alert script, in case it was screwing up 
openSER... no difference.
Is there something wrong with my routing script?

Regards,

Alec



_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to