SIP Error 422 Session Interval Too Small: настройка Session Timers и Min-SE
- Исходящий звонок возвращает ответ
SIP/2.0 422 Session Interval Too Smallна первыйINVITE. - В ответе присутствует заголовок
Min-SEс числовым значением (например,Min-SE: 1800илиMin-SE: 90). - После получения ответа 422 вызов либо повторно отправляется с новым интервалом, либо сбрасывается устаревшими АТС.
1. Механика возникновения ошибки по RFC 4028
Инициатор вызова отправляет запрос с заголовком Session-Expires, значение которого меньше, чем минимально допустимый интервал безопасности (Min-SE) на сервере или транзитном прокси:
INVITE sip:target@carrier.com SIP/2.0
Session-Expires: 60;refresher=uac
Supported: timerОтвет шлюза оператора:
SIP/2.0 422 Session Interval Too Small
Min-SE: 90
Server: Carrier-SBC2. Корректировка таймеров сессий в Asterisk (chan_pjsip)
Отредактируйте параметры таймеров в /etc/asterisk/pjsip.conf:
[general]
# Глобальные настройки PJSIP
[my-endpoint]
type=endpoint
timers=yes
# Рекомендуемые стандартные значения RFC 4028:
timers_min_se=90
timers_sess_expires=1800
# Роль инициатора обновления таймера (uac, uas, none)
timers_refresher=uasПерезагрузите модуль PJSIP:
asterisk -rx "pjsip reload"3. Конфигурация FreeSWITCH
В файле /etc/freeswitch/sip_profiles/external.xml отрегулируйте переменные сессионных таймеров:
<param name="session-timers" value="supported"/>
<param name="minimum-session-expires" value="120"/>
<param name="session-timeout" value="1800"/>4. Настройка Cisco CUBE (IOS-XE)
voice service voip
sip
min-se 90
session refresh validate
session-timer mode dual Частые вопросы (FAQ)
Какое минимальное значение Min-SE разрешено стандартом RFC 4028?
Стандарт RFC 4028 строго запрещает устанавливать значение Min-SE меньше 90 секунд, чтобы предотвратить перегрузку сигнальной сети частыми служебными re-INVITE/UPDATE запросами.
Должен ли SIP-клиент завершать вызов при получении 422?
Нет. Корректный клиент обязан автоматически сформировать новый запрос INVITE в рамках той же транзакции, установив Session-Expires равным или большим значению из заголовка Min-SE полученного ответа 422.
Что произойдет, если во время активного разговора refresher не успеет отправить UPDATE?
Если по истечении интервала Session-Expires ни одна из сторон не прислала подтверждающий запрос, обе стороны обязаны автоматически разорвать медиа-сессию и отправить BYE.
Как полностью отключить Session Timers, если они вызывают сбои?
В Asterisk укажите 'timers=no' в pjsip.conf. В FreeSWITCH установите '<param name="session-timers" value="false"/>'.