Discussion:
[SR-Users] Kamailio RtpProxy MHomed
Pascal Fautré
2014-07-16 13:08:58 UTC
Permalink
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) :
CONTROL_SOCK=udp:127.0.0.1:7722
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
Daniel-Constantin Mierla
2014-07-17 11:56:53 UTC
Permalink
Hello,

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.

Cheers,
Daniel

On 16/07/14 15:08, Pascal Fautré wrote:
> 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) :
> CONTROL_SOCK=udp:127.0.0.1:7722
> 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-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Moacir Ferreira
2014-07-17 21:10:53 UTC
Permalink
I have created an environment with the same config and I find the same problem. While still does not work for video, I have changed (flip) the public/internal IP addresses on rtpproxy and I can get half call leg working properly, includding video.

However, I am testing video calls. So I got another question on top of the original post: Can we use rtpproxy also for video or it only supports voice rtp proxy?

Cheers,
Mo

Date: Thu, 17 Jul 2014 13:56:53 +0200
From: miconda-***@public.gmane.org
To: sr-users-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org
Subject: Re: [SR-Users] Kamailio RtpProxy MHomed






Hello,



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.



Cheers,

Daniel



On 16/07/14 15:08, Pascal Fautré wrote:




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) :

CONTROL_SOCK=udp:127.0.0.1:7722


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-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users




--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Daniel-Constantin Mierla
2014-07-17 22:18:27 UTC
Permalink
On 17/07/14 23:10, Moacir Ferreira wrote:
> I have created an environment with the same config and I find the same
> problem. While still does not work for video, I have changed (flip)
> the public/internal IP addresses on rtpproxy and I can get half call
> leg working properly, includding video.
>
> However, I am testing video calls. So I got another question on top of
> the original post: Can we use rtpproxy also for video or it only
> supports voice rtp proxy?

Yes, it works for both audio and video at the same time. As an example,
see my ipv4-ipv6 tutorial where I used it in bridge mode and tested with
video using Jitsi:

- http://kb.asipto.com/kamailio:kamailio-mixed-ipv4-ipv6

Cheers,
Daniel

