[Serusers] ACK problem in NAT call

Kamran Ahmad p_kami at yahoo.com
Mon Apr 11 12:32:43 CEST 2005


hello

hello can any one tell me what could be the problem
with my config. I am having problem in PublicIP to
PrivateIP call through SER.

this is the case
1:
PublicIP-------->SER(publicIP)-------->PrivateIP
PublicIP------>RTPProxy----->PrivateIP(Here i am not
getting ack and after 30 seconds my session is closed
an my SJPhone on privateIP is saying ACK timeOUT)

2:
UA(privateIP)--------->SER(publicIP)------>UA(privateIP)(both
UA on behind same NAT)
UA<-----------------RTPProxy-------------->UA(Here UAS
is not getting ack and after 30 seconds  session is
closed an my SJPhone on privateIP is saying ACK
timeOUT)


when ever there is Call to PrivateIP there is the
problem. UAS on PrivateIP is waiting for Ack and after
30 sec session is droped. in this 30 seconds both UAC
and UAS can listen.

PublicIP(UAC)------------>PrivateIP(UAS)(ACKProblem)
PrivateIP(UAC)----------->PrivateIP(UAS)(ACKProblem)
PublicIP(UAC)------------>PublicIP(UAS)working
PrivateIP(UAS)----------->PublicIP(UAS)working

i am using RTPProxy. should i use MediaProxy or stun
server.

ser.cfg
debug=3
fork=yes
log_stderror=no

dns=no
rev_dns=no
fifo="/tmp/ser_fifo"

#fifo_db_url="mysql://ser:heslo@localhost/ser"

#loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/xlog.so"

#radius configuration
loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule
"/usr/local/lib/ser/modules/auth_radius.so"
#loadmodule "/usr/local/lib/ser/modules/acc.so"

#loadmodule "/usr/local/lib/ser/modules/auth_db.so"

loadmodule "/usr/local/lib/ser/modules/uri.so"
#loadmodule "/usr/local/lib/ser/modules/domain.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
#loadmodule "/usr/local/lib/ser/modules/uri_db.so"
#loadmodule "/usr/local/lib/ser/modules/uri_radius.so"

modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "rtpproxy_sock",
"unix:/var/run/rtpproxy.sock")
modparam("usrloc", "db_mode", 0)
modparam("registrar", "nat_flag", 6)
modparam("rr", "enable_full_lr", 1)

route {

     #
-----------------------------------------------------------------
     # Sanity Check Section
     #
-----------------------------------------------------------------

     if (!mf_process_maxfwd_header("10")) {
             sl_send_reply("483", "Too Many Hops");
             break;
     };

     if (msg:len > max_len) {
             sl_send_reply("513", "Message Overflow");
             break;
     };

     #
-----------------------------------------------------------------
     # Record Route Section
     #
-----------------------------------------------------------------

     if (method!="REGISTER") {
             record_route();
     };

     if (method=="BYE" || method=="CANCEL") {
             unforce_rtp_proxy();
     }

     #
-----------------------------------------------------------------
     # Loose Route Section
     #
-----------------------------------------------------------------

     if (loose_route()) {

           if (has_totag() && method=="INVITE") {
                   if (nat_uac_test("19")) {
                           setflag(6);
                           force_rport();
                           fix_nated_contact();
                   };

                   force_rtp_proxy("l");
           };
           route(1);
           break;
    };
    #
-----------------------------------------------------------------
    # Call Type Processing Section
    #
-----------------------------------------------------------------
    if (uri==myself) {
           if (method=="INVITE") {
                   route(3);
                   break;
           } else if (method=="REGISTER") {
                   route(2);
                   break;
           };

          if (!lookup("location")) {
                   sl_send_reply("404", "User Not
Found");
                   break;
           };
          route(1);
    };
}

route[1] {
     #
-----------------------------------------------------------------
     # Default Message Handler
     #
-----------------------------------------------------------------
     t_on_reply("1");
     if (!t_relay()) {
            if (method=="INVITE" && isflagset(6)) {
                    unforce_rtp_proxy();
            };
            sl_reply_error();
     };
}

route[2] {
     #
-----------------------------------------------------------------
     # REGISTER Message Handler
     #
----------------------------------------------------------------
     if (!search("^Contact: \*") &&
nat_uac_test("19")) {
             setflag(6);
             fix_nated_register();
#               fix_nated_contact();
             force_rport();
     };
     sl_send_reply("100", "Trying");

#radius config


#end of radius config

#     if (!www_authorize("","subscriber")) {
#             www_challenge("","0");
#             break;
#     };

#     if (!check_to()) {
#             sl_send_reply("401", "Unauthorized");
#             break;
#     };

     consume_credentials();

     if (!save("location")) {
             sl_reply_error();
        };
}

route[3] {
     #
-----------------------------------------------------------------
     # INVITE Message Handler
     #
-----------------------------------------------------------------
     if (nat_uac_test("19")) {
             setflag(6);
     }
     if (!lookup("location")) {
             sl_send_reply("404", "User Not Found");
             break;
     };
#     if (!proxy_authorize("","subscriber")) {
#             proxy_challenge("","0");
#             break;
#     } else if (!check_from()) {
#       if(!check_from()) {
#             sl_send_reply("403", "Use From=ID");
#             break;
#     };

     consume_credentials();

     if (isflagset(6)) {

#               if (uri=~"^sip:9[0-9]*@.*") {
                # prefix, strip prefix & shunt our
call to the local access PSTN gateway
#                       strip(1);
#                       xlog("L_DBG","prefix 9
detected... entering route 3");
#                       route(3); #PSTN gateway
#                       break;
#               }
             force_rport();
#       xlog("L_DBG","going for fixnated and forcertp
%fu");
                log("hello");
             fix_nated_contact();
             force_rtp_proxy();
     };

        t_on_reply("1");

     if (!t_relay()) {

             if(isflagset(6)) {
                    unforce_rtp_proxy();
             }

             sl_reply_error();
     };
}

onreply_route[1] {
     if (isflagset(6) &&
status=~"(180)|(183)|2[0-9][0-9]") {
             if (!search("^Content-Length:\ 0")) {
                    force_rtp_proxy();
             };
     }
        else if (nat_uac_test("1")) {
             fix_nated_contact();
     };
}


		
__________________________________ 
Do you Yahoo!? 
Yahoo! Small Business - Try our new resources site!
http://smallbusiness.yahoo.com/resources/




More information about the sr-users mailing list