It is rather frustrating, as there are so many things in SIP that should work, and in practice they don't.
The latest was that we were using 302 redirects on registrations, and A, AAAA, and SRV records on DNS to steer SIP sessions and registrations to the currently active servers.
This mostly worked, but a few phones simply did not understand the 302 redirects on a register. So we created an alternative host name starting no302 for those as an exception. They would register pot-luck on any active server, and get an error if it was not currently active forcing them to re-check DNS.
Sadly we seem to have found a further stupidity where a phone does understand and follow the 302, but then will not accept calls from the IP of the target of the 302, only the IP it originally contacted. WTF?
So we have changed to not use 302s at all, except those same phones insist on registering on the previously advised temporary redirect now matter ho much we re-register, etc. Ended up power cycling the phones.
So we have :-
- Phones that do not follow 302 redirects at all
- Phones that do, but treat it as very permanent (until power cycle)
- Phones that cannot be redirected back to the configured host name
- Phones that hold DNS answers regardless of specified timeouts
At least we finally have a reasonably scalable solutions. Removing state from the call server means we can also do maintenance a lot more easily.