Ситуация:
Стало постоянно отваливаться устройство XXX. В истории регистраций видно, что устройство постоянно уходит в оффлайн и возвращается. Исходящие с трубки идут без проблем, а вот входящие проходят крайне редко.
Решение:
Для понимания природы явления придётся немного углубиться в технические детали.
В SIP есть два понятия:
а) периодическая перерегистрация устройства. Сервер задаёт минимальное, максимальное и дефолтное значение времени перерегистрации. Устройство выбирает значение в этих рамках. Например, выбрано дефолтное значение 3 минуты. Это значит что клиентское устройство будет каждые 3 минуты регистрироваться на сервере, сообщая что оно ещё доступно.
б) проверка доступности устройства (qualify). Сервер отправляет SIP пакет в сторону клиента. Если клиент отвечает, то он жив. Предположим что период проверки равен 2 минутам.
Чаще всего описанная ситуация происходит при неверной настройке поддержания проброса порта в NAT.
Что происходит:
1. клиентское устройство регистрируется на сервере – оно входит в онлайн.
2. через две минуты сервер ”пингует” клиента и, не получив ответа (NAT не доводит до клиента), переводит устройство в оффлайн
3. ещё через минуту (чуть меньше) повторяется пункт 1, что переводит устройство в онлайн.
Вот так оно и мечется.
Вы можете предложить убрать qualify и оставить только регистрацию – ведь оно исправно сообщает серверу что устройство живо. Но это не так.
Ведь если сервер посылает звонок устройству, то звонок точно из-за той же проблемы с NAT не дойдёт до устройства.
Надо решать проблему с NAT.
1. В некоторых устройствах есть функция поддержания NAT (Keep NAT alive, NAT ping). Включаете эту опцию и проверяете не решило ли это проблему.
2. Нередко на роутере стоит отключить так называемый ”SIP alg” – алгоритм, который призван решать эту проблему, но часто, наоборот, мешает.
3. Если ничего не помогает, то точно должен помочь статический проброс порта на роутере на конкретное устройство.