On 25.10.2013 14:19, Vassilis Radis wrote:
Hello,
When I have 2 clients using a kamailio proxy, and both of the clients
are behind their own NAT, then my only options for relaying media
between them is using some kind of intermediate rtp proxy or STUN etc?
STUN is just a method for a client to find out if it is behind NAT or
not. Using this information also for NAT traversal is error prone and
thus deprecated.
Proxy is on a public IP and essentially I am asking if
I can avoid
setting up stuff to proxy the media or mess with STUN, by using some
kind of request response mangling. i.e. have both clients's sdp
address/port changed to their public facing ip/port and then each client
can send an initial packet to the other end. Those initial packets will
be blocked by the other receiver router, but they will open a nat hole
so that next package from the peer will pass through. Is that feasible?
Sometimes this may work, but there too many different NAT and firewall
types so this will not work in general. There are 2 approaches:
1. ICE: If the clients do support ICE, they can do the NAT traversal
them self and you will get around 90% (just a guess) done by using ICE.
2. Relaying. Either use something integrated into Kamilio (rtpproxy,
mediaproxy-ng) or a dedicated stand-alone TURN server (must be supported
by the clients).
Thus, if you want to have 100% working media, with various types of NATs
and SIP clients, you must use a media relay. Either use ICE and an
optional media relay (to offload your relay) or just enforce a relay for
every call.
regards
Klaus