I am trying to use openser purely as a RTP proxy using mediaproxy. All
SIP request are forwarded through to a central server. However, the RTP
proxying does not work. The mediaproxy session gets set up and both end
points get given the same port on the mediaproxy - is this correct? Both
end points forward RTP packets to the mediaproxy but they are not forwarded.
These are my log entries for the call and my config is attached:
Apr 6 21:33:11 lepus mediaproxy[27804]: command request
89C6D172-1DD2-11B2-BBB5-97F0622A5395(a)192.168.2.3 192.168.2.3:49200:audio
202.74.181.144
sipone.com local 202.74.164.72 remote
SJphone/1.60.299a/L=20(SJ=20Labs)
info=from:61028679%20@sipone.com,to:1300130710@sipone.com,fromtag:1870227267254482412,totag:
Apr 6 21:33:11 lepus mediaproxy[27804]: session
89C6D172-1DD2-11B2-BBB5-97F0622A5395(a)192.168.2.3: started. listening on
202.74.164.44:35038
Apr 6 21:33:11 lepus mediaproxy[27804]: command execution time: 1.54 ms
Apr 6 21:33:11 lepus mediaproxy[27804]: command lookup
89C6D172-1DD2-11B2-BBB5-97F0622A5395(a)192.168.2.3
202.74.164.72:20750:audio 202.74.164.72
sipone.com local
sipone.com
unknown Cisco-SIPGateway/IOS-12.x
info=from:61028679%20@sipone.com,to:1300130710@sipone.com,fromtag:1870227267254482412,totag:BDA88B14-B58
Apr 6 21:33:11 lepus mediaproxy[27804]: command execution time: 0.36 ms
Apr 6 21:33:19 lepus mediaproxy[27804]: command delete
89C6D172-1DD2-11B2-BBB5-97F0622A5395(a)192.168.2.3 info=
Apr 6 21:33:19 lepus mediaproxy[27804]: session
89C6D172-1DD2-11B2-BBB5-97F0622A5395(a)192.168.2.3: 0/0/0 packets, 0/0/0
bytes (caller/called/relayed)
Apr 6 21:33:19 lepus mediaproxy[27804]: session
89C6D172-1DD2-11B2-BBB5-97F0622A5395(a)192.168.2.3: ended.
Apr 6 21:33:19 lepus mediaproxy[27804]: command execution time: 0.31 ms
I have ethereal captures showing the SIP and RTP packets if they are useful.
Can anyone help me?
Jeff
# $Id: gw-pstn.cfg 9 2005-08-19 15:30:55Z /CN=Greger V.
Teigre/emailAddress=greger(a)onsip.org $
debug=5
fork=yes
log_stderror=no
port=5060
children=4
dns=no
rev_dns=no
fifo="/tmp/ser_fifo"
fifo_db_url="mysql://openser:pass@localhost/openser"
loadmodule "/usr/lib/openser/modules/mysql.so"
loadmodule "/usr/lib/openser/modules/sl.so"
loadmodule "/usr/lib/openser/modules/tm.so"
loadmodule "/usr/lib/openser/modules/rr.so"
loadmodule "/usr/lib/openser/modules/maxfwd.so"
loadmodule "/usr/lib/openser/modules/usrloc.so"
loadmodule "/usr/lib/openser/modules/uri.so"
loadmodule "/usr/lib/openser/modules/uri_db.so"
loadmodule "/usr/lib/openser/modules/mediaproxy.so"
loadmodule "/usr/lib/openser/modules/nathelper.so"
loadmodule "/usr/lib/openser/modules/textops.so"
loadmodule "/usr/lib/openser/modules/avpops.so"
loadmodule "/usr/lib/openser/modules/domain.so"
#loadmodule "/usr/lib/openser/modules/permissions.so"
modparam("nathelper", "rtpproxy_disable", 1)
modparam("nathelper", "natping_interval", 0)
modparam("mediaproxy","natping_interval", 30)
modparam("mediaproxy","mediaproxy_socket",
"/var/run/mediaproxy.sock")
#modparam("mediaproxy","sip_asymmetrics","/usr/local/etc/ser/sip-clients")
#modparam("mediaproxy","rtp_asymmetrics","/usr/local/etc/ser/rtp-clients")
modparam("usrloc", "db_mode", 2)
modparam("rr", "enable_full_lr", 1)
modparam("tm", "fr_inv_timer", 27)
modparam("tm", "fr_inv_timer_avp", "inv_timeout")
#modparam("permissions", "db_mode", 1)
#modparam("permissions", "trusted_table", "trusted")
modparam("domain", "db_url",
"mysql://openserro:pass@localhost/openser")
modparam("domain", "db_mode", 1)
modparam("usrloc", "db_url",
"mysql://openser:pass@localhost/openser")
modparam("usrloc", "db_mode", 1)
modparam("usrloc", "use_domain", 1)
modparam("uri_db", "db_url",
"mysql://openserro:pass@localhost/openser")
route {
# -----------------------------------------------------------------
# Sanity Check Section
# -----------------------------------------------------------------
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483", "Too Many Hops");
return;
};
if (msg:len > max_len) {
sl_send_reply("513", "Message Overflow");
return;
};
# -----------------------------------------------------------------
# Record Route Section
# -----------------------------------------------------------------
if (method=="INVITE" && client_nat_test("3")) {
add_rr_param(";nat=yes");
record_route();
} else if (method!="REGISTER") {
record_route();
};
# -----------------------------------------------------------------
# Call Tear Down Section
# -----------------------------------------------------------------
if (method=="BYE" || method=="CANCEL") {
end_media_session();
};
# -----------------------------------------------------------------
# Loose Route Section
# -----------------------------------------------------------------
if (loose_route()) {
if (has_totag() && (method=="INVITE" || method=="ACK")) {
log(">>> loose_route, has_totag, etc");
if (client_nat_test("3")||check_route_param("nat=yes")){
setflag(6);
use_media_proxy();
};
};
route(1);
return;
};
if (method=="CANCEL") {
route(1);
return;
} else if (method=="INVITE") {
route(3);
return;
} else if (method=="REGISTER") {
route(2);
return;
};
route(1);
}
route[1] {
t_on_reply("1");
if (!t_relay()) {
if (method=="INVITE" || method=="ACK") {
end_media_session();
};
sl_reply_error();
};
}
route[2] {
# -----------------------------------------------------------------
# REGISTER Message Handler
# -----------------------------------------------------------------
sl_send_reply("100", "Trying");
if (!search("^Contact:[ ]*\*") && client_nat_test("7")) {
setflag(6);
fix_nated_register();
force_rport();
};
rewritehost("xxx.xxx.xxx.xxx");
route(1);
}
route[3] {
# -----------------------------------------------------------------
# INVITE Message Handler
# -----------------------------------------------------------------
if (client_nat_test("3")) {
setflag(7);
force_rport();
fix_nated_contact();
};
rewritehost("xxx.xxx.xxx.xxx");
route(4);
route(1);
}
route[4] {
# -----------------------------------------------------------------
# NAT Traversal Section
# -----------------------------------------------------------------
if (isflagset(6) || isflagset(7)) {
use_media_proxy();
};
}
onreply_route[1] {
if ((isflagset(6) || isflagset(7)) &&
(status=~"(180)|(183)|2[0-9][0-9]")) {
if (!search("^Content-Length:[ ]*0")) {
use_media_proxy();
};
};
if (client_nat_test("1")) {
fix_nated_contact();
};
}