SIP Error 413 Request Entity Too Large: переполнение размера пакета
- Сервер или пограничный шлюз возвращает
SIP/2.0 413 Request Entity Too Large. - Размер SIP-пакета превышает стандартный MTU (1500 байт), вызывая фрагментацию IP-пакетов.
- Пакеты
INVITEс огромным количеством кодеков, ICE-кандидатов (WebRTC) или сертификатов отбрасываются.
1. Проверка размера SIP пакета в байтах
sngrep -c "413 Request Entity Too Large"
# Или захват через tcpdump
tcpdump -nnvv -i any port 5060 -s 02. Сокращение списка согласуемых кодеков
Удалите неиспользуемые видео и аудио кодеки из конфигурации транка, чтобы уменьшить SDP-часть:
[my_endpoint]
type=endpoint
disallow=all
allow=alaw
allow=g729
; Отключите лишние видеокодеки (h264, vp8, vp9), если передается только голос3. Перевод транспорта с UDP на TCP или TLS
Протокол UDP не предназначен для передачи больших сообщений. Настройте транспорт TCP в pjsip.conf:
[transport-tcp]
type=transport
protocol=tcp
bind=0.0.0.0:5060
[my_endpoint]
type=endpoint
transport=transport-tcp Частые вопросы (FAQ)
Какой максимальный размер SIP-сообщения допускается для UDP по RFC 3261?
Согласно RFC 3261 (раздел 18.1.1), если размер SIP-сообщения превышает значение MTU за вычетом 200 байт (обычно около 1300 байт), клиент обязан автоматически переключиться на протокол TCP.
Почему WebRTC вызовы часто вызывают ошибку 413?
WebRTC использует сложные структуры SDP с криптографическими ключами DTLS-SRTP и десятками ICE-кандидатов, в результате чего размер пакета достигает 3-5 КБ. WebRTC обязан работать исключительно по TCP/TLS/WSS.