[OpenSIPS-Users] OpenSER Dispatcher Failures
Alec Fett
al at boberdoo.com
Fri Aug 7 19:24:28 CEST 2009
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:openser@localhost/openser")
modparam("dispatcher", "ds_ping_method", "OPTIONS") #OPTIONS OR INFO
modparam("dispatcher", "ds_ping_from", "sip:openser at siprouter.private")
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:service at XXXXXXXXXXX16:5060}
Aug 7 10:49:33 phonev2 /usr/sbin/openser[28587]:
DBG:core:get_hdr_field: <To> [39]; uri=[sip:service at XXXXXXXXXXX16:5060]
Aug 7 10:49:33 phonev2 /usr/sbin/openser[28587]:
DBG:core:get_hdr_field: to body [sut
<sip:service at 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
More information about the Users
mailing list