[OpenSIPS-Users] OpenSER Dispatcher Failures

Bogdan-Andrei Iancu bogdan at voice-system.ro
Wed Aug 12 18:25:31 CEST 2009


So, if no reply comes from your Asterisk box in 3 seconds, a timeout 
event will be generated. You may consider doing parallel tracing in 
order to see if the delay (that generates timeout) does really reflect 
at network level.

also try printing from opensips cfg the current time at relay time and 
failure route time (print callid also to be able to match them).

Regards,
Bogdan

Alec Fett wrote:
>
> modparam("tm", "fr_timer", 3)
> modparam("tm", "fr_inv_timer", 5)
>
> Thanks,
>
> Alec
>
> Bogdan-Andrei Iancu wrote:
>> Hi Alec,
>>
>> The script looks ok - what are the values for fr_timer and 
>> fr_inv_timer in TM module ?
>>
>> Regards,
>> Bogdan
>>
>> Alec Fett wrote:
>>> 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
>>>
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>   
>>
>




More information about the Users mailing list