Real-time communication sessions between end-points may fail. A properly configured together application and service should always work unless there are explicit forces that aim to block such communications. Real-time communications, regardless of protocol used (SIP, XMPP or other), is a complex topic, for each session several IP addresses, port and protocols combinations are used in both directions. What are the possible reasons for such failures? Here is a checklist that can help eliminate possible causes:
- Upgrade to the latest version of your application, very often a problem may have already been solved even if the changeling does not explicitly list it. Unfortunately, there is also a risk of breaking existing functionality when installing a new version that contains a bug.
- Firewall software installed. Check if no software blocks access to the ports used by your application or enable the use of the proper ports in the firewall configuration.
- SIP ALG enabled. Your router re-writes the content of your SIP packets and breaks the communication. Check if the rouer has such feature enabled and disable it. Alternatively try use TCP or TLS instead of UDP if the service provider support it.
- Firewall enabled. Check if no firewall is configured in the router to block access to the ports used by your application or enable the use of the proper ports in the firewall configuration.
Internet Service Provider
- Policy that blocks either signalling or media. You can try use another SIP Service Provider that gives access over TCP or TLS instead of UDP or is using custom ports. Otherwise, use another ISP.
- Provider does not allow the use of ICE for NAT traversal and forces a media relay instead. Turn of ICE in the client.
SIP Service Provider
- Provider requires use of STUN protocol for providing a public IP address in the Contact header used by the SIP device. Sometimes they simply won't even answer to any request because of this. Usage of STUN for signaling purposes is an unreliable technique for traversing NAT routers, such behaviour is explicitly discouraged by the standards . Tell your provider that what they are doing is wrong or use another provider.
- Provider does does not support certain audio or video codecs. Instead of rejecting such sessions with an appropriate code, they simply won't answer.