SIP Error 606 Not Acceptable: несовместимость кодеков и параметров медиа
- Звонок завершается мгновенно со статусом
606 Not Acceptableбез воспроизведения КПВ. - В логах фиксируются ошибки транскодинга:
No common codec foundилиSDP media offer not acceptable. - Конфликт протоколов шифрования медиапотока (попытка отправить незашифрованный RTP на endpoint, требующий обязательный SRTP/SAVPF).
- Несовпадение параметров частоты дискретизации или packetization time (ptime) между шлюзом и телефоном.
1. Архитектура SIP 606 Not Acceptable (RFC 3261 §21.6.4)
Ответ 606 Not Acceptable указывает, что некоторые аспекты запрошенного сеанса (описанные в теле SDP: список аудио/видео кодеков, криптографические ключи SRTP, параметры полосы или атрибуты DTMF) принципиально неприемлемы для удаленной стороны в глобальном масштабе.
2. Анализ предложения кодеков в SDP через sngrep
sngrep -c -d any "606 Not Acceptable"В теле пакета INVITE изучите строки m=audio и a=rtpmap:
m=audio 16420 RTP/AVP 0 8 18 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=rtpmap:101 telephone-event/8000Если принимающая сторона поддерживает исключительно OPUS или AMR-WB, она вернет ответ 606 (либо 488).
3. Конфигурация списка кодеков в Asterisk (chan_pjsip)
Настройте единый совместимый стек голосовых кодеков в /etc/asterisk/pjsip.conf:
[endpoint-template](!)
type=endpoint
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=opus
; Настройка передачи DTMF (RFC 4733 / RFC 2833)
dtmf_mode=rfc4733
; Совместимость SRTP
media_encryption=no
timer=yes4. Проверка шифрования медиапотока (SRTP vs RTP)
Если принимающий шлюз требует WebRTC / SRTP, настройте профиль шифрования:
[webrtc-endpoint]
type=endpoint
use_avpf=yes
media_encryption=sdes ; или dtls
dtls_verify=fingerprint
dtls_cert_file=/etc/asterisk/keys/asterisk.pem
dtls_ca_file=/etc/asterisk/keys/ca.crt
dtls_setup=actpass5. Проверка транскодинга модулей ядра Asterisk
asterisk -rx "core show translation"Убедитесь, что между кодеками нет значений - (что означает отсутствие модуля транскодинга, например codec_g729 или codec_opus).
Частые вопросы (FAQ)
В чем отличие SIP 488 Not Acceptable Here от SIP 606 Not Acceptable?
488 означает, что медиапараметры неприемлемы для конкретного терминала, но прокси может попытаться отправить вызов на другой терминал абонента с другими кодеками. 606 означает категорическую невозможность согласовать медиа ни на одном устройстве.
Какой ISDN Cause Code соответствует SIP 606?
Код 606 транслируется в Q.850 Cause Code 88 (Incompatible destination) или Cause 65 (Bearer capability not implemented).
Может ли несовпадение видеокодеков вызвать ошибку 606?
Да, если в SDP отправлен обязательный видеопоток (m=video), а принимающая сторона не поддерживает H.264/VP8/VP9 и не умеет отклонять только видеочасть (port 0).
Как исправить ошибку 606 при работе с WebRTC клиентами?
WebRTC требует обязательного использования профиля RTP/SAVPF, шифрования DTLS-SRTP и кодеков Opus/VP8. Убедитесь, что ваш медиасервер выполняет транскодинг в классический RTP/AVP (Alaw/Ulaw) для выхода в ТфОП.