[OpenSIPS-Users] Problem with OpenSIPS 1.7, NAT and RTPProxy
siponcloud user
kash906 at gmail.com
Mon Aug 6 19:47:16 CEST 2012
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 <govoiper at gmail.com> 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 <kash906 at gmail.com> 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
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20120806/16277d38/attachment-0001.htm>
More information about the Users
mailing list