Should I increase the registration timeout value? On Thu, May 8, 2014 at 3:49 PM, Maksim Solovjov <[email protected]> wrote: > I've set the registration timeout value as 600 on the client side, and > I am sending keep alive messages every 600 seconds. Maybe that might > be the reason??? > I've also tried to play with tcp_connection_lifetime, but it didn't > work out for me. Although, it seems that it works better, if I set > tcp_connection_lifetime to the value of 3600. > > On Thu, May 8, 2014 at 3:17 PM, Maksim Solovjov > <[email protected]> wrote: >> >> As far as I understand, you mesn that async reactor should be implemented in >> the sip server, and using this approach it will act much better under load. >> >> But at the moment I am testing with just 3 users. So server should perfom >> perfectly under this kind of load. >> >> Maybe it's vonfiguration problem? >> >>> On 08 May 2014, at 13:46, [email protected] wrote: >>> >>> The problem is that originally only UDP transport was considered which was >>> enough to run VoIP calls. Sending UDP is not blocking while using TCP is. >>> TCP connections don’t work well without using an asynchronous reactor, >>> especially under load the problem becomes visible. Ideally, the core should >>> be based on such concept but we are not there yet. >>> >>> Adrian >>> >>>> On 08 May 2014, at 06:32, Maksim Solovjov <[email protected]> wrote: >>>> >>>> Thank you for your answer. Can you elaborate on "voice switch and voice >>>> calls only"? >>>> >>>> So there is nothing I can do about it? To make a connection working fast >>>> and reliable? >>>> >>>>> On 08 May 2014, at 04:07, [email protected] wrote: >>>>> >>>>> You are confronted with the classic problem “this voice switch was >>>>> designed to handle UDP and voice calls only” problem. >>>>> >>>>> This is a VoIP industry level problem, which is yet to be properly >>>>> addressed by anyone in the field. >>>>> >>>>> Adrian >>>>> >>>>>> On 07 May 2014, at 21:16, Maksim Solovjov <[email protected]> >>>>>> wrote: >>>>>> >>>>>> Hello, >>>>>> >>>>>> From time to time I am encountering a problem while sending instant >>>>>> messages ( using sip MESSAGE request ) or sending call invites. >>>>>> Sometimes it works well and fast, sometimes it doesn't, sometimes >>>>>> messages are delivered very slowly. With two last options ( doesn't >>>>>> work at all and/or messages are delivered slowly ), I get the >>>>>> following errors: >>>>>> >>>>>> ERROR:core:tcp_blocking_connect: timeout 10 s elapsed from 10 s >>>>>> ERROR:core:tcpconn_connect: tcp_blocking_connect failed >>>>>> ERROR:core:tcp_send: connect failed >>>>>> ERROR:tm:msg_send: tcp_send failed >>>>>> ERROR:tm:t_forward_nonack: sending request failed >>>>>> >>>>>> My devices are behind NAT ( mobile phones ) and I am using pjsip with >>>>>> tcp connection. >>>>>> Moreover I am trying to set up a persistent connection and hope, that >>>>>> server will reuse it, when it needs to send something. I am sending >>>>>> keep-alive packets every 600 seconds and I am not using any STUN or >>>>>> TURN servers. >>>>>> >>>>>> My opensips and rtpproxy are running on EC2, so are behind NAT as well. >>>>>> And I don't have any STUN or TURN servers intalled ( should I install >>>>>> any of it? ) >>>>>> >>>>>> Any help, advice or suggestions would be highly appreciated! >>>>>> Here is my opensips.cfg, please help: >>>>>> >>>>>> debug=3 >>>>>> log_stderror=no >>>>>> log_facility=LOG_LOCAL1 >>>>>> >>>>>> fork=yes >>>>>> children=4 >>>>>> >>>>>> dns=no >>>>>> rev_dns=no >>>>>> >>>>>> disable_tcp=no >>>>>> >>>>>> listen=udp:private-ip:5060 # CUSTOMIZE ME >>>>>> listen=tcp:private-ip:5060 >>>>>> >>>>>> advertised_address="public-ip" >>>>>> alias="public-ip:5060" >>>>>> alias="domain.com:5060" #// NB!! domain address is not associated with >>>>>> public-ip ( using A record ) >>>>>> >>>>>> db_default_url="mysql://opensips:opensipsrw@database-url/opensips" >>>>>> >>>>>> mpath="/usr/lib64/opensips/modules/" >>>>>> >>>>>> ### MYSQL module >>>>>> loadmodule "db_mysql.so" >>>>>> >>>>>> ### Domain module >>>>>> loadmodule "domain.so" >>>>>> modparam("domain", "db_url", >>>>>> "mysql://opensips:opensipsrw@database-url/opensips") >>>>>> >>>>>> >>>>>> #### SIGNALING module >>>>>> loadmodule "signaling.so" >>>>>> >>>>>> #### StateLess module >>>>>> loadmodule "sl.so" >>>>>> >>>>>> #### Transaction Module >>>>>> loadmodule "tm.so" >>>>>> modparam("tm", "fr_timer", 5) >>>>>> modparam("tm", "fr_inv_timer", 30) >>>>>> modparam("tm", "restart_fr_on_each_reply", 0) >>>>>> modparam("tm", "onreply_avp_mode", 1) >>>>>> >>>>>> #### Record Route Module >>>>>> loadmodule "rr.so" >>>>>> /* do not append from tag to the RR (no need for this script) */ >>>>>> modparam("rr", "append_fromtag", 0) >>>>>> >>>>>> #### MAX ForWarD module >>>>>> loadmodule "maxfwd.so" >>>>>> >>>>>> #### SIP MSG OPerationS module >>>>>> loadmodule "sipmsgops.so" >>>>>> >>>>>> #### FIFO Management Interface >>>>>> loadmodule "mi_fifo.so" >>>>>> modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo") >>>>>> modparam("mi_fifo", "fifo_mode", 0666) >>>>>> >>>>>> #### URI module >>>>>> loadmodule "uri.so" >>>>>> modparam("uri", "use_uri_table", 0) >>>>>> >>>>>> #### USeR LOCation module >>>>>> loadmodule "usrloc.so" >>>>>> modparam("usrloc", "nat_bflag", "NAT") >>>>>> modparam("usrloc", "db_mode", 0) >>>>>> >>>>>> #### REGISTRAR module >>>>>> loadmodule "registrar.so" >>>>>> modparam("registrar", "tcp_persistent_flag", "TCP_PERSISTENT") >>>>>> modparam("registrar", "received_avp", "$avp(rcv)") >>>>>> >>>>>> loadmodule "nathelper.so" >>>>>> modparam("nathelper", "received_avp", "$avp(rcv)") >>>>>> >>>>>> loadmodule "rtpproxy.so" >>>>>> modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:12221") >>>>>> >>>>>> #### ACCounting module >>>>>> loadmodule "acc.so" >>>>>> modparam("acc", "early_media", 0) >>>>>> modparam("acc", "report_cancels", 0) >>>>>> modparam("acc", "detect_direction", 0) >>>>>> modparam("acc", "failed_transaction_flag", "ACC_FAILED") >>>>>> modparam("acc", "log_flag", "ACC_DO") >>>>>> modparam("acc", "log_missed_flag", "ACC_MISSED") >>>>>> >>>>>> >>>>>> route{ >>>>>> >>>>>> force_rport(); #nathelper >>>>>> if (nat_uac_test("23")) { #nathelper >>>>>> if (is_method("REGISTER")) { >>>>>> fix_nated_register(); #nathelper >>>>>> setbflag(NAT); >>>>>> } else { >>>>>> fix_nated_contact(); #nathelper >>>>>> setflag(NAT); >>>>>> } >>>>>> } >>>>>> >>>>>> if (!mf_process_maxfwd_header("10")) { >>>>>> sl_send_reply("483","Too Many Hops"); >>>>>> exit; >>>>>> } >>>>>> if (has_totag()) { >>>>>> # sequential requests within a dialog should >>>>>> # take the path determined by record-routing >>>>>> if (loose_route()) { >>>>>> >>>>>> if (is_method("BYE")) { >>>>>> setflag(ACC_DO); # do accounting ... >>>>>> setflag(ACC_FAILED); # ... even if the >>>>>> transaction fails >>>>>> } else if (is_method("INVITE")) { >>>>>> # even if in most of the cases is >>>>>> useless, do RR for >>>>>> # re-INVITEs alos, as some buggy >>>>>> clients do change route set >>>>>> # during the dialog. >>>>>> record_route(); >>>>>> } >>>>>> >>>>>> if (check_route_param("nat=yes")) >>>>>> setflag(NAT); >>>>>> >>>>>> # route it out to whatever destination was set >>>>>> by loose_route() >>>>>> # in $du (destination URI). >>>>>> route(relay); >>>>>> } else { >>>>>> if ( is_method("ACK") ) { >>>>>> if ( t_check_trans() ) { >>>>>> # non loose-route, but >>>>>> stateful ACK; must be an ACK after >>>>>> # a 487 or e.g. 404 from upstream >>>>>> server >>>>>> t_relay(); >>>>>> exit; >>>>>> } else { >>>>>> # ACK without matching transaction -> >>>>>> # ignore and discard >>>>>> exit; >>>>>> } >>>>>> } >>>>>> sl_send_reply("404","Not here"); >>>>>> } >>>>>> exit; >>>>>> } >>>>>> # CANCEL processing >>>>>> if (is_method("CANCEL")) >>>>>> { >>>>>> if (t_check_trans()) >>>>>> t_relay(); >>>>>> exit; >>>>>> } >>>>>> >>>>>> t_check_trans(); >>>>>> >>>>>> if ( !(is_method("REGISTER") ) ) { >>>>>> if (from_uri==myself) >>>>>> { >>>>>> } else { >>>>>> # if caller is not local, then called number >>>>>> must be local >>>>>> if (!uri==myself) { >>>>>> send_reply("403","Rely forbidden"); >>>>>> exit; >>>>>> } >>>>>> } >>>>>> } >>>>>> # preloaded route checking >>>>>> if (loose_route()) { >>>>>> xlog("L_ERR", >>>>>> "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]"); >>>>>> if (!is_method("ACK")) >>>>>> sl_send_reply("403","Preload Route denied"); >>>>>> exit; >>>>>> } >>>>>> >>>>>> # record routing >>>>>> if (!is_method("REGISTER|MESSAGE")) >>>>>> record_route(); >>>>>> >>>>>> # account only INVITEs >>>>>> if (is_method("INVITE")) { >>>>>> >>>>>> setflag(ACC_DO); # do accounting >>>>>> } >>>>>> >>>>>> if (!uri==myself) { >>>>>> append_hf("P-hint: outbound\r\n"); >>>>>> route(relay); >>>>>> } >>>>>> # requests for my domain >>>>>> if (is_method("PUBLISH|SUBSCRIBE")) >>>>>> { >>>>>> sl_send_reply("503", "Service Unavailable"); >>>>>> exit; >>>>>> } >>>>>> >>>>>> if (is_method("REGISTER")) >>>>>> { >>>>>> setflag(TCP_PERSISTENT); >>>>>> if (!save("location")) >>>>>> sl_reply_error(); >>>>>> >>>>>> exit; >>>>>> } >>>>>> >>>>>> if ($rU==NULL) { >>>>>> # request with no Username in RURI >>>>>> sl_send_reply("484","Address Incomplete"); >>>>>> exit; >>>>>> } >>>>>> # do lookup with method filtering >>>>>> if (!lookup("location","m")) { >>>>>> t_newtran(); >>>>>> t_reply("404", "Not Found"); >>>>>> exit; >>>>>> } >>>>>> >>>>>> if (isbflagset(NAT)) setflag(NAT); >>>>>> >>>>>> # when routing via usrloc, log the missed calls also >>>>>> setflag(ACC_MISSED); >>>>>> route(relay); >>>>>> } >>>>>> >>>>>> route[relay] { >>>>>> # for INVITEs enable some additional helper routes >>>>>> if (is_method("INVITE")) { >>>>>> >>>>>> if (isflagset(NAT)) { >>>>>> rtpproxy_offer("ro"); >>>>>> } >>>>>> >>>>>> t_on_branch("per_branch_ops"); >>>>>> t_on_reply("handle_nat"); >>>>>> t_on_failure("missed_call"); >>>>>> >>>>>> } >>>>>> >>>>>> if (isflagset(NAT)) { >>>>>> add_rr_param(";nat=yes"); >>>>>> } >>>>>> >>>>>> if (!t_relay()) { >>>>>> send_reply("500","Internal Error"); >>>>>> }; >>>>>> exit; >>>>>> } >>>>>> >>>>>> branch_route[per_branch_ops] { >>>>>> xlog("new branch at $ru\n"); >>>>>> } >>>>>> >>>>>> >>>>>> onreply_route[handle_nat] { >>>>>> if (nat_uac_test("1")) >>>>>> fix_nated_contact(); >>>>>> if ( isflagset(NAT) ) >>>>>> rtpproxy_answer("ro"); >>>>>> xlog("incoming reply\n"); >>>>>> } >>>>>> >>>>>> failure_route[missed_call] { >>>>>> if (t_was_cancelled()) { >>>>>> exit; >>>>>> } >>>>>> >>>>>> # uncomment the following lines if you want to block client >>>>>> # redirect based on 3xx replies. >>>>>> ##if (t_check_status("3[0-9][0-9]")) { >>>>>> ##t_reply("404","Not found"); >>>>>> ## exit; >>>>>> ##} >>>>>> >>>>>> } >>>>>> >>>>>> >>>>>> Thank you in advance! >>>>>> >>>>>> _______________________________________________ >>>>>> Users mailing list >>>>>> [email protected] >>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users >>>>> >>>>> >>>>> _______________________________________________ >>>>> Users mailing list >>>>> [email protected] >>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users >>>> >>>> _______________________________________________ >>>> Users mailing list >>>> [email protected] >>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users >>> >>> >>> _______________________________________________ >>> Users mailing list >>> [email protected] >>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________ Users mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/users
