[15335] После обновления sip перестал осуществлять вызовы

Здравствуйте. После обновления с версии 3.53.0 до 3.59.3 ЛЭРС перестал осуществлять звонки через sip. При перезагрузке контейнера ЛЭРС совершает один-два вызова, все последующие, судя по логам, просто встают в очередь
Версия ЛЭРС УЧЁТ: 3.59.3 ЛЭРС-Р
Сервер БД: SQL Server
server.2024-11-11.log.gz (127,2 КБ)
прикрепил лог сервера, после перезапуска было 2 вызова, в 17:22:30.5818 и 17:22:52.1871

Ситуация странная. Попробуйте воспроизвести ситуацию еще раз и после запустите ручной опрос одной из точек, номер модема которой был поставлен в очередь вызова ранее, но не был вызван. Сообщите будет ли осуществлен вызов в ходе ручного опроса.

В таком сценарии ручной опрос не запускается, пишет, что порт занят (т.к. в данный момент активно предыдущее задание опроса, в котором не был совершен вызов). Сейчас после перезапуска контейнера было совершенно 5 вызовов.
server.2024-11-12.log.gz (196,5 КБ)
В этом логе нет отладочных сообщений, поэтому не вижу были ли в очередь поставлены

Подскажите, а для подключения ЛЭРС к SIP какие порты используются? Попробуем ещё здесь посмотреть

Для подключения используется URL, который вы настроили в системных параметрах. Если порта в нём нет, то будет использован 5060 для незашифрованного протокола и 5061 для зашифрованного.

После анализа трафика оказалось, что при ответе на звонок помимо соединения по порту 5060 происходит попытка открытия еще одного UDP-соединения по случайному порту (RTP). Т.к. наш firewall по-умолчанию закрыт - RTP-соединение не устанавливается.
На версии 3.53.0 это не приводило к проблемам, т.к. после ответа на звонок он должен сразу сбрасываться без необходимости передачи голоса. После обновления с версии 3.53.0 до версии 3.59.3 Лэрс после перезагрузки стал совершать только один вызов, а дальше - тишина.
Можно ли вернуть старый алгоритм, при котором закрытые RTP-порты не приводили к прекращению отправки вызовов?

К сожалению, нельзя. Начиная с версии 3.43 библиотека и алгоритмы работы с SIP не изменялись, так что даже не знаю что вообще можно вернуть.

Можем ли мы предоставить ещё какие-либо логи, чтобы Вы помогли разобраться с ситуацией?

Для начала включите в системных параметрах на закладке “протоколирование” флажок “Протоколировать отладочные сообщения” и покажите журнал после перезагрузки, чтобы были видны совершённые вызовы. Нам нужно понять ставятся ли сообщения в очередь. Когда журнал приложите, флажок можно снять, чтобы не увеличивать размер файла журнала.

server.2024-11-14.log.gz (583,3 КБ)
Сегодня после перезапуска ЛЭРС смог сделать 18 вызовов, дальше перестал звонить

Из присланного журнала видно, что сообщения вызовов ставятся для немедленной отправки.
Уточните, пожалуйста, после того, как Сервер перестал совершать вызовы, он пытается связаться с вашим SIP-сервером? Воспроизведите ситуацию еще раз, откройте на компьютере Сервера ЛЭРС УЧЕТ Диспетчер задач Windows, перейдите на вкладку “Производительность”, откройте монитор ресурсов и в нем на вкладке “Сеть” отфильтруйте активность по процессу “Lers.Server.exe” Проверьте наличие поделючениц к вашему SIP-серверу.

Похоже, что действительно очередь SIP сообщений на каком-то номере телефона намертво зависла. И вполне возможно, что это связано с тем, что у вас закрыты RTP-порты. Возможно, этот модем почему-то пытается взять трубку голосового вызова, и закрытые RTP порты каким-то образом останавливают обращения к SIP-серверу. По журналу похоже, что система зависла при звонке на номер +79213290977. Попробуйте временно отключить автоопрос устройства с этим номером и проверить будет ли воспроизводиться проблема.

Со своей стороны мы ещё раз проверим нашу работу с SIP сервером. Возможно, где-то таймаут не задан, или задан слишком большой, и очередь останавливается вместо того, чтобы выдать ошибку и продолжить работу со следующими номерами телефонов.

Мы нашли потенциальную причину, по которой очередь SIP могла остановиться. Попытаемся исправить в 3.59.4. Если после установки новой версии ситуация воспроизведётся, тогда снова включите отладочные сообщения и отправьте нам журнал. Мы добавили в него дополнительную информацию, чтобы в дальнейшем проще было понять в чём проблема.

Когда ЛЭРС перестает совершать вызовы он перестает и подключаться к серверу SIP.
У нас ЛЭРС развернут в контейнере, поэтому по Вашей инструкции не получится проверить, сняли лог обращений с помощью Wireshark. Журнал сервера и лог отправил на почту support@lers.ru

Снял задачи автоопроса с этим номером, но ЛЭРС стал останавливать звонки на другом номере. Если это связано, с тем, что вместо сброса вызова происходит соединение, то, возможно, это соединение, инициированное оператором. Сейчас часто можно наблюдать, когда вызов сбрасывается прибором, а у звонящего устанавливается соединение и звучит ответ оператора, что абонент не может ответить на вызов, и происходит это даже с отключенным голосовым почтовым ящиком

Если ответ будет получен, то ЛЭРС соединение разорвёт и посчитает, что вызов модема не удался. Но из-за каких-то особенностей инфраструктуры мы не получаем уведомление о том, что удалённый модем снял трубку.

Как я уже написал, постарались стабилизировать эту ситуацию в 3.59.4. Она выйдет на следующей неделе, нужно проверить воспроизведётся ли остановка на ней.

Протестировал на версии 3.59.4
Лог сервера отправлен на почту.
Был развернут новый контейнер в docker с чистой БД, создан один объект учета, в подключении номера менялись.
После запуска сервера в 2024-11-20 11:48:47.2046 был запущен сеанс опроса, вызов совершен в 2024-11-20 11:51:11.9346. В журнале опроса информация о совершении вызова не появилась. После остановки опроса и новых попытках вызов уже не совершался.
Была попытка позвонить на второй номер, вызовы так же не проходили.
После перезапуска сервера в 2024-11-20 12:04:02.6288 была попытка совершить ещё один вызов по второму номеру (2024-11-20 12:04:33.0781). Этот номер точно сразу сбрасывает вызов, без установки соединения, при этом контейнер ЛЭРС прекращает работу

Т.к. на 3.59.3 мы обновлялись с 3.53.0 решил проверить, в какой момент стала появляться ошибка
Установил в docker с пустой БД версию 3.53.0, создал один объект учета с двумя подключениями, в одном номер, при звонке на который после гудков устанавливается соединение оператором и звучит сообщение “Абонент не ответил на звонок…”, в другом номер, который сбрасывает вызов. Далее стал проверять, последовательно устанавливая версии 3.54.0 - 3.55.0 - 3.56.0 - 3.57.0
Проблема с вызовом началась с версии 3.57.0, ЛЭРС перестает звонить после совершения вызова на номер, с которым устанавливается соединение

В 3.57 изменений в библиотеки SIP точно не вносилось, так что ситуация понятнее не стала. Если есть возможность, дайте нам через почту доступ к вашему SIP серверу и несколько номеров телефонов, на которых вызовы прекращаются. Посмотрим как это воспроизведётся у нас.

К сожалению, к нашему серверу SIP не получится предоставить доступ, т.к. он находится в нашей локальной сети