[Serusers] NAT Problem No Voice

Kamran Ahmad p_kami at yahoo.com
Mon Apr 11 05:07:09 CEST 2005


hello

its working now using RTPProxy.

(PrivateIp)UA<------->SER<--------->UA(PrivateIP)
(PublicIp)UA<------->SER<--------->UA(PrivateIP)
(PublicIp)UA<------->SER<--------->UA(PublicIP)

the only problem i am haveing in this setup. sometimes
with accepting ACK.

Actuallying some time call is disconnected on one UA 
but on other side UA is not disconnecting this call

example

UAC(publicIP)-------->SER---------->UAS(privateIP)
UAC<-------RTPProxy------>UAS(display message
"awaiting ack" after some time it is terminating call
And displaying message "ACK TimeOut")

and if it HangUp call from UAC(publicIP)

UAC----->SendingBYE------>UAS (UAS is not
disconnecting call and saying "waiting for ACK" and
after sometimes display message "ACK Timeout")

any comments

------------------------------------------------------
debug=3
fork=yes
log_stderror=no

#debug=7
#fork=no
#log_stderror=yes

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/auth.so"
#loadmodule
"/usr/local/lib/ser/modules/auth_radius.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("auth_db|usrloc|uri_db", "db_url",
"mysql://ser:heslo@localhost/ser")
#modparam("auth_db", "calculate_ha1", 1)
#modparam("auth_db", "password_column", "password")

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");

#     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)) {
             force_rport();
             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