>
> Cheers,
> Mo
>
> ------------------------------------------------------------------------
> Date: Thu, 17 Jul 2014 13:56:53 +0200
> From: miconda-***@public.gmane.org
> To: sr-users-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org
> Subject: Re: [SR-Users] Kamailio RtpProxy MHomed
>
> Hello,
>
> 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.
>
> Cheers,
> Daniel
>
> On 16/07/14 15:08, Pascal Fautré wrote:
>
> 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) :
> CONTROL_SOCK=udp:127.0.0.1:7722
> 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-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org <mailto:sr-users-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org>
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
> --
> Daniel-Constantin Mierla -http://www.asipto.com
> http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda
>
> _______________________________________________ SIP Express Router
> (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.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-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Moacir Ferreira
2014-07-18 14:31:08 UTC
Permalink
Hi,

Is it possible to create a static user/extension in Kamailio? I.e.: Have extension 11223344 being sent to IP address 192.168.0.100 while also not requiring this extension to authenticate when making calls.

Cheers!
Moacir
Daniel Tryba
2014-07-21 09:30:21 UTC
Permalink
On Friday 18 July 2014 16:31:08 Moacir Ferreira wrote:
> Is it possible to create a static user/extension in Kamailio? I.e.: Have
> extension 11223344 being sent to IP address 192.168.0.100 while also not
> requiring this extension to authenticate when making calls.

Setting $rd to "192.168.0.100" should do the trick if $rU equals "11223344".
It is up to the endpoint whether to accept this call or not.
Moacir Ferreira
2014-07-21 17:48:10 UTC
Permalink
Thanks for the deedback Daniel. I thought there could be an easier way to do it as we may have several devices like this. But as I got no other responses to my query, then I guess this is the only way to do it!

Cheers!
Moacir
> From: daniel-FwI+/***@public.gmane.org
> To: sr-users-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org
> Date: Mon, 21 Jul 2014 11:30:21 +0200
> Subject: Re: [SR-Users] Non authenticated user/extension
>
> On Friday 18 July 2014 16:31:08 Moacir Ferreira wrote:
> > Is it possible to create a static user/extension in Kamailio? I.e.: Have
> > extension 11223344 being sent to IP address 192.168.0.100 while also not
> > requiring this extension to authenticate when making calls.
>
> Setting $rd to "192.168.0.100" should do the trick if $rU equals "11223344".
> It is up to the endpoint whether to accept this call or not.
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Moacir Ferreira
2014-07-19 11:07:45 UTC
Permalink
I was using an Internet access from Vodafone that has a modem with a SIP ALG for their phone. Not sure why, this modem would prevent to connect properly. But Kamailio/rtpproxy was doing what it was supposed to do as it works on a modem with no ALG.

To fix the posted configuration problem, just flip the internal/external IP when starting rtpproxy. I think the information on how to start it is missleading.

Finally, I tested:

Internet <-> Internet. It works and rtpproxy is not used as supposed to be.
Internet <-> NATed device arriving at the external interface. It works and here rtpproxy is used as it is suppoed to be.
Internet <-> NATed device behind Kamailio (internal interface). It works and here rtpproxy is used as it is suppoed to be.

The only remaining test I want to do is between two devices, registered on internal network, calling eah other. Here rtpproxy should not be used as they are in the same subnet. However, I am afraid it will be used as the check for NATed devices will always be set as NATed if the call is comming from private address space (RFC1918). Am I wrong?

Cheers!
Moacir

Date: Fri, 18 Jul 2014 00:18:27 +0200
From: miconda-***@public.gmane.org
To: sr-users-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org
Subject: Re: [SR-Users] Kamailio RtpProxy MHomed








On 17/07/14 23:10, Moacir Ferreira
wrote:




I have created an environment with the same config
and I find the same problem. While still does not work for
video, I have changed (flip) the public/internal IP addresses on
rtpproxy and I can get half call leg working properly,
includding video.



However, I am testing video calls. So I got another question on
top of the original post: Can we use rtpproxy also for video or
it only supports voice rtp proxy?





Yes, it works for both audio and video at the same time. As an
example, see my ipv4-ipv6 tutorial where I used it in bridge mode
and tested with video using Jitsi:



- http://kb.asipto.com/kamailio:kamailio-mixed-ipv4-ipv6



Cheers,

Daniel






Cheers,

Mo




Date: Thu, 17 Jul 2014 13:56:53 +0200

From: miconda-***@public.gmane.org

To: sr-users-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org

Subject: Re: [SR-Users] Kamailio RtpProxy MHomed



Hello,



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.



Cheers,

Daniel



On 16/07/14 15:08, Pascal
Fautré wrote:



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) :

CONTROL_SOCK=udp:127.0.0.1:7722


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-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users




--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda


_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
mailing list
sr-users-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.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-cR8azDVoa3IcDhw6gZKtMWD2FQJk+8+***@public.gmane.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users




--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Moacir Ferreira
2014-07-21 17:44:17 UTC
Permalink
I am
running Kamailio 4.1.4 and rtpproxy 1.2.0 on a dual-homed server. In another
server I have a Linux video MCU working on the private LAN. Everything works
quite nice from the private and Internet even if the client is behind a firewall.



However, I
decided to host the MCU on the same server that I have Kamailio, changing the
SIP port of the MCU to 5070. WHile the MCU is still functional, the "system" just stop working… Kamailio is fully
functional for phone-to-phone calls, including video. The MCU is fully functional if you call it directly. However, if I call the
MCU via Kamailio, that is on the same server, I will never get anything on the client from the MCU. The softphone will send the RTP to the server but I am not getting the traffic from the MCU arriving at the softphone.


Am I
missing something? Any hint on what I should care in this kind of environment?


Cheers!


Moacir
Daniel Tryba
2014-07-22 08:02:30 UTC
Permalink
On Monday 21 July 2014 19:48:10 Moacir Ferreira wrote:
> Thanks for the deedback Daniel. I thought there could be an easier way to
> do it as we may have several devices like this. But as I got no other
> responses to my query, then I guess this is the only way to do it!

Kamailio has to know about these devices somehow, since they aren't
registering you either have to hardcode or use alias_db_lookup (from alias_db
module) or some other custom db queries.

--

POCOS B.V. - Croy 9c - 5653 LC Eindhoven
Telefoon: 040 293 8661 - Fax: 040 293 8658
http://www.pocos.nl/ - http://www.sipo.nl/
K.v.K. Eindhoven 17097024
Moacir Ferreira
2014-07-23 15:33:35 UTC
Permalink
Hi there!

What are the benefits of using the new mediaproxy-ng over the old rtpproxy?

Thanks,
Moacir
Loading...