[OpenSIPS-Users] Problem with OpenSIPS 1.7, NAT and RTPProxy
siponcloud user
kash906 at gmail.com
Wed Aug 8 05:36:31 CEST 2012
Opensips 1.6 + nathelper + rtpproxy 1.2.1 is working fine.
Thanks everyone.
On Tue, Aug 7, 2012 at 10:11 AM, Ali Pey <alipey at gmail.com> wrote:
> 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
>>
>>
>
> _______________________________________________
> 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/7ebc9ea8/attachment-0001.htm>
More information about the Users
mailing list