[OpenSIPS-Users] Problem with OpenSIPS 1.7, NAT and RTPProxy
Ali Pey
alipey at gmail.com
Tue Aug 7 16:11:29 CEST 2012
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 <kash906 at gmail.com> 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 <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
>>
>>
>
> _______________________________________________
> 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/20120807/3cbca7c2/attachment-0001.htm>
More information about the Users
mailing list