SIP Error 414 Request-URI Too Long: переполнение длины URI
- Ответ
SIP/2.0 414 Request-URI Too Longпри попытке совершения вызова. - Request-URI содержит гигантскую строку символов из-за зацикливания добавления префиксов переадресации.
- Оборудование не может распарсить URL вызова из-за ограничений стека памяти.
1. Проверка Request-URI в sngrep
sngrep -c "414 Request-URI Too Long"Обратите внимание на первую строку стартового пакета:
INVITE sip:123456789012345678901234567890...[много символов]...@domain.com SIP/2.02. Поиск циклов переадресации (Forwarding Loops) в диалплане
Частая причина — некорректная безусловная переадресация, дописывающая префиксы на каждом шаге:
; Ошибочный диалплан (вызывает зацикливание):
[bad-loop]
exten => _X.,1,Dial(PJSIP/999${EXTEN}@local_pbx)
; Исправленный диалплан с защитой от зацикливания:
[safe-dial]
exten => _X.,1,GotoIf($[${LEN(${EXTEN})} > 25]?error,1)
exten => _X.,n,Dial(PJSIP/${EXTEN}@provider_trunk)
exten => error,1,Hangup(21)3. Очистка пользовательских заголовков
Удалите чрезмерные параметры из URI перед отправкой:
-- В Kamailio:
$ru = "sip:" + $rU + "@" + $rd; # Сброс дополнительных параметров URI Частые вопросы (FAQ)
Какова максимально допустимая длина Request-URI в SIP?
Стандарт RFC 3261 не устанавливает жесткого лимита, но большинство реализаций стеков (включая PJSIP и Sofia-SIP) ограничивают длину буфера строки URI от 1024 до 2048 байт.
Как зацикливание переадресации приводит к ошибке 414?
Если АТС А пересылает звонок на АТС Б с добавлением префикса, а АТС Б возвращает звонок на АТС А со своим префиксом, строка URI растет до исчерпания буфера парсера, вызывая 414 (или 483 Too Many Hops).