| Quote: |
| there are protocol technologies such as STUN, TURN, and ICE |
ICE is not a protocol - more a method of using STUN and TURN together to try everything possible to try and traverse NAT.
There are certain situations where both end-points are behind a particular type of NAT where you will not traverse it no matter what you do, and you have to proxy. In my experience here this is less than 2% of users however, so you can always take a view on that. Most NAT devices will open a "pinhole" for the UDP media traffic which stays open for a period of time. Both STUN and TURN utilise this to work, in different ways. Not all NAT devices allow it however.
The more intelligent SIP Session Border Control devices (the Ditech's spring to mind) try a majority of STUN, TURN and other tricks, resorting to media proxy only when absolutely necessary. I tend to call these "Intelligent NAT Traversal" devices. At the moment there are no open-source devices out there for this that I am aware of.
I believe that openSER will be configurable do to this at some point as intelligent NAT traversal is in the roadmap.
For now the easy options are:-
1. Buy a Ditech C1000 (or other intelligent NAT traversal device). That's a $10k outlay but it will make the problem go away.
2. Try using STUN, TURN or both (ICE).
3. Just route all media through an RTP proxy and be done with it.
The difficult option will be to build a config (and possibly re-code some of openSER) to try an ICE combo and then proxy in the event of media failure only.
See also:-
http://www.voipuser.org/forum_topic_7295.html