We are creating a custom XMPP client that will provide voice call and video call functionality using jingle. The negotiation will be done via XMPP whereas realtime data will be sent over RTP. The transport mechanism we are looking for is ICE UDP as described in XEP-0176. Uptill now we have been successfully able to do voice call in a local network environment.
Now, in order to perform voice call over the internet between 2 client applications which are behind NAT and enterprise firewall. We are facing difficulties as to how we can achieve this. It appears that we might have to setup a TURN server to act as a relay. But before that we need to know:
If Jingle Relay Nodes or Media Proxy that are already available in Openfire, can they help us in achieving connectivity without TURN?
Is there any other mechanism that can help us solve this issue?
If we would have to use TURN server, is there any reliable plugin available for it in Openfire and what would be the workflow?