[Из песочницы] Факс в большом городе (T.38)

Если в какой-то ужасный день вы столкнулись с передачей факсов по ip-сети, то, надеюсь, моя первая статья хоть немного вам поможет. В ней постараюсь рассмотреть логику отправки факсов и некоторые проблемы с которыми мне и моим коллегам пришлось столкнуться. Так же хотелось бы увидеть ценные комментария связистов и поправки, в случае моей неточности.
image

Мы рассмотрим под катом:

1. Что такое факс
2. Что такое передача факсов
3. Что такое передача факсов в IP
4. Что делать если факсы не ходят

Для начала давайте разберемся, что такое факс.

Факс, факси́мильная свя́зь (не факсими́льная) — технология передачи неподвижных изображений по телефонной линии. Способ одинаково пригоден для передачи как графической, так и буквенно-цифровой информации

Принцип работы факсов


Факсимильный аппарат (факс) — достаточно сложное устройство. Но принцип работы его достаточно простой и похож на принцип работы телевизора. В передающем факсимильном аппарате есть светочувствительные элементы. На них попадает изображение. Но эти элементы считывают очень узкую полоску документа — строку. Электроника преобразует сигналы с этого светочувствительного элемента и передает в линию.

Передача ведется страницами, а страница передается построчно, причем строкой является не строка символов, а строка пикселей (точек). При передаче используется аппаратное сжатие данных, что позволяет уменьшить размер передаваемых данных на 80–90%, а значит снизить стоимость передачи.

Предусмотрено несколько алгоритмов сжатия — классический (одномерный) модифицированный метод Хаффмана, алгоритм МR (двумерный) и алгоритм ММR– модификация алгоритма МR.

Ошибка чаще всего вызываются всплеском шума на линии. При отсутствии коррекции ошибок контролируется лишь число точек (пикселей), которое должно быть фиксированным.

Если длина принятой строки нестандартная, считается, что произошла ошибка. Если ошибки редки — выводят строку «как есть».

На другом конце линии принимающий аппарат расшифровывает сообщение, которое он принял от передающего аппарата, и ставит на бумагу точки там, где надо. Дальше передается следующая строка изображения и так повторяется до тех пор, пока не передастся полностью весь документ.

Работа факсов основана на цифровом методе обработки и передачи сигнала. Эти аппараты передают черно-белое изображение со скоростью до 14400 бит/с по аналоговым каналам телефонной сети общего пользования. Для передачи данных по линии, факсы используют разные типы модуляции (V. 21, V. 17, V. 29ter), отсюда и разные скорости передачи факсов. Все протоколы работают в полудуплексном режиме передачи данных, так как основной поток данных передается только в одном направлении. Модуляция — это изменения высокочастотного сигнала — низкочастотным.

Наиболее распространенные рекомендации (модуляции) для факс-модемов представлены в следующей таблице:

image

Протокол V. 21 применяется только на этапе установления связи. Далее начинают работу другие протоколы: V. 17, V. 27bis, V. 27ter или V. 29. Эти протоколы обеспечивают прием или передачу факсимильного сообщения в полудуплексном режиме. Необходимо, чтобы факс-модем поддерживал кроме V. 21 как минимум одну рекомендацию по передаче данных по телефонным линиям.

В настоящее время практически все продаваемые факсы регламентируются стандартами Т.4 и Т.30. Рекомендация CCITT T.4 определяет различные параметры факсимильных аппаратов: размер листа передаваемого документа, разрешение, направление сканирования документа, алгоритмы сжатия передаваемой графической информации. Рекомендация CCITT T.30 регламентирует процедуру установления соединения, согласование параметров связи, передачу образа документа и завершение связи.

На рисунке изображена логика факсимильного соединения.

image

В спецификации T.30 процесс передачи факсимильного сообщения разделен на 6 фаз, но я упростил до 4. Основную информацию по сообщения спецификации T.30 предоставлю в конце статьи.

Фаза А. Установления вызова
Вызывающее устройство передает тональный сигнал CNG (Calling Tone) вызываемому устройству. Этот сигнал определяет вызывающее устройство как факсимильный аппарат. CNG представляет собой повторяющийся сигнал тональной частоты равный 1100 Гц, который генерируется в течение 0.5 секунд, а затем прерывается на 3 секунды.

Вызываемое устройство передает тональный сигнал, определяющий вызываемое устройство CED (Called Tone), который позволяет идентифицировать вызываемое устройство как факсимильный аппарат. CED — тональный сигнал частотой 2100 Гц, который имеет продолжительность от 2.6 до 4 секунд.

