Траблшутинг факсов T.38 в Asterisk: настройка UDPTL и обработка ошибок на SIP-транках
- Срыв передачи факсимильных сообщений на 1–2 странице с кодом ошибки
DIS/DTC not receivedилиTraining check failed. - В логах Asterisk ошибка
T.38 negotiation failed / Rejected with 488 Not Acceptable Here. - Шум, пропадание несущей частоты факс-модема (V.17 / V.29 / V.27ter) при использовании голосового кодека G.711a.
- Потеря пакетов в потоке UDPTL при прохождении через межсетевые экраны.
1. Настройка стека UDPTL в udptl.conf
Отредактируйте /etc/asterisk/udptl.conf:
[general]
udptlstart=4000
udptlend=4999
udptlchecksums=no
; Избыточность для компенсации потерь пакетов (Redundancy)
udptlfecentries=0
udptlfecspan=0
udptlredundancy=3
; Максимальный размер датаграммы UDPTL
maxdatagram=14002. Включение поддержки T.38 в pjsip.conf
Для провайдерского транка и факсимильных аппаратов (ATA-шлюзов Grandstream, Cisco SPA) добавьте директивы T.38:
[provider-endpoint]
type=endpoint
;
;
; Включение согласования T.38 Gateway
t38_udptl=yes
t38_udptl_ec=redundancy
t38_udptl_maxdatagram=1400
t38_udptl_nat=yes
t38_udptl_ipv6=no
fax_detect=yes
fax_detect_timeout=83. Диалплан приема входящего факса в PDF (res_fax)
[incoming-fax]
exten => receive,1,NoOp(Receiving Inbound FAX via T.38)
same => n,Answer()
same => n,Set(FAXFILE=/tmp/fax_${UNIQUEID}.tif)
same => n,ReceiveFAX(${FAXFILE},d)
same => n,NoOp(FAX Status: ${FAXSTATUS}, Pages: ${FAXPAGES})
same => n,System(/usr/bin/tiff2pdf -o /var/spool/asterisk/fax/${UNIQUEID}.pdf ${FAXFILE})
same => n,Hangup()4. Трассировка UDPTL в CLI
asterisk -rx "udptl set debug on"
asterisk -rx "pjsip set logger on" Частые вопросы (FAQ)
Что надежнее для факсов: T.38 или G.711 Passthrough?
T.38 специально разработан для передачи факсов поверх пакетных IP-сетей, так как преобразует аналоговый сигнал в цифровые команды и компенсирует потери пакетов (Redundancy). G.711 Passthrough крайне чувствителен к любому джиттеру (>5 мс) и потерям пакетов (>0.1%).
Почему провайдер отклоняет T.38 Re-INVITE с ошибкой 488?
Провайдер не поддерживает T.38 на данном транке. В этом случае необходимо отключить T.38 (t38_udptl=no) и настроить передачу факсов методом G.711 Alaw с отключенным эхоподавлением и джиттер-буфером фиксированного размера.
Какая максимальная скорость передачи рекомендуется для факсов в VoIP?
Ограничьте максимальную скорость передачи (Max Transmission Rate) на факс-аппаратах и ATA-шлюзах до 9600 или 14400 бит/с (отключив стандарт Super G3 / V.34), что кардинально повышает успешность сессий.
Зачем открывать отдельный диапазон UDP 4000-4999?
Пакеты протокола UDPTL не используют основной пул портов RTP (10000-20000), а транслируются через выделенный в udptl.conf диапазон портов, который должен быть открыт на межсетевом экране.