Hi,
For a basic call, when the UAS does not send a 200 within approx 4 seconds, the OpenSER has a timer fire and sends a 408 to the UAC and a Cancel to the UAS. This only allows one ring on the terminating phone before the call is dropped.. I'm attaching the log and Wireshark/snoop capture file. I'll put the openser config file inline here. Please advise:
# # openser_vm.cfg # # ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=no # (cmd line: -E)
maxbuffer=1048576
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) #reply_to_via=1 children=32 log_facility=LOG_LOCAL5 dns_use_search_list=no dns_servers_no=1 user="sipproxy" group="sipproxy"
# Local IP address/port pairs to listen to # Set the following IP addresses to the value of the local e1000g0 interface listen=udp:65.185.233.55:5061 listen=udp:65.185.233.55:5062
# Alias IP address/port pair values will be in the Req URI when the # OpenSER is being load balanced with a BIG IP server # Set the IP address to the value of the associated blade # of the BIG IP that is load balancing for the SIP Proxy server. alias=65.185.233.104:5061 alias=65.185.233.104:5062
# LOAD OpenSER MODULES mpath="/sw/lib/openser/modules/" loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "acc.so" loadmodule "mi_fifo.so" loadmodule "enum.so" loadmodule "perl.so" loadmodule "xlog.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic ------------------- modparam("acc", "log_level", 2) modparam("acc", "log_flag", 1) modparam("acc","report_cancels", 1) modparam("acc","failed_transaction_flag", 1) modparam("acc","log_extra", "req_uri=$rU") modparam("tm", "fr_timer", 2) modparam("tm","fr_inv_timer",4) modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") modparam("perl", "filename", "/sw/lib/openser/perl/openser_twc_sip_proxy_3.0.pl")
# main routing logic
route{ # initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; };
if (msg:len >= 2048 ) { sl_send_reply("513", "Message too big"); exit; };
# we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should take the # path determined by record-routing if (loose_route()) { # mark routing logic in request append_hf("P-hint: rr-enforced\r\n"); route(1); };
if (!uri==myself) { route(1); };
if (method=="OPTIONS") { sl_send_reply("200", "OK"); exit; }
############################################################## # TWC: dst_port 5062 indicates Message Waiting Indicator ############################################################## if (dst_port==5062 && method=="NOTIFY") {
xlog("L_DBG", "TWC: received incoming message:\n <$mb>\n"); perl_exec("twc_proc_vm_mwi");
if ($rc==-1) { log("TWC: COULD NOT PARSE THE MWI TRIGGER"); sl_send_reply("400", "Bad Request"); exit; }
# The enum_query() call will form an ENUM (NAPTR DNS) request from # the user part of the Req URI and the passed MWI server and send # it to the ENUM server defined in resolv.conf. enum_query("mwi.ex.e164.rr.com"); if ($rc==1) { log("MWI ENUM QUERY SUCCEEDED"); setflag(1); route(1); } else { log("MWI ENUM QUERY FAILED"); sl_send_reply("404", "Not Found"); exit; } }
############################################################## # TWC: dst_port 5061 indicates VM Outbound dial trigger ############################################################## if (dst_port==5061 && method=="INVITE") {
xlog("L_DBG", "TWC: received incoming message:\n <$mb>\n"); perl_exec("twc_proc_vm_outdial");
if ($rc==-1) { log("TWC: COULD NOT PARSE THE VM OUTDIAL TRIGGER"); sl_send_reply("400", "Bad Request"); exit; }
# The enum_query() call will form an ENUM (NAPTR DNS) request from # the user part of the Req URI and the passed VMO server and send # it to the ENUM server defined in resolv.conf. enum_query("vmo.ex.e164.rr.com"); if ($rc==1) { log("VMO ENUM QUERY SUCCEEDED"); setflag(1); # Use pseudo vars to set REQ URI User to the original Req URI User $rU = $oU; route(1); } else { log("ENUM QUERY FAILED"); sl_send_reply("404", "Not Found"); exit; } } }
##################################################### # Default Message Handler ##################################################### route[1] {
# Send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; exit; }
Then why did you set the fr_inv_timer to 4?
modparam("tm","fr_inv_timer",4)
see: http://openser.org/docs/modules/1.2.x/tm.html#AEN138
Regards, Ovidiu Sas
On 6/13/07, Tim Madorma tmadorma@gmail.com wrote:
Hi,
For a basic call, when the UAS does not send a 200 within approx 4 seconds, the OpenSER has a timer fire and sends a 408 to the UAC and a Cancel to the UAS. This only allows one ring on the terminating phone before the call is dropped.. I'm attaching the log and Wireshark/snoop capture file. I'll put the openser config file inline here. Please advise:
# # openser_vm.cfg # # ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=no # (cmd line: -E)
maxbuffer=1048576
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) #reply_to_via=1 children=32 log_facility=LOG_LOCAL5 dns_use_search_list=no dns_servers_no=1 user="sipproxy" group="sipproxy"
# Local IP address/port pairs to listen to # Set the following IP addresses to the value of the local e1000g0 interface listen=udp:65.185.233.55:5061 listen=udp:65.185.233.55:5062
# Alias IP address/port pair values will be in the Req URI when the # OpenSER is being load balanced with a BIG IP server # Set the IP address to the value of the associated blade # of the BIG IP that is load balancing for the SIP Proxy server. alias=65.185.233.104:5061 alias=65.185.233.104:5062
# LOAD OpenSER MODULES mpath="/sw/lib/openser/modules/" loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "acc.so" loadmodule "mi_fifo.so" loadmodule "enum.so" loadmodule "perl.so" loadmodule "xlog.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic ------------------- modparam("acc", "log_level", 2) modparam("acc", "log_flag", 1) modparam("acc","report_cancels", 1) modparam("acc","failed_transaction_flag", 1) modparam("acc","log_extra", "req_uri=$rU") modparam("tm", "fr_timer", 2) modparam("tm","fr_inv_timer",4) modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") modparam("perl", "filename", "/sw/lib/openser/perl/openser_twc_sip_proxy_3.0.pl")
# main routing logic
route{ # initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; };
if (msg:len >= 2048 ) { sl_send_reply("513", "Message too big"); exit; }; # we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol if (!method=="REGISTER") record_route(); # subsequent messages withing a dialog should take the # path determined by record-routing if (loose_route()) { # mark routing logic in request append_hf("P-hint: rr-enforced\r\n"); route(1); }; if (!uri==myself) { route(1); }; if (method=="OPTIONS") { sl_send_reply("200", "OK"); exit; } ############################################################## # TWC: dst_port 5062 indicates Message Waiting Indicator ############################################################## if (dst_port==5062 && method=="NOTIFY") { xlog("L_DBG", "TWC: received incoming message:\n <$mb>\n"); perl_exec("twc_proc_vm_mwi"); if ($rc==-1) { log("TWC: COULD NOT PARSE THE MWI TRIGGER"); sl_send_reply("400", "Bad Request"); exit; } # The enum_query() call will form an ENUM (NAPTR DNS) request from # the user part of the Req URI and the passed MWI server and send # it to the ENUM server defined in resolv.conf. enum_query("mwi.ex.e164.rr.com"); if ($rc==1) { log("MWI ENUM QUERY SUCCEEDED"); setflag(1); route(1); } else { log("MWI ENUM QUERY FAILED"); sl_send_reply("404", "Not Found"); exit; } } ############################################################## # TWC: dst_port 5061 indicates VM Outbound dial trigger ############################################################## if (dst_port==5061 && method=="INVITE") { xlog("L_DBG", "TWC: received incoming message:\n <$mb>\n"); perl_exec("twc_proc_vm_outdial"); if ($rc==-1) { log("TWC: COULD NOT PARSE THE VM OUTDIAL TRIGGER"); sl_send_reply("400", "Bad Request"); exit; } # The enum_query() call will form an ENUM (NAPTR DNS) request from # the user part of the Req URI and the passed VMO server and send # it to the ENUM server defined in resolv.conf. enum_query("vmo.ex.e164.rr.com"); if ($rc==1) { log("VMO ENUM QUERY SUCCEEDED"); setflag(1); # Use pseudo vars to set REQ URI User to the original
Req URI User $rU = $oU; route(1); } else { log("ENUM QUERY FAILED"); sl_send_reply("404", "Not Found"); exit; } } }
##################################################### # Default Message Handler ##################################################### route[1] {
# Send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; exit;
}
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
thanks much. I inherited a config file and didn't catch that.
On 6/13/07, Ovidiu Sas sip.nslu@gmail.com wrote:
Then why did you set the fr_inv_timer to 4?
modparam("tm","fr_inv_timer",4)
see: http://openser.org/docs/modules/1.2.x/tm.html#AEN138
Regards, Ovidiu Sas
On 6/13/07, Tim Madorma tmadorma@gmail.com wrote:
Hi,
For a basic call, when the UAS does not send a 200 within approx 4 seconds, the OpenSER has a timer fire and sends a 408 to the UAC and a Cancel to the UAS. This only allows one ring on the terminating phone before the call is dropped.. I'm attaching the log and Wireshark/snoop capture file. I'll put the openser config file inline here. Please advise:
# # openser_vm.cfg # # ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=no # (cmd line: -E)
maxbuffer=1048576
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) #reply_to_via=1 children=32 log_facility=LOG_LOCAL5 dns_use_search_list=no dns_servers_no=1 user="sipproxy" group="sipproxy"
# Local IP address/port pairs to listen to # Set the following IP addresses to the value of the local e1000g0 interface listen=udp:65.185.233.55:5061 listen=udp:65.185.233.55:5062
# Alias IP address/port pair values will be in the Req URI when the # OpenSER is being load balanced with a BIG IP server # Set the IP address to the value of the associated blade # of the BIG IP that is load balancing for the SIP Proxy server. alias=65.185.233.104:5061 alias=65.185.233.104:5062
# LOAD OpenSER MODULES mpath="/sw/lib/openser/modules/" loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "acc.so" loadmodule "mi_fifo.so" loadmodule "enum.so" loadmodule "perl.so" loadmodule "xlog.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic ------------------- modparam("acc", "log_level", 2) modparam("acc", "log_flag", 1) modparam("acc","report_cancels", 1) modparam("acc","failed_transaction_flag", 1) modparam("acc","log_extra", "req_uri=$rU") modparam("tm", "fr_timer", 2) modparam("tm","fr_inv_timer",4) modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") modparam("perl", "filename", "/sw/lib/openser/perl/openser_twc_sip_proxy_3.0.pl")
# main routing logic
route{ # initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; };
if (msg:len >= 2048 ) { sl_send_reply("513", "Message too big"); exit; }; # we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol if (!method=="REGISTER") record_route(); # subsequent messages withing a dialog should take the # path determined by record-routing if (loose_route()) { # mark routing logic in request append_hf("P-hint: rr-enforced\r\n"); route(1); }; if (!uri==myself) { route(1); }; if (method=="OPTIONS") { sl_send_reply("200", "OK"); exit; } ############################################################## # TWC: dst_port 5062 indicates Message Waiting Indicator ############################################################## if (dst_port==5062 && method=="NOTIFY") { xlog("L_DBG", "TWC: received incoming message:\n <$mb>\n"); perl_exec("twc_proc_vm_mwi"); if ($rc==-1) { log("TWC: COULD NOT PARSE THE MWI TRIGGER"); sl_send_reply("400", "Bad Request"); exit; } # The enum_query() call will form an ENUM (NAPTR DNS) request from # the user part of the Req URI and the passed MWI server and send # it to the ENUM server defined in resolv.conf. enum_query("mwi.ex.e164.rr.com"); if ($rc==1) { log("MWI ENUM QUERY SUCCEEDED"); setflag(1); route(1); } else { log("MWI ENUM QUERY FAILED"); sl_send_reply("404", "Not Found"); exit; } } ############################################################## # TWC: dst_port 5061 indicates VM Outbound dial trigger ############################################################## if (dst_port==5061 && method=="INVITE") { xlog("L_DBG", "TWC: received incoming message:\n <$mb>\n"); perl_exec("twc_proc_vm_outdial"); if ($rc==-1) { log("TWC: COULD NOT PARSE THE VM OUTDIAL TRIGGER"); sl_send_reply("400", "Bad Request"); exit; } # The enum_query() call will form an ENUM (NAPTR DNS) request from # the user part of the Req URI and the passed VMO server and send # it to the ENUM server defined in resolv.conf. enum_query("vmo.ex.e164.rr.com"); if ($rc==1) { log("VMO ENUM QUERY SUCCEEDED"); setflag(1); # Use pseudo vars to set REQ URI User to the original
Req URI User $rU = $oU; route(1); } else { log("ENUM QUERY FAILED"); sl_send_reply("404", "Not Found"); exit; } } }
##################################################### # Default Message Handler ##################################################### route[1] {
# Send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; exit;
}
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users