Фаза B. Процедура предварительного сообщения
На этой фазе определяются параметры и скорость факсимильной сессии. Когда факс хочет передать новое сообщение, он сначала отправляет Preamle, длительностью 1 секунда. Преамбула служит для улучшения состояния линии. На данном этапе, сначала происходит обмен основными сообщениями DIS (Digital Information Signal), и DCS (Digital Command Signal). В DIS заявляются параметры соединения, а DCS подтверждаются. После чего передающая сторона передает треннинговую последовательность (TCF — последовательность нулей за 1.5с) на согласованной модуляции. На последовательность должен быть получен положительный ответ CFR (Confirmation to Receive), если же на последовательность был получен ответ TTF (Failure To Train), то факс пробует занижать скорость передачи данных и снова отправляет последовательность.

Фаза С. Передача информации
Фаза может отличаться, в зависимости от способа передачи с помощью ECM (способ исправления ошибок) и без нее. Во время передачи в режиме контроля ошибок информация делится на блоки. Эти блоки страницы содержат кадры высокоуровневого протокола управления каналом передачи данных (HDLC), которые имеют значение Контрольной суммы фрейма (FCS), которое может быть проверено для обеспечения целостности данных на той частичной странице. Во время передачи высокоскоростные данные страниц T.4(без ECM) передаются одной строкой за раз.

Фаза D. Конец передачи и подтверждения
После передачи каждой страницы, отправляющий факс должен уведомить другой факс что отправка информации завершена и ожидает подтверждение.

EOP (End Of Procedure) — конец процедуры — данный сигнал обозначает, что передача страниц завершена, и что больше нет страниц для передачи. EOP должен получить подтверждение MCF от получающего устройства и отправить DCN.

MPS (MultiPage Signal) — обозначает конец страницы факсовой информации и то, что получатель готов к принятию следующих страниц.

Теперь рассмотрим, как факсы работают на ip-сетях

Для передачи факсов обычно используется либо G.711-кодек, либо T.38-протокол. Передача факсов по G.711-кодеку соответствует передаче факса по T.30-протоколу, как будто факс передается по обычной телефонной линии, но при этом аналоговый сигнал с линии оцифровывается по alaw. Это также называется передачей факса Inband T.30.

T.38 — это протокол, который описывает процедуру передачи факса через ip сеть. Протокол T.38 описан стандартом RFC 3362, и определяет процедуру передачи устройством факсовых данных.

image

Далее на рисунке представлена стандартная sip сессия, где re-invite содержит переход на кодек T.38.
image

После установления голосового соединения абоненты решают отправить факс. Сессия по T.38 происходит между пакетом 200 OK SDP (t38) и 200 OK SDP (q711A), когда одобрен возврат в голос.

В sip-пакетах перехода на факсимильную сессию (INVITE (t38) и 200OK (t38)) нас интересует удачное согласование параметров T.38 и самого протокола. Все параметры смотрим в SDP (Session Description Protocol) заголовке, например, T38FaxVersio, T38MaxBitRate, T38FaxMaxBuffer и так далее. Если параметр не указан, то, скорее всего, он взят по умолчанию. Так же возможно присутствие важного параметра VBD (Voice band data). В режиме VBD шлюз выключает детектор активности речи (VAD) и генератор комфортного шума (CNG), что необходимо при установлении модемного соединения, короче говоря, готовит линию к передаче данных по каналу. Важно, чтобы был назначен порт и сетевой адрес для приема udptl пакетов с каждой стороны. На данном этапе может быть так же заявлен кодек g711A для передачи факсов в голосе.

image

После удачного согласования по T.38 идет уже знакомая нам факсимильная сессия с возможностью анализа. HDLC (High-Level Data Link Control) используется в управляющих сообщения факсового протокола.

Далее предоставлю пример соединения по T.38 протоколу на рабочей сети. В соединении идет ретрансляция факсов, то есть тональные сигналы T.30 превращаются в особые кадры HDLC на передаче (демодуляция), на приеме происходит обратный процесс (модуляция). По данному трейсу с одного плеча видно, что дальняя сторона предложила в DIS передавать информацию в модуляции V. 27ter или V. 29. Отправляющий факс согласился на скорость 9600 c модуляцией V. 29. Максимальную скорость установления факсимильного соединения и время пакетизации пакетов T.38 можно выставлять на голосовых шлюзах. Затем следует неудачная отправка тренниговой последовательности из одних нулей, на скорости 9600, дальний факс ругнулся сообщением FTT. Отправляющий факс вынужден занизить скорость до 7200 бит/с, на которой в последствии и идет удачная передача страницы.

T.38 — это протокол передачи факсов через IP-сети (FAX over IP) реального времени.

image

Процедура заканчивается EOP, MCF и DCN, что говорит о положительной отправке страницы. Некоторые факсовые аппараты делают выводы об удачной отправке по этим сообщениям, не распознав их, могут выдать ошибку, хотя по факту страница была передана.

Настоятельно рекомендую отключать на аппаратах или на голосовых шлюзах поддержку режима ECM, так как она может привести к зацикливанию передачи данных. Победить ECM можно только хорошей линией. Участвует ли ECM в сессии, можно определить по параметру в пакете DCS или по наличию сопутствующих пакетов.

Протокол T.38 дает возможность анализировать трейсы, в отличие от передачи в кодеке G.711A, где возможен только визуальный анализ частот и нет возможности выделять отдельные сообщения T.30 без применения специальных средств (анализаторов).

T.38 — это очень обобщённая спецификация. Большинство современных спецификаций модемных протоколов действительно пытаются разъяснить, что должно произойти в аппаратуре. T.38 оставляет гигантский простор для решений во время внедрения в устройствах.

По опыту рекомендую использовать шлюзы доступа и FXS шлюзы вендоров AudioCodes и Eltex.

Что делать, если факсы не ходят?

Для начала, конечно, рекомендуется локализовать проблему. Проблемы могут быть в банальной доступности абонентов. Попробуйте позвонить от абонента А к абоненту Б, или снять дебаг сигнализации. Проверьте на слух качество речи и пропингуйте, по возможности, голосовые шлюзы или default gw.

Необходимо добиться хорошей слышимости с обеих сторон без шума — корректировать усиление и ослабление на порту шлюза, а также провести тест линии на FXS порту (емкость, сопротивление и так далее) и проверить количество слипов на Е1.

Какие настройки следует трогать на голосовых шлюзах?

На шлюзах первым делом проверяйте актуальность ПО! Практически на всех шлюзах можно настроить отправку факсов по выбранному кодеку. Если есть возможность выбрать режим передачи факсов T.38 +G.711A, то лучше выставлять его, так не возникнет 488 (SIP/2.0 488 Not Acceptable Here) ошибки, если дальняя сторона не знает кодека.

Также есть возможность ограничивать максимальную скорость передачи факсов, количество избыточности, включенные в пакеты UDPTL, время пакетизации, размеры буфера. В некоторых шлюзах встречается отключение ECM и NSF — отключаем.

Поддержку параметра VBD уточняйте у провайдера. Если поддержка отсутствует, то отключайте VAD, CNG и эхо-подавление.

Если возникла проблема односторонней слышимости при переводе звонка, и в трейсах откуда-то появляется invite на T.38, то, скорее всего, ваша музыка во время ожидания перевода совпала с частотой факсимильного сигнала. В этом случае нужно грамотно установить детектирование факсов.

Анализ трейсов рекомендую рассматривать с двух плечей, так как сам путь прохода пакетов может вносить изменения. Если шаманство с T.38 не помогло, то, как вариант, попробуйте перевести факсы на сквозную отправку. При отправке факсов в голосе (pass through), рекомендую смотреть потери RTP пакетов на канале, уровень их амплитуды и джиттера (его можно корректировать в большинстве шлюзов).

Но даже самые дорогие надежные и настраиваемые шлюзы не дают сто процентной гарантии отправки и приема факсов по всем направления. Почему же так? Все довольно просто, VoIP создан для качественной передачи голоса и только его. Поэтому для более-менее приемлемой передачи без искажений, подойдут исключительно кодеки с низкой степенью сжатия G.711. Ну, или T.38.

Причем в соединениях может участвовать не только физический факс, а все что угодно, например, Asterisk, где можно настроить прием факсов сразу на почту.

Спасибо за внимание, жду в комментариях советы и замечания.

Ссылки по теме

» Fax, Modem, and Text for IP Telephony», авторы — David Hanes и Gonzalo Salgueiro
» Механизм организации факсимильной сессии FAX-VoIP-FAX (FoIP) T.38 и pass-through — Игнат Кудрявцев
» IP-телефония: от медных проводов до цифровой обработки сигнала
» База знаний
» Руководство по устранению неполадок ретрансляции факсов

Основные ообщения спецификации T.30
CED (идентификация вызываемого терминала) — сигнал 2100 Гц, переданный оконечным факсимильным устройством в ответ на факсимильный вызов. Этот сигнал временно отключает эхоподавители, которые присутствуют в соединении, чтобы приготовить линию передачи данных.

CFR (подтверждение о приеме) — ответ, который подтверждает, что предыдущий обмен сообщениями и обучения завершены, и что передача страницы факсом может быть начата.

CNG (тоновый сигнал вызова) — тоновый сигнал 1100 Гц, который включается на полсекунды и выключается на три секунды. Это сигнал определяет терминал факса как не голосовое устройство. Сигнал также указывает на то, что передающий факстерминал ожидает сигнала DIS с принимающего терминала факса.

CRP (повтор команды) — ответ, который указывает, что предыдущая команда была получена с ошибкой и требует повторения.(не обязательный)

CSI (идентификация вызываемого абонента) — может быть использован, чтобы обеспечить определение вызываемого терминала факса по международному телефонному номеру. (не обязательный)

DCN (разъединение) — завершает факсовый вызов и не требует никакого ответа.

DIS (сигнал цифровой идентификации) — определяет возможности вызываемого терминала факса.

DTC (команда цифровой передачи) — ответ на возможности, определенные сигналом DIS. Здесь вызывающий терминал факса проверяет соответствие своих возможностей предоставленным в DIS-сообщении вызываемого терминала факса.

EOM (конец сообщения) — определяет конец страницы информации, переданной по факсу.

EOP (конец процедуры) — определяет последнюю страницу, переданную по факсу и отсутствие других страниц, которые должны быть отправлены. Переход к этапу разъединения факсового вызова.

FTT (сбой настроек) — используется для отказа приема сигнала настройки и для запроса повторной настройки (необходимость в повторных настройках обычно возникает при низких скоростях модуляции).

MCF (подтверждение сообщения) — указывает на то, что сообщение было успешно принято.

EOP (сигнал нескольких страниц) — определяет конец завершенной страницы, переданной по факсу, и готовность получателя к приему дополнительных страниц.

NSF (нестандартные средства) — могут быть использованы для определения специальных возможностей или требований, которые не определены в спецификациях серии T. (не обязательный)

RTN (отказ настройки) — указывает на то, что предыдущее сообщение не было успешно принято. Повторная настройка необходима для продолжения работы (обычно при низких скоростях модуляции).

RTP (настройка принята) — указывает на то, что завершенное сообщение было принято и что дополнительные сообщения могут быть отправлены.

TCF (проверка настроек) — отправление через систему с высокой скоростью модуляции T.4 (по сравнению с 300 кбит/с при модуляции V. 21, использованной для отправления сигналов T.30), для проверки настроек и установления возможности приема страниц факса при данной скорости передачи.

TSI (идентификация передающего абонента) — производит идентификацию терминала факса, совершающего вызов. (не обязательный)

Комментарии (2)

  • 13 сентября 2016 в 21:15 (комментарий был изменён)

    +1

    Модуляция — это изменения высокочастотного сигнала — низкочастотным

    Что, простите?


    Ошибка чаще всего вызываются всплеском шума на линии.

    И часто Вы слышите шумы в sip-транке?


    Если длина принятой строки нестандартная, считается, что произошла ошибка

    Кем и на каком основании?


    Если ошибки редки — выводят строку «как есть».


    Передача факсов по G.711-кодеку соответствует передаче факса по T.30-протоколу, как будто факс передается по обычной телефонной линии, но при этом аналоговый сигнал с линии оцифровывается по alaw.

    Почему только a-law? Объясните.


    Протокол T.38 дает возможность анализировать трейсы

    Куда нести анализы трейсов?


    Проверьте на слух качество речи и пропингуйте

    А если у меня не музыкальный слух?


    Практически на всех шлюзах можно настроить отправку факсов по выбранному кодеку.

    Пожалуйста, назовите модель шлюза, который сам «задает кодек для отправки факса».


    Если есть возможность выбрать режим передачи факсов T.38 +G.711A, то лучше выставлять его, так не возникнет 488

    Вы, подозреваю, учились у профессора Тыка.


    Если возникла проблема односторонней слышимости при переводе звонка, и в трейсах откуда-то появляется invite на T.38, то, скорее всего, ваша музыка во время ожидания перевода совпала с частотой факсимильного сигнала

    Расшифруйте.


    Поэтому для более-менее приемлемой передачи без искажений, подойдут исключительно кодеки с низкой степенью сжатия G.711.

    И далеко уйдет факс?

  • 13 сентября 2016 в 22:09

    0

    Какое ПО можете порекомендовать для анализа факса в g711(passtrough), записанного в wireshark (tcpdump)?

© Habrahabr.ru