Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

SIP_504_SERVER_TIMEOUT IP-Телефония и СКУД

SIP 504 Server Time-out: таймауты upstream-шлюзов и зависшие транзакции

Обновлено: 24.08.2026 · Официальная документация ↗

Длительная задержка при вызове с последующим аварийным завершением сессии:

  • После набора номера тишина в трубке продолжается 10–32 секунды, после чего приходит SIP/2.0 504 Server Time-out.
  • Промежуточный прокси-сервер не дождался ответа на запрос (например, INVITE) от вышестоящего сервера в течение отведенного времени.
  • Потери пакетов в магистральном канале связи между АТС и оператором.
  • Блокировка сигнального трафика межсетевым экраном (Stateful Firewall / NAT Timeout Drop).

1. Проверка потерь сигнальных пакетов (MTR / Traceroute)

Запустите трассировку сети с проверкой потерь пакетов до целевого хоста:

mtr -u -P 5060 -c 100 <IP_адрес_SIP_прокси_оператора>

Если на промежуточных узлах наблюдается потеря пакетов (Packet Loss > 1%), это приводит к сгоранию транзакционных таймеров SIP.

2. Анализ стандартных таймеров SIP (RFC 3261)

Протокол SIP определяет поведение транзакций следующими таймерами:

  • Timer T1: Базовый RTT (по умолчанию 500 мс). Определяет интервалы повтора пакетов UDP.
  • Timer B (INVITE Transaction Timeout): 64 * T1 (обычно 32 секунды). Если за это время не получен даже 100 Trying, прокси генерирует 504.
  • Timer F (Non-INVITE Timeout): Таймаут для REGISTER/OPTIONS.

3. Оптимизация NAT и UDP Keep-Alive в PJSIP

Если удаленный шлюз находится за NAT и сбрасывает трансляции портов:

[provider-transport]
type=transport
protocol=udp
bind=0.0.0.0:5060

[provider-registration]
type=registration
transport=provider-transport
outbound_auth=provider-auth
server_uri=sip:provider.com
client_uri=sip:user@provider.com
; Отправка пакетов поддержки сессии NAT каждые 20 сек:
keep_alive_interval=20

[provider-endpoint]
type=endpoint
force_rport=yes
rewrite_contact=yes
rtp_symmetric=yes

4. Настройка Failover по таймауту в Kamailio

Настройте переключение на резервный шлюз до наступления глобального тайм-аута:

# Установка таймаута ожидания первого ответа (Fr_Inv_Timer) в 4 секунды:
modparam("tm", "fr_timer", 4000)
modparam("tm", "fr_inv_timer", 20000)

failure_route[GW_FAILOVER] {
    if (t_branch_timeout()) {
        if (use_next_gw()) {
            t_relay();
            exit;
        }
    }
}
💡 Практика специалистов: Если 504 возникает на стороне оператора связи при звонках на мобильные номера, это часто указывает на сбой взаимодействия между MSC оператора и HLR/HSS базовой сети при определении местоположения абонента.

Частые вопросы (FAQ)

В чем разница между SIP 408 Request Timeout и SIP 504 Server Time-out?

Код 408 генерируется конечным клиентом (UAC) или непосредственным сервером, если он сам не дождался ответа. Код 504 генерируется промежуточным прокси/SBC, сообщающим, что таймаут произошел глубже в сети (на вышестоящем сервере).

Почему вызов отваливается по 504 ровно через 32 секунды?

32 секунды — это стандартное значение таймера B (64 * 500мс T1) для ненадежного транспорта UDP согласно спецификации RFC 3261.

Как предотвратить зависание очередей вызовов при ошибках 504?

Уменьшайте время ожидания ответа от каждого транка в диалплане: Dial(PJSIP/${EXTEN}@trunk1,15) — если за 15 секунд шлюз не ответил, управление перейдет к следующему шагу диалплана.

Может ли переход на TCP/TLS устранить ошибку 504?

Да, если проблема была вызвана потерей больших фрагментированных пакетов UDP на маршрутизаторах или блокировкой UDP-сессий межсетевыми экранами.

Полезные материалы
Рекомендуем