[SR-Users] B2BUA removing a=nortpproxy:yes (rtpproxy-1 <---RTP---> rtpproxy-2)

Iñaki Baz Castillo ibc at aliax.net
Sat Apr 24 15:00:28 CEST 2010


2010/4/24 Juha Heinanen <jh at tutpro.com>:
> Iñaki Baz Castillo writes:
>
>  > If these rtpproxy use the same IP as the Kamailio's SIP signalling IP,
>  > then there is no problem and no need to use "-r" flag.
>
> inaki,
>
> does it work in the common case where there is two sip proxys and two
> rtpproxies belonging to two organizations that don't have any trust
> relationship between them and ip addresses of the rtpproxies are not the
> same as sip proxy ip addresses?

In such case, the first Kamailio's nathelper module would add a line
"a=nortpproxy" and force RTP throught its RtpProxy-1.
The INVITE arrives to Kamailio-2 with the SDP *untouched* (same as
nathelper-1 set).

Kamailio-2's nathelper would detect "a=nortpproxy" (hopefully) so it
wouldn't force its RtpProxy-2. Ok, no problem.


But in my case, there is a buggy transparent SIP proxy between
Kamailio-1 and Kamailio-2, and it removes the "a=nortpproxy" (by
leaving untouched the rest of the SDP).
Then, since RtpProxies listen in a IP different than Kamailio, and
since both use "force_rtp_proxy()" with no "-r" flag, a deadlock
occurs:
Both RtpProxies prefill the caller and callee media address as remote
"KAMAILIO_IP:SDP_PORT" (since "-r" flag is not used) so after
sometomeout without receiving RTP both will send RTP to the prefilled
media address (error, of course).

By using "-r" (in both or just one of the RtpProxies) it will work as
such RtpProxy will prefill the remote media address with the SDP
received media address (the IP from with the remote RtpProxy will sent
RTP).



My conclussion is that using "-r" flag is MUCH better than not using it. Why?

Without "-r" flag:
- RtpProxy prefills the remote address with SIP_RECEIVED_IP:SDP_PORT
(which just makes sense in some corner cases).
- If RtpProxy doesn't receive RTP in the port it publishes, it will
forward its RTP to SIP_RECEIVED_IP:SDP_PORT.

With "-r" flag:
- RtpProxy prefills the remote address with SDP_IP:SDP_PORT.
- If RtpProxy doesn't receive RTP in the port it publishes, it will
forward its RTP to SDP_IP:SDP_PORT.

In the case of two RtpProxy speaking between them, the second option
(-r) is desired. If not, it will not work as described above.


-- 
Iñaki Baz Castillo
<ibc at aliax.net>




More information about the sr-users mailing list