have you looked at sip trace and checked what are the IP addresses
in the SDP? Maybe you need to swap the flags i and e.
You can eventually provide here the incoming invite as well as
outgoing invite, saying what you would expect to be in the outgoing
one, so we can give further hints.
Hi,
I tried to use Kamailio / RTPProxy in mhomed setup without
any luck.
I had no problem to configure it with only 1 interface,
without mhomed, everything worked perfectly.
The RTP streams where not established correctly even if I
managed to have to proper IP in the SIP INVITE (C & O).
Versions:
version:
kamailio 4.1.4 (x86_64/linux)
flags: STATS:
Off, USE_TCP, USE_TLS, TLS_HOOKS, USE_RAW_SOCKS,
DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP,
PKG_MALLOC, DBG_QM_MALLOC, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT,
USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST,
HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024,
MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024,
BUF_SIZE 65535, DEFAULT PKG_SIZE 4MB
poll method
support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled on
04:23:19 Jun 13 2014 with gcc 4.7.2
RTPProxy -v:
Basic version:
20040107
Extension
20050322: Support for multiple RTP streams and MOH
Extension
20060704: Support for extra parameter in the V command
Extension
20071116: Support for RTP re-packetization
Extension
20071218: Support for forking (copying) RTP stream
Extension
20080403: Support for RTP statistics querying
Extension
20081102: Support for setting codecs in the update/lookup
command
Extension
20081224: Support for session timeout notifications
Here is my RTPProxy config (/etc/default/rtpproxy) :
EXTRA_OPTS=“-l
PU.BL.IC.IP/PRI.VA.TE.IP -m 11000 -M 12000 -d
DBUG:LOG_LOCAL3
Here are snippets of my kamailio.cfg:
port=5060
mhomed=1
# RTPProxy
control
route[NATMANAGE]
{
#!ifdef
WITH_NAT
if
(is_request()) {
if(has_totag()) {
if(check_route_param("nat=yes")) {
setbflag(FLB_NATB);
}
}
}
if
(!(isflagset(FLT_NATS) || isbflagset(FLB_NATB)))
return;
xlog("NATMANAGE M=$rm OU=$ou RURI=$ru RD=$rd F=$fu T=$tu
NH=$nh(d) IP=$si ID=$ci\n");
if(dst_ip == PUBLIC_IP) {
if(is_ipv4($nh(d)) && is_in_subnet($nh(d),
PRIVATE_NET)) {
xlog("NATMANAGE coei\n");
rtpproxy_manage("coei", PRIVATE_IP);
} else {
xlog("NATMANAGE coee\n");
rtpproxy_manage("coee", PUBLIC_IP);
}
}
else {
if(is_ipv4($nh(d)) && is_in_subnet($nh(d),
PRIVATE_NET)) {
xlog("NATMANAGE coii\n");
rtpproxy_manage("coii", PRIVATE_IP);
} else {
xlog("NATMANAGE coie\n");
rtpproxy_manage("coie", PUBLIC_IP);
}
}
if
(is_request()) {
if (!has_totag()) {
if(t_is_branch_route()) {
add_rr_param(";nat=yes");
}
}
}
if
(is_reply()) {
if(isbflagset(FLB_NATB)) {
if(is_first_hop())
set_contact_alias();
}
}
#!endif
return;
}
Calls were correctly going to the desired rtpproxy_manage
options.
Now I’m not quite sure I’m using the correct ones.
I had to specify the PUBLIC_IP or PRIVATE_IP in the
rtpproxy_manage calls in order to have the correct IP address
in the C and O headers of the SIP INVITE. Without that, the
public IP would be sent as C and O params to phones on the
private subnet.
In fact not a single call direction would give correct RTP
streams.
Any idea where I missed the turn?
Cheers
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users