Hi, It's your nat traversal. Capture your call and examine the media ip addresses in the SDP of all invites. That should give you a clue what's wrong.
Regards, Ali Pey On Mon, Aug 6, 2012 at 1:47 PM, siponcloud user <[email protected]> wrote: > Thanks, that really helped. > > I am still having problem with the following: when user x calls user y, > audio is one-way, and when audio y calls x, audio is two-way. Why is it so? > What could be the possible reasons? > > Also would like to add that -- iptables has to be appropriate rules on > opensips to get clients connecting to it or even rtpproxy connecting to it. > > -- > sip user. > > > On Fri, Aug 3, 2012 at 4:49 AM, SamyGo <[email protected]> wrote: > >> Hi, >> >> You may not want to tell your rtpproxy module to use DB as well as a >> socket connection at the same time: I wonder if it will work this way. >> >> modparam("rtpproxy", "rtpproxy_sock", "udp:localhost:9999") >>> modparam("rtpproxy", "nortpproxy_str", "a=sdpmangled:yes\r\n") >>> modparam("rtpproxy", "db_url", >>> "mysql://opensips:opensipsrw@localhost/opensips") >>> #modparam("rtpproxy", "db_table", "nh_rtpp") >>> modparam("rtpproxy", "rtpp_socket_col", "rtpproxy_sock") >> >> >> Comment out the red lines as well. >> Once commented restart opensips and verify that your RTPproxy is indeed >> listening on the port 9999 >> * >> * >> *#netstat -pln | grep 9999* >> >> If you get an output then its fine, next you should make a call and see >> if the error changes or not. >> >> Regards, >> Sammy. >> >> >> On Fri, Aug 3, 2012 at 2:38 AM, siponcloud user <[email protected]>wrote: >> >>> Opensips is a great product, but I have been having problem in >>> configuring >>> the nat traversal + rtpproxy with opensips and have spent about a week on >>> this. I am a novice in this... when opensips runs with the following >>> opensips.cfg relevant portions -- it raises the following rtpproxy >>> problem: >>> >>> "ERROR:rtpproxy:select_rtpp_node: script error -no valid set selected" >>> "ERROR:rtpproxy:force_rtp_proxy: no available proxies" >>> >>> #-------- nat_traversal params ----- >>> modparam("nat_traversal", "keepalive_interval", 30) >>> modparam("nat_traversal", "keepalive_method", "OPTIONS") >>> modparam("nat_traversal", "keepalive_from", "sip:[hidden email]") >>> modparam("nat_traversal", "keepalive_state_file", >>> "/var/run/opensips/keepalive_state") >>> >>> #ak# --- rtpproxy ----- >>> # single rtproxy with specific weight >>> modparam("rtpproxy", "rtpproxy_sock", "udp:localhost:9999") >>> modparam("rtpproxy", "nortpproxy_str", "a=sdpmangled:yes\r\n") >>> modparam("rtpproxy", "db_url", >>> "mysql://opensips:opensipsrw@localhost/opensips") >>> #modparam("rtpproxy", "db_table", "nh_rtpp") >>> modparam("rtpproxy", "rtpp_socket_col", "rtpproxy_sock") >>> >>> >>> ####### Routing Logic ######## >>> >>> >>> # main request routing logic >>> >>> route{ >>> ####nat_traversal info >>> force_rport(); >>> if (client_nat_test("7")) { >>> fix_contact(); >>> setflag(5); >>> } >>> >>> if ((method=="REGISTER" || method=="SUBSCRIBE" || >>> (method=="INVITE" && !has_totag())) && >>> client_nat_test("7")) >>> { >>> nat_keepalive(); >>> } >>> ####nat_traversal info ends >>> >>> if (!mf_process_maxfwd_header("10")) { >>> sl_send_reply("483","Too Many Hops"); >>> exit; >>> } >>> >>> ##ak# >>> if ((is_method("INVITE")) && has_totag()) { >>> #(has_body("application/sdp"))) { >>> engage_rtp_proxy(); >>> } >>> >>> if (has_totag()) { >>> # sequential request withing a dialog should >>> # take the path determined by record-routing >>> if (loose_route()) { >>> if (is_method("BYE")) { >>> setflag(1); # do accounting ... >>> setflag(3); # ... 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(); >>> } >>> # route it out to whatever destination was set by >>> loose_route() >>> # in $du (destination URI). >>> route(1); >>> } else { >>> /* uncomment the following lines if you want to >>> enable presence */ >>> ##if (is_method("SUBSCRIBE") && $rd == "your.server.ip.address") { >>> ## # in-dialog subscribe requests >>> ## route(2); >>> ## exit; >>> ##} >>> 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; >>> } >>> >>> #initial requests >>> >>> # CANCEL processing >>> if (is_method("CANCEL")) >>> { >>> if (t_check_trans()) >>> t_relay(); >>> #unforce_rtpproxy(); >>> exit; >>> } >>> >>> t_check_trans(); >>> >>> # 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(1); # do accounting >>> } >>> if (!uri==myself) >>> ## replace with following line if multi-domain support is used >>> ##if (!is_uri_host_local()) >>> { >>> append_hf("P-hint: outbound\r\n"); >>> # if you have some interdomain connections via TLS >>> ##if($rd=="tls_domain1.net") { >>> ## t_relay("tls:domain1.net"); >>> ## exit; >>> ##} else if($rd=="tls_domain2.net") { >>> ## t_relay("tls:domain2.net"); >>> ## exit; >>> ##} >>> route(1); >>> } >>> >>> # requests for my domain >>> >>> ## uncomment this if you want to enable presence server >>> ## and comment the next 'if' block >>> ## NOTE: uncomment also the definition of route[2] from below >>> ##if( is_method("PUBLISH|SUBSCRIBE")) >>> ## route(2); >>> >>> if (is_method("PUBLISH")) >>> { >>> sl_send_reply("503", "Service Unavailable"); >>> exit; >>> } >>> >>> >>> if (is_method("REGISTER")) >>> { >>> # authenticate the REGISTER requests (uncomment to enable >>> auth) >>> ##if (!www_authorize("", "subscriber")) >>> ##{ >>> ## www_challenge("", "0"); >>> ## exit; >>> ##} >>> ## >>> ##if (!db_check_to()) >>> ##{ >>> ## sl_send_reply("403","Forbidden auth ID"); >>> ## exit; >>> ##} >>> >>> #---- Request is behind NAT(flag5) save with bflag 6 >>> ----# >>> #---- Use bflag 7 to start SIP pinging (Options) >>> ----# >>> if (isflagset(5)) { >>> setbflag(6); >>> setbflag(7); >>> }; >>> >>> if (!save("location")) >>> sl_reply_error(); >>> >>> exit; >>> } >>> >>> if ($rU==NULL) { >>> # request with no Username in RURI >>> sl_send_reply("484","Address Incomplete"); >>> exit; >>> } >>> >>> # apply DB based aliases (uncomment to enable) >>> ##alias_db_lookup("dbaliases"); >>> if (!lookup("location","m")) { >>> switch ($retcode) { >>> case -1: >>> case -3: >>> t_newtran(); >>> t_reply("404", "Not Found"); >>> exit; >>> case -2: >>> sl_send_reply("405", "Method Not >>> Allowed"); >>> exit; >>> } >>> } >>> >>> # when routing via usrloc, log the missed calls also >>> setflag(2); >>> >>> route(1); >>> } >>> >>> >>> route[1] { >>> # for INVITEs enable some additional helper routes >>> >>> #---- RTP Proxy handling ---# >>> if (is_method("BYE|CANCEL")) { >>> unforce_rtp_proxy(); >>> } else if (is_method("INVITE")){ >>> #---- Activates the RTP Proxy for the CALLEE ---# >>> rtpproxy_offer(); >>> }; >>> #ak## catch and fix replies >>> #ak#t_on_reply("2"); >>> >>> if (is_method("INVITE")) { >>> t_on_branch("2"); >>> t_on_reply("2"); >>> t_on_failure("1"); >>> } >>> >>> if (!t_relay()) { >>> sl_reply_error(); >>> }; >>> exit; >>> } >>> >>> branch_route[2] { >>> if (client_nat_test("3")) { >>> fix_contact(); >>> } >>> >>> xlog("new branch at $ru\n"); >>> } >>> >>> >>> onreply_route[2] { >>> if (client_nat_test("7")) { >>> fix_contact(); >>> if ( is_method("INVITE") && has_body("application/sdp") >>> ){ >>> ######ak# (isflagset(5) || isbflagset(6)) && >>> rtpproxy_answer(); >>> } >>> } >>> xlog("incoming reply\n"); >>> } >>> >>> >>> failure_route[1] { >>> >>> 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; >>> ##} >>> >>> # uncomment the following lines if you want to redirect the >>> failed >>> # calls to a different new destination >>> ##if (t_check_status("486|408")) { >>> ## sethostport("192.168.2.100:5060"); >>> ## # do not set the missed call flag again >>> ## t_relay(); >>> ##} >>> } >>> >>> >>> >>> -- >>> View this message in context: >>> http://opensips-open-sip-server.1449251.n2.nabble.com/Problem-with-OpenSIPS-1-7-NAT-and-RTPProxy-tp7581021.html >>> Sent from the OpenSIPS - Users mailing list archive at Nabble.com. >>> >>> _______________________________________________ >>> 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
