[Serusers] ACK problem in NAT call

Vivienne Curran vivcurran at yahoo.co.uk
Mon Apr 11 13:43:09 CEST 2005


At the moment your reply route looks like this:
 
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();
     };
}

Try putting an additional fix_nated_contact()in it. Like the following:
 
onreply_route[1] {
     if (isflagset(6) &&
status=~"(180)|(183)|2[0-9][0-9]") {
              fix_nated_contact();
             if (!search("^Content-Length:\ 0")) {
                    force_rtp_proxy();
             };
     }
        else if (nat_uac_test("1")) {
             fix_nated_contact();
     };
}

BR,
Vivienne

Kamran Ahmad <p_kami at yahoo.com> wrote:
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/

_______________________________________________
Serusers mailing list
serusers at lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers

Send instant messages to your online friends http://uk.messenger.yahoo.com 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20050411/0719a8c6/attachment.htm>


More information about the sr-users mailing list