Траблшутинг SIP Option Pings: ложный статус UNREACHABLE на транках
- Транки операторов связи спонтанно переходят в статус
UNREACHABLEс невозможностью совершать вызовы. - В CLI Asterisk фиксируются предупреждения
Contact ... is now Unreachable. RTT: 0.000 msec. - Звонки продолжают успешно проходить, однако мониторинг шлет алерты об аварии транка.
- Провайдер блокирует IP-адрес АТС из-за слишком частых запросов
OPTIONS.
1. Диагностика статуса доступности транка в консоли
# Для драйвера PJSIP
asterisk -rx "pjsip show contacts"
asterisk -rx "pjsip show endpoints"
# Для старого драйвера Chan_SIP
asterisk -rx "sip show peers"2. Тюнинг таймеров Qualify в PJSIP (pjsip.conf)
По умолчанию таймаут ожидания ответа на OPTIONS составляет всего 2-3 секунды. При кратковременном всплеске сетевой задержки транк объявляется мертвым. Увеличьте интервалы и таймаут:
[trunk-provider-aor]
type=aor
contact=sip:provider.voip.com:5060
# Опрос каждые 60 секунд вместо 15
qualify_frequency=60
# Увеличение ожидания ответа до 5.0 секунд
qualify_timeout=5.0
# Допустимое количество неудачных попыток перед сбросом статуса
authenticate_qualify=no3. Проверка фаерволов и фильтрации ICMP/SIP
Некоторые операторы или граничные маршрутизаторы (SBC) не отвечают на SIP OPTIONS, либо режут частые пакеты политиками Rate Limiting:
# Проверка прохождения запроса вручную через sngrep
sngrep -d any host provider.voip.com and port 5060Если сервер возвращает 404 Not Found, 405 Method Not Allowed или 200 OK — транк считается доступным. Если ответа нет вообще (Таймаут) — проверьте локальный iptables:
# Убедитесь, что conntrack не сбрасывает связанные SIP соединения
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT4. Отключение Qualify для провайдеров без поддержки Option Ping
Если провайдер требует статической маршрутизации без пингов, отключите отправку OPTIONS:
# В секции AOR установите:
qualify_frequency=0 Частые вопросы (FAQ)
Считается ли ответ 'SIP/2.0 404 Not Found' на запрос OPTIONS признаком недоступности транка?
Нет. Любой валидный ответ SIP (включая 200 OK, 403 Forbidden, 404 Not Found, 405 Method Not Allowed, 501 Not Implemented) свидетельствует о том, что удаленный стек SIP жив и обрабатывает команды. Статус UNREACHABLE выставляется только при полном отсутствии ответа по таймауту.
Почему транк падает в UNREACHABLE при высокой загрузке интернет-канала?
При переполнении канала (Bufferbloat) время кругового обращения (RTT) пакета OPTIONS превышает значение qualify_timeout (дефолт 2000 мс). Пакет признается потерянным, и АТС помечает транк недоступным.
Как часто нужно отправлять запросы qualify_frequency?
Для транков с публичными статическими IP-адресами оптимален интервал 60-120 секунд. Для клиентов за динамическим NAT — 25-30 секунд для предотвращения закрытия UDP-сессии.
Что произойдет, если совершить вызов через транк в статусе UNREACHABLE?
Asterisk сразу вернет внутреннему абоненту ошибку 'CONGESTION' (быстрые короткие гудки), даже не пытаясь отправить реальный сетевой INVITE провайдеру.