Hi Dan, Yes, I can see these info. If there is CPL script, config file goes to ROUTE 10, otherwise goes to ROUTE 11 and uses media proxy in both of cases. So, everything seems to work fine.
Next days I will investigate on this problem! It's quite strange...
Regards, Daniel
Dan-Cristian Bogos wrote:
Hi Daniel,
do u get in your openser logs stuff like:
A. INFO: ROUTE 11 - NO CPL SCRIPT INFO: flag 6 or 7 setted NOTICE: mediaproxy in use for the caller!!
B. INFO: MEDIAPROXY in use for the CALLED! ? Would it be possible to DanB
On Dec 7, 2007 1:59 PM, Daniel d.grotti@gmail.com wrote:
Hi, this is my call flow (from client side making the call: 192.168.10.224):
The INVITE received by 192.168.0.167 (sent by 192.168.10.224 and processed by proxy) has SDP body with PRIVATE IP and PORT.
# 192.162.10.224 ----> PROXY
Request-Line: INVITE sip:franco.callegati@PROXY_IP SIP/2.0 Message Header Via: SIP/2.0/UDP 192.168.10.224:64244;branch=z9hG4bK-d87543-9947ff15e2520b54-1--d87543- Max-Forwards: 70 Contact: sip:daniel.grotti@192.168.10.224:64244 To: "franco.callegati"sip:franco.callegati@PROXY_IP From: "casa"<sip:daniel.grotti@PROXY _IP>;tag=4554424c Call-ID: YjRmZjU3ODAwMjIxMDU0MDUwNDllYzUwNmZiYTJjMmE. CSeq: 2 INVITE Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO Content-Type: application/sdp Proxy-Authorization: Digest username="1000",realm="PROXY_IP",nonce="47593c9fa32034a66fdb7493ff499c7215d4d8db",uri="sip:franco.callegati@PROXY_IP",response="82d21af18029aa02388869088c3619d2",algorithm=MD5 User-Agent: X-Lite release 1011s stamp 41150 Content-Length: 374 Message body Session Description Protocol Session Description Protocol Version (v): 0 Owner/Creator, Session Id (o): - 8 2 IN IP4 192.168.10.224 Session Name (s): CounterPath X-Lite 3.0 Connection Information (c): IN IP4 192.168.10.224 Time Description, active time (t): 0 0 Media Description, name and address (m): audio 53624 RTP/AVP 107 119 100 106 0 105 98 8 101 Media Attribute (a): fmtp:101 0-15 Media Attribute (a): rtpmap:107 BV32/16000 Media Attribute (a): rtpmap:119 BV32-FEC/16000 Media Attribute (a): rtpmap:100 SPEEX/16000 Media Attribute (a): rtpmap:106 SPEEX-FEC/16000 Media Attribute (a): rtpmap:105 SPEEX-FEC/8000 Media Attribute (a): rtpmap:98 iLBC/8000 Media Attribute (a): rtpmap:101 telephone-event/8000 Media Attribute (a): sendrecv
# PROXY -----> 192.162.10.224
Status-Line: SIP/2.0 100 Trying Message Header Via: SIP/2.0/UDP 192.168.10.224:64244;branch=z9hG4bK-d87543-9947ff15e2520b54-1--d87543-;rport=28943;received= 85.18.14.25 To: "franco.callegati"sip:franco.callegati@PROXY_IP From: "casa"sip:daniel.grotti@PROXY_IP;tag=4554424c Call-ID: YjRmZjU3ODAwMjIxMDU0MDUwNDllYzUwNmZiYTJjMmE. CSeq: 2 INVITE Server: OpenSER (1.3.0-pre1-notls (i386/linux)) Content-Length: 0
# PROXY -----> 192.162.10.224
Status-Line: SIP/2.0 180 Ringing Message Header Via: SIP/2.0/UDP 192.168.10.224:64244;received=85.18.14.25;branch=z9hG4bK-d87543-9947ff15e2520b54-1--d87543-;rport=28943 Record-Route: sip:PROXY_IP:5060;lr;nat=yes;ftag=4554424c Contact: sip:franco.callegati@85.18.14.25:42214;rinstance=96888d44783df4a0 To: "franco.callegati"<sip: franco.callegati@PROXY_IP>;tag=d06d8b2d From: "casa"sip:daniel.grotti@PROXY_IP;tag=4554424c Call-ID: YjRmZjU3ODAwMjIxMDU0MDUwNDllYzUwNmZiYTJjMmE. CSeq: 2 INVITE User-Agent: X-Lite release 1011s stamp 41150 Content-Length: 0
# PROXY -----> 192.162.10.224
Status-Line: SIP/2.0 200 OK Message Header Via: SIP/2.0/UDP 192.168.10.224:64244;received=85.18.14.25;branch=z9hG4bK-d87543-9947ff15e2520b54-1--d87543-;rport=28943 Record-Route: sip:PROXY_IP:5060;lr;nat=yes;ftag=4554424c Contact: sip:franco.callegati@85.18.14.25:42214;rinstance=96888d44783df4a0 To: "franco.callegati"sip:franco.callegati@PROXY_IP;tag=d06d8b2d From: "casa"<sip: daniel.grotti@PROXY_IP>;tag=4554424c Call-ID: YjRmZjU3ODAwMjIxMDU0MDUwNDllYzUwNmZiYTJjMmE. CSeq: 2 INVITE Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO Content-Type: application/sdp User-Agent: X-Lite release 1011s stamp 41150 Content-Length: 372 Message body Session Description Protocol Session Description Protocol Version (v): 0 Owner/Creator, Session Id (o): - 7 2 IN IP4 192.168.0.167 Session Name (s): CounterPath X-Lite 3.0 Connection Information (c): IN IP4 192.168.0.167 Time Description, active time (t): 0 0 Media Description, name and address (m): audio 45566 RTP/AVP 107 119 100 106 0 105 98 8 101 Media Attribute (a): fmtp:101 0-15 Media Attribute (a): rtpmap:107 BV32/16000 Media Attribute (a): rtpmap:119 BV32-FEC/16000 Media Attribute (a): rtpmap:100 SPEEX/16000 Media Attribute (a): rtpmap:106 SPEEX-FEC/16000 Media Attribute (a): rtpmap:105 SPEEX-FEC/8000 Media Attribute (a): rtpmap:98 iLBC/8000 Media Attribute (a): rtpmap:101 telephone-event/8000 Media Attribute (a): sendrecv
192.162.10.224 ----> PROXY
Request-Line: ACK sip:franco.callegati@85.18.14.25:42214;rinstance=96888d44783df4a0 SIP/2.0 Message Header Via: SIP/2.0/UDP 192.168.10.224:64244;branch=z9hG4bK-d87543-66641951d8357408-1--d87543- Max-Forwards: 70 Route: sip:PROXY_IP:5060;lr;nat=yes;ftag=4554424c Contact: sip:daniel.grotti@192.168.10.224:64244 To: "franco.callegati"sip:franco.callegati@PROXY_IP;tag=d06d8b2d From: "casa"<sip:daniel.grotti@PROXY _IP>;tag=4554424c Call-ID: YjRmZjU3ODAwMjIxMDU0MDUwNDllYzUwNmZiYTJjMmE. CSeq: 2 ACK Proxy-Authorization: Digest username="1000",realm="PROXY_IP",nonce="47593c9fa32034a66fdb7493ff499c7215d4d8db",uri="sip: franco.callegati@PROXY_IP",response="82d21af18029aa02388869088c3619d2",algorithm=MD5 User-Agent: X-Lite release 1011s stamp 41150 Content-Length: 0
RTP STREAM BETWEEN CLIENTS (MEDIAPROXY DOESN'T WORK)
CALL ENDED
this is my config file:
debug=3 fork=yes log_stderror=yes
listen=PROXY_IP port=5060 children=4
dns=no rev_dns=no disable_dns_blacklist=yes
mpath="/usr/SER_proxy//lib/openser/modules/"
#------------------------------------------------------ # Load Module #------------------------------------------------------
loadmodule "mysql.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "mi_fifo.so" loadmodule "uri.so" loadmodule "uri_db.so" loadmodule "domain.so" loadmodule "mediaproxy.so" loadmodule "nathelper.so" loadmodule "textops.so" loadmodule "xlog.so" loadmodule "cpl-c.so" loadmodule "alias_db.so"
#---------------------------------------------------------- # Parameters #----------------------------------------------------------
modparam("auth_db|uri_db|usrloc|domain|alias_db", "db_url", "mysql://topenser:openserrw@localhost/topenser")
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
modparam("auth_db", "calculate_ha1", yes) modparam("auth_db", "password_column", "password")
modparam("usrloc", "db_mode", 2) modparam("usrloc", "nat_bflag", 6)
modparam("rr", "enable_full_lr", 1)
modparam("alias_db", "use_domain", 1)
# REGISTRAR MODULE modparam("registrar", "max_contacts", 2) # max number of contacts per URI modparam("registrar", "append_branches", 0) # if 0: R-URI will be overwritten with the highest-q rated contact and the rest will be left unprocessed. modparam("registrar", "default_q", 1000) # default contacts q-value set as 1 modparam("registrar", "received_avp","$avp(i:42)")
# URI_DB MODULE modparam("uri_db", "use_uri_table", 1) # Specify if the "uri" table should be used for checkings instead of "subscriber" table
# CPL MODULE modparam("cpl-c", "db_url", "mysql://topenser:openserrw@localhost/topenser") modparam("cpl-c", "cpl_table", "cpl") modparam("cpl-c", "cpl_dtd_file", "/usr/src/openser- 1.2.2-notls/modules/cpl-c/cpl-06.dtd") modparam("cpl-c", "lookup_domain", "location") modparam("cpl-c","lookup_append_branches",1) modparam("cpl-c","proxy_route", 10)
#NATHELPER MODULE modparam("nathelper", "rtpproxy_disable_tout", 120) modparam("nathelper", "rtpproxy_tout", 2) modparam("nathelper", "natping_interval", 30) modparam("nathelper", "ping_nated_only", 1) modparam("nathelper", "received_avp", "$avp(i:42)") modparam("nathelper", "sipping_method", "OPTIONS") # Use OPTIONS every 10sec to keep NAT alive modparam("nathelper", "sipping_bflag", 6) modparam("nathelper", "sipping_from", "sip:PROXY_IP")
#MEDIAPROXY MODULE modparam("mediaproxy", "mediaproxy_socket", "/var/run/mediaproxy.sock") modparam("mediaproxy", "sip_asymmetrics", "/usr/local/etc/openser/sip-asymmetric-clients") modparam("mediaproxy", "rtp_asymmetrics", "/usr/local/etc/openser/rtp-asymmetric-clients")
# TM MODULE modparam("tm", "fr_inv_timer", 120)
#------------------------------------------------------------ #MAIN ROUTE #-----------------------------------------------------------
route { xlog("L_DBG", "INFO: NEW REQUEST - METHOD=$rm R-URI=$ru FROM=$fu TO=$tu IP=$si ID=$ci\n"); #------------------------------------ # Sanity checks #------------------------------------ if (!mf_process_maxfwd_header("10")) { sl_send_reply("483", "Too much Hops"); exit; };
if (msg:len >= 2048) { sl_send_reply("513", "Message too big"); exit; };
#------------------------------------ # RECORD-ROUTE #------------------------------------
if(method=="INVITE" && client_nat_test("7")) { record_route_preset ("PROXY_IP:5060;nat=yes"); xlog("L_DBG", "INFO: RECORD-ROUTE WITH NAT"); } else if (method!="REGISTER") { record_route(); };
#---------------------------------------- # CALL TEAR DOWN #---------------------------------------- if (method=="BYE") { end_media_session(); }; if (method=="CANCEL") { end_media_session(); };
#-------------------------------------------- # LOOSE ROUTE #-------------------------------------------- if (loose_route()) { xlog("L_DBG", "INFO: LOOSE ROUTE"); if (method=="INVITE") { if (!proxy_authorize("","subscriber")) { proxy_challenge("","0"); exit; } else if (!check_from()) { sl_send_reply("403","Unauthorized"); exit; }; consume_credentials();
if (client_nat_test("7") || search("^Route:.*nat=yes")) { setbflag(7); use_media_proxy(); }; }; route(1); exit; };
#------------------------------------------------- #CALL TYPE PROCESSING #------------------------------------------------- if (!uri==myself) { route(1); exit; };
if (uri==myself) { if (method=="REGISTER") { xlog("L_DBG", "INFO: REGISTER Message received"); route(2); exit; }; if (method=="ACK") { route(1); exit; }; if (method=="INVITE") { xlog("L_DBG", "INFO: INVITE Message received"); route(3); exit; }; if (method=="MESSAGE") { xlog("L_DBG", "INFO: MESSAGE method received"); route(4); exit; }; lookup("aliases"); if (!uri==myself) { route(1); exit; }; if (!lookup("location")) { sl_send_reply("404", "Destination not found"); exit; }; }; route(1);
}
#-------------------------------------------------------- # REGISTER PROCESSING #-------------------------------------------------------- route[2] { # Check credentials
if(!www_authorize("","subscriber")) { www_challenge("","0"); exit; } else if(!check_to()) { sl_send_reply("401", "Unauthorized"); exit; }; consume_credentials();
# Check client natted - if yes, set flag 6 if (!search("^Contact:[ ]**") && client_nat_test("7")) { setbflag(6); xlog("L_DBG","INFO: Registration behind NAT"); xlog("L_DBG","INFO: Bflag 6, related to BRANCH=$T_branch_idx, is setted as $bf"); fix_nated_register(); force_rport(); };
if(!save("location")) { sl_reply_error(); xlog("L_DBG", "Registration of [$fU] Failed"); }; xlog("L_DBG", "INFO: Registration of [$fU] Complete."); xlog("L_DBG", "INFO: 200 OK has been sended");
}
#---------------------------------------------------------- # INVITE PROCESSING #---------------------------------------------------------- route[3] { sl_send_reply("100", "Trying"); # Check if caller is natted, if yes set flag 7, rewrite Contact HF with Proxy address if(client_nat_test("7")) { setbflag(7); xlog("L_DBG", "INFO: CLIENT INVITE BEHIND NAT"); xlog("L_DBG","NOTICE: Bflag 7, related to BRANCH=$T_branch_idx of this INVITE, is setted as $bf"); if(force_rport()) { xlog("L_DBG","INFO: rport FORCED"); }; if(fix_nated_contact()) { xlog("L_DBG","INFO: Contact HF is now [$ct]"); }; # append_hf("P-hint: INVITE behind NAT \n"); }; # Check Credentials
if(!proxy_authorize("","subscriber")) { proxy_challenge("","0"); exit; } else if (!check_from()) { sl_send_reply("403", "Unauthorized"); exit; }; lookup("aliases"); if(uri!=myself) { route(1); exit; }; consume_credentials();
# Check if r-URI is an alias. If yes, rewrite RURI with User's URI if(!alias_db_lookup("dbaliases")) { xlog("L_DBG", "The [$ru] is not an alias"); };
# Use Caller CPL "Outgoing" Script, if exist
if(!cpl_run_script("outgoing", "force_stateful")) { sl_send_reply("500","Outgoing CPL script execution
failed"); exit; }; # Find destination user and re-write R-URI with its Contact
if (!lookup("location")) { sl_send_reply("404", "Destination not found"); exit; }; xlog("L_DBG", "INFO: LOCATION HAS BEEN FOUND"); xlog("L_DBG","INFO: R-URI is now [$ru]"); t_on_reply("1");
# Use CPL "Incoming" script of the destination client if(!cpl_run_script("incoming","force_stateful")) { sl_send_reply("500", "Incoming CPL script execution failed"); exit; }; route(11); route(1); }
# -------------------------------- # PROXY ROUTE - CPL SCRIPT LOADED # -------------------------------- route[10] { xlog("L_DBG", "INFO: ROUTE 10 - PROXY ROUTE \n"); # append_hf("P-hint: CPL ROUTE 10 - PROXY-ROUTE\n"); if (isbflagset(6) || isbflagset(7)) { xlog("L_DBG", "INFO: flag 6 or 7 setted \n"); if(!isbflagset(8)) { setbflag(8); }; if(use_media_proxy()) { xlog("L_DBG","NOTICE: MEDIAPROXY in use for the CALLER!!"); # append_hf("P-hint: Mediaproxy in USE for the Caller\n"); }; }; } # ----------------------------- # CONTROL FLAG - NO CPL SCRIPT # ----------------------------- route[11] { xlog("L_DBG", "INFO: ROUTE 11 - NO CPL SCRIPT"); # append_hf("P-hint: ROUTE 11 \n"); if(isbflagset(6) || isbflagset(7)) { xlog("L_DBG", "INFO: flag 6 or 7 setted"); if(!isbflagset(8)) { setbflag(8); }; if(use_media_proxy()) { xlog("L_DBG","NOTICE: mediaproxy in use for the caller!!"); # append_hf("P-hint: MEDIAPROXY in USE for the CALLER\n"); }; }; }
# -------------------------------------------------- # MESSAGE PROCESSING # -------------------------------------------------- route[4] { if (uri!=myself) { sl_send_reply ("403", "Forbidden"); exit; }; if (!lookup("location")) { sl_send_reply("404", "Destination not found"); exit; }; route(1); }
#---------------------------------------------------- # RELEY ROUTE #---------------------------------------------------- route[1] { if (!t_relay("0x01")) # don't send 100 trying { if (method=="INVITE" || method=="ACK") { end_media_session(); xlog("L_DBG","INFO: MEDIA SESSION ENDED"); };
sl_reply_error(); xlog("L_DBG", "INFO: SENT ERROR REPLY"); };
}
#--------------------------------------------------------------------- # On Reply Route #---------------------------------------------------------------------
onreply_route[1] { xlog("L_DBG","INFO : ONREPLY ROUTE"); # append_hf("P-hint: ONREPLY ROUTE \n"); if (status=~"(180)|(183)|2[0-9][0-9]") { if (isbflagset(8) && !search("^Content-Lenght:[ ]*0")) {
if(use_media_proxy()) { xlog("L_DBG","INFO: MEDIAPROXY in use for the
CALLED!"); # append_hf("P-hint: Media Proxy in use for the Callee!\n"); }; }; }; if (client_nat_test("7") && status=~"(180)|(183)|(200)") { fix_nated_contact();
xlog("L_DBG","INFO: CONTACT HF has been CHANGED");
# append_hf("P-hint: CALLEE'S CONTACT HF has benn CHANGED\n");
};
}
Regards, Daniel
Hi Daniel,
Can u post your openser configuration as well as a complete ngrep trace for the calls you have problems with?
DanB
-- Daniel Grotti ________________________ e-mail : d.grotti@gmail.com _______________________________________________ Users mailing list Users@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users