t.38 – fax

Самое главное есть картинка с tcpdump которая разжевывает что нужно искать в tcpdump

Вводная: Факсы не ходят.

С чего начинать ?
Проверяем модули факса asterisk:
CLI> module show like fax

Module                         Description                              Use Count
res_fax.so                     Generic FAX Applications                 1
res_fax_spandsp.so             Spandsp G.711 and T.38 FAX Technologies  0
2 modules loaded
Проверяем наличие файла /etc/asterisk/udptl.conf с содержимым
[general]

udptlstart=4000
udptlend=4999
;udptlchecksums=no

udptlfecentries = 3

udptlfecspan = 3
Проверяем открытые порты по udp c 4000 по 4999

И начинать надо со снятия дампа и просмотре в wireshark
Причем снимать надо сразу обе стороны:
Обмен сервера с конечным устройством и обмен сервера с провайдером:
Сервер: 192.168.1.2
Шлюз: 192.168.1.220
Провайдер: 195.69.158.38

Вот так не правильно:
tcpdump -i any host 192.168.1.2 -s0 -w fax5.pcap -v

А вот правильно:
tcpdump -i any host 195.69.158.38 or host 192.168.1.220 or host 192.168.1.2 -s0 -w fax3.pcap -v
Мы снимаем два плеча – устройство и астер и астер и провайдер

Загрузили снятый файл себе на компьютер открыли в wireshark – telephony – Voip Call
tcpdump fax3

Теперь внимательно:
В табличке видим 4 колонки
Дамп снял 2 звонка, и 1 и 2 строка это первый звонок, а 3 и 4 второй звонок.
Это видно по параметрам Start time (1 колонка)
Выделяем 1 и 2 колонку и нажимаем – Flow

fax3-c1

fax3-c2
Нас собственно говоря интересует нижняя часть рисунка – именно кусок с начала INVITE SDP (t38)
Как видно – провайдер на прислал приглашение на переключение в t38 на которое мы не ответили нечего
раз мы нечего не ответили – значит у нас косяк с настройкой оборудования – не переключился он в t38

Дяденька, а покажите как должен выглядит с дампе нормальный прошедший факс:

Не забывайте что мы снимали дамп на два плеча:
То есть между устройством и астером (1) и астером и провайдером (2)
и пакеты INVITE SDP (t38) и 200 OK SDP (t38) у вас должно быть дважды
у астера будут один порт UDP на прием от устройства и другой порт на передачу до провайдера.

633822

Запрос переключения в t38 – INVITE SDP (t38)
и подтверждение переключения – 200 OK SDP (t38)

Опа, как все просто, пойду факсы настраивать 🙂
А вот фиг, даже запрос на переключение и подтверждение переключения не означает что факс пошел.
Теперь то не так ? а теперь надо смотреть порты согласования – на каких портах договорись о передаче факса
Встаём на INVITE SDP (t38)
Раскрываем нижнюю часть, и смотрим что передали мы до сервера по поводу t38 и на каком порту мы хотим принимать
Нижняя картинка в оригинальном размере http://ic.pics.livejournal.com/awsswa/10807794/6634/6634_original.jpg
Отправитель  (Src 10.59.0.1) Получатель (Dst 10.59.0.3)
Порт на котором будет работать 10.59.0.1 UDP 4118

fax3-5

Потом смотрим что пришло по 200 OK SDP (t38) – на чем они договорились (картинка одинакова )
только меняются порты и передающая и принимающая сторона.
Тут уже будет порт на котором будет работать 10.59.0.3

===========================================================================
Теперь необходимо посмотреть обмен пакетами в ходе работы:

в строке поиска wireshark сбиваем фильтр:
udp.port == номер порта UDP на котором договаривались о передаче, и уведите что прошло
если все хорошо будет обмен с обоих сторон.

Ну и теперь осталось совсем простое решение:
В asteriks в консоле
> udptl set debug on
И смотрим глазками обмен между устройствами (тут правда ип адреса другие и порты но нам важен принцип)

UDPTL (SIP/104-00007435): packet from 192.168.0.11:24278 (seq 11, len 6)
UDPTL (SIP/333-00007431): packet to 192.168.0.15:6042 (seq 11, len 16)
UDPTL (SIP/104-00007435): packet from 192.168.0.11:24278 (seq 12, len 48)
UDPTL (SIP/333-00007431): packet to 192.168.0.15:6042 (seq 12, len 56)
UDPTL (SIP/104-00007435): packet from 192.168.0.11:24278 (seq 13, len 8)
UDPTL (SIP/333-00007431): packet to 192.168.0.15:6042 (seq 13, len 56)
UDPTL (SIP/104-00007435): packet from 192.168.0.11:24278 (seq 14, len 33)
UDPTL (SIP/333-00007431): packet to 192.168.0.15:6042 (seq 14, len 83)
UDPTL (SIP/104-00007435): packet from 192.168.0.11:24278 (seq 15, len 8)
UDPTL (SIP/333-00007431): packet to 192.168.0.15:6042 (seq 15, len 85)
UDPTL (SIP/104-00007435): packet from 192.168.0.11:24278 (seq 16, len 19)
UDPTL (SIP/333-00007431): packet to 192.168.0.15:6042 (seq 16, len 56)
UDPTL (SIP/104-00007435): packet from 192.168.0.11:24278 (seq 17, len 8)
UDPTL (SIP/333-00007431): packet to 192.168.0.15:6042 (seq 17, len 56)
UDPTL (SIP/104-00007435): packet from 192.168.0.11:24278 (seq 18, len 8)
UDPTL (SIP/333-00007431): packet to 192.168.0.15:6042 (seq 18, len 31)

Если пакеты есть только от одной стороны – значит где косяк или с портами или с NAT или маршрутизацией
(В самом худшем случаи с провайдером, который может просто не пускать факс по t38 и придется гонять факс в голосе g711 – где уже нет никакой диагностики)

Продолжаем:
А бывают ли случаи когда нечего сделать нельзя и факсы вообще не ходят – не по t38 не по g711 ?
Такой провайдер как Энфорта доказал что это можно сделать
Вводная теория:
Когда мы общаемся с провайдером есть так сказать 2 вида связи:
1) Сигналка: это всякие служебные сообщения суть которых рассказана выше (INVITE, OPTIONS, REGISTRY)
2) Голосовой трафик: RTP где собственно идет уже сам голос каком нибудь кодаке

Провайдер ради снижения нагрузки может разбивать Сигналку и Голос на разные адреса:
Типа: регистрации и служебные общения на 109.109.109.199
А голосовой трафик уже на 109.109.109.200

Так вот, Энфорта сделала это, проблема только в том что голосовой трафик она пустила на свою внутреннюю сеть,
которую не видно снаружи 172.24.59.10
( мы ведь помним что 172.16.0.0 — 172.31.255.255 (Маска подсети 255.240.0.0 или для бесклассовой адресации /12))
Соответственно в заголовке приходит что трафик надо слать на 172.24.59.10 – и вообщем все … некуда его слать
Это их косяк – они в invite анонсируют внутреннею сеть

Update:

exten => что-то,n,Set(FAXOPT(gateway)=yes)
exten => что-то,n,ReceiveFAX(${FAXFILE},f)
Пишет ошибку: “executing ReceiveFAX on a channel with a T.38 Gateway is not supported”
Достаточно убрать Set(FAXOPT(gateway)=yes)
также очень важно чтобы на стороне провайдера был отключен транскодинг. Иначе факсы не ходят.
ReceiveFAX – работает если номер виртуальный..если в sip.conf прописать номер то работать не будет!

Передача факсов через VoIP-сети не работает. Иногда у вас получится достичь достаточно высокого процента успешных передач факсов. Может случиться, что вы создадите такую установку, которая будет работать на 100% всё время своего существования. Это редкие, неповторимые установки. Вам необходимо использовать правильный протокол FAX over IP, такой, как например Т.38, чтобы достичь постоянного, надёжного результата передачи факсов через IP-сети.

Для скептиков

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

Пытаясь ужиться с передачей факсов через VoIP-сети…

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

Не получится налить кварту в пинту

Наиболее распространённая проблема при передачи факсов через VoIP-сети – это самая простая из решаемых. Речевые кодеки с низкой скоростью передачи данных не могут передавать быстрые модемные сигналы без грубейшего их искажения. Неужели вы ожидаете, что G.729 8 кбит/с кодек сможет без искажений передать сигнал модема факса скорости 9.6 кбит/с? Если да, то, скорее всего, вы верите в вечный двигатель, и так далее. Я бы смог вам предложить неплохую сделку по этому поводу, если вы согласитесь купить Лондонский мост (London Bridge – прим. перевод.). Единственные широко поддерживаемые кодеки, которые могут адекватно сохранить сигналы модема факса до 14,4 бод (V.17) – это G.711 u-закон и A-закон. Полная версия G.726 кодека также будет работать с сигналом факса до 9,6 бод. Хотя не все устройства, которые рекламируются с поддержкой G.726, будет действительно поддерживать эту спецификацию. Несколько быстрых переходов в коде программы кодека могут значительно сократить вычислительные издержки, и всего лишь небольшому числу людей нужна полная поддержка G.726. Поэтому результаты на разных устройствах могут отличаться. Как бы то ни было, G.726 кодек был специально разработан для передачи среднескоростных сигналов модемов, таких как протокол V.29 на котором работает факс.

Совсем недавно стали популярными факс-аппараты с поддержкой скорости передачи до 33,6 кбит/с (V.34bis). Эта скорость передачи вряд ли будет надёжно работать через любое VoIP-соединение, даже если используются кодеки G.711 A-закон или u-закон. Кодеки смогут обеспечить требуемое качество сигнала, но задержки в VoIP-канале, даже если они будут стабильными, не дадут эхокомпенсаторам в любом факс-модеме возможности обучиться до нужного предела. Более медленные модемы факсов – V.27ter, V.29 и V.17 не используют эхокомпенсации, поэтому данной проблемы с ними не возникает.

Низкоскоростные кодеки имеют нулевой шанс нормально передать любое стандартное факс-сообщение. Некоторые кодеки без проблем передадут через канал контрольные сообщения факса в 300 бит/с (V.21). Но они не смогут передать быстрые сигналы модемов, непосредственно несущие информацию о передаваемом сообщении.

Модемам не нравится относительность

В мире ТфОП, коммутированная сеть имеет конечное значение задержки для каждого конкретного звонка. Скорость, с которой данные попадают в сеть, всегда равна скорости, с которой они её покидают. Задержка между концами канала не имеет дрожаний фаз (jitter – прим. перевод.), и не изменяется пошагово в любой из своих характеристик, за исключением вынужденных обстоятельств (например переход на обходные маршруты, если часть канала, до этого проходившая через оптоволокно, вдруг оборвалась). Эти характеристики каналов требуются модемам, они были разработаны для них. В IP-сетях дрожания это просто факт, от которого никуда не уйти. Дрожание можно свести до допустимого предела, используя приоритезацию (QoS) трафика, поддерживаемую большинством IP-оборудования, но только если вы можете контролировать сеть от начала и до конца. Если же звонок проходит через публичную часть сети Internet, там нет QoS-а. С трудом можно представить себе бизнес-модель оператора связи, который бы ввёл бы QoS на публичной части сети. Поэтому, при первом приближении, временные характеристики голоса, входящего в VoIP-сеть, такие же, как на выходе, но при детальном рассмотрении они могут быть очень и очень разными.

Если VoIP-сеть работает через локальную сеть или через WAN-соединение с включенным QoS-ом, вы можете достичь близкую к нулю вероятность потери пакетов, и очень, очень низкое значение дрожаний. Далее, многие полагают, что буфер на приёмном конце канала будет смягчать влияния средних по величине дрожаний, поэтому сигнал на выходе VoIP-канала будет прекрасно восстанавливаться в оригинальный. Чаще всего, эти люди будут правы. Но никаких гарантий. Есть много различных конструкций буфера дрожаний. Много современных вариантов динамически адаптируют длину буфера тем или иным способом, тем или иным алгоритмом. Если дрожание невелико, динамическая буферизация отключается, и вся система работает хорошо. Если динамическое управление буфером нельзя отключить, его поведение может, в общем-то, значительно ухудшить качество восстановления сигнала модема. Различные алгоритмы будут:

  • Гарантированно терять пакеты, настраивая буферизацию до такого предела, когда некоторый постоянный процент пакетов не будут считаться поздними, и будут отбрасываться. Потеря пакетов обычно встраивается в такие алгоритмы, и результаты могут быть вполне приемлемыми для голоса. Это вполне резонный обмен: терять небольшое количество пакетов, и взамен иметь нечто менее подверженное задержкам.
  • Регулировать периоды тишины во всех отсчётах пакетов (обычно по 20 мс). В спецификации факса, некоторые периоды тишины определены значениями 75+-20мс. Периоды в 20мс могут сбить их с толку.
  • Постоянно регулировать временные характеристики вне периодов тишины, используя техники наложения краёв и смешения. Этот подход считается произведением искусства для речевых буферов, и при этом – полной катастрофой для модема факса…

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

Модемы не любят подавление тишины

В зависимости от реализации в том или ином оборудовании, подавление тишины может полностью уничтожить звонок с факсом. Если подавление тишины включено, детектор голоса постоянно проверяет звонок, пытаясь обнаружить наличие голоса – т.е. сигналов модема. Некоторые из них были разработаны таким образом, чтобы фокусироваться на речевом сигнале, и отбрасывать все посторонние шумы – в нашем случае тоны модема факса. Поэтому, эти детекторы могут недоброкачественно включать и выключать аудио-нагрузку когда модем факса начинает и заканчивает передачу. И если даже они качественно переключаются, алгоритмы подавления тишины обычно сильно искажают сигналы уровни которых находятся около пороговых отметок.

Во время периодов тишины, в аудио-нагрузку постоянно вносится “комфортный шум”, который симулирует нормальную обстановку, которую вы слышите во время привычного звонка через ТфОП. Это означает, что период, который обычно будет полон тишины (факсы передают сгенерированные сигналы, то есть нет внешних шумов), будут сильно зашумлены. Модем на приёмной стороне может не увидеть достаточно чёткой “тишины” чтобы корректно определять границы сигналов модема передающего факса.

Модемы любят полное общение

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

Подводя итог сказанному

Факс, как и все прочие приложения с использованием модемных соединений, работают из рук вон плохо и ненадёжно при передаче через VoIP-каналы. Эта ситуация не изменится в лучшую сторону со временем. Она будет ухудшаться. Вообще говоря, чем сложнее становится оборудование в гонке за качественной передачей голоса, тем хуже это оборудование становится для использования с модемами. В ближайшей перспективе (например, до того момента, когда все приложения по работе с данными будут полностью работать на IP-протоколе), единственным выходом для достижения приемлемых результатов будут протоколы с промежуточным хранением store-and-forward, а также протоколы, “подогнанные” для передачи модемных данных поверх IP-каналов.

Спецификация FAX over IP (FoIP)

Большинству современных факсовых аппаратов не хватает порта RJ-45 и поддержки стека протоколов TCP/IP. Лишь несколько из самых самых последних моделей факсов могут напрямую подключаться к Интернет, даже несмотря на то, что протоколы для этого были стандартизованы ещё пять-семь лет назад. На сегодняшний день только несколько самых высококлассных факсовых аппаратов содержат такой функционал. Что это означает? Это означает, что в мире, стремительно движущемся в сторону VoIP для телефонии, срочно необходима поддержка работы традиционных факсовых аппаратов поверх IP-каналов, и эта поддержка будет нужна до тех пор, пока самый последний традиционный факс не будет утилизирован.

FoIP с промежуточным хранением (Store and forward FoIP) – T.37

Спецификация T.37 определяет стандартный метод передачи факсов через IP-сети методом промежуточного хранения. Это простой, элегантный и надёжный метод. Единственный реальный недостаток – что это не метод реального времени. На самом деле это даже преимущество, но чисто психологически это самый что ни на есть недостаток. Передача факсов в реальном времени даёт пользователю иллюзию того, что как только его аппарат сказал “Отправка завершена”, документ уже в руках получателя. Конечно, это полностью ложное представление. Документ может находиться в неком буфере (например, в буфере факсового аппарата, в котором кончилась бумага, или в сервере Fax-to-email), о котором пользователь ничего не знает. Документ может находиться в корзине для мусора, потому что его сочли спамом. Конечно, если начать это объяснять, все проникаются идеей и говорят что понимают. Но никто не собирается отказываться от неприязни к факсам, не работающим в реальном времени. Некоторые полагают, что отчёт, выданный факсовым аппаратом, можно привязать к документу, удостоверяющему некое официальное действие: “мы отправили вам факс и вы получили его в таком-то часу”. Возможно. Одно время суды принимали как улики отчёты телексов, отправляемые организациями, подделка которых занимала не так много времени.

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

Рекомендация T.37 определяет процедуру приёма факса на шлюзе, создания e-mail сообщения, содержащего факс как приложение, пересылку e-mail сообщения на удалённый шлюз, набор номера и доставку факса к принимающей стороне. Опционально, факс может быть доставлен в виде приложения непосредственно на e-mail принимающей стороне. Также, факсы могут быть отправлены непосредственно в систему промежуточного накопления по электронной почте от самого отправителя, чтобы затем набрать номер и передать сообщение на традиционный факс.

T.37 – это очень простая спецификация. Ей не надо многого объяснять. Она основана на проверенных временем, широко используемых протоколах – SMTP, MIME и так далее – и только лишь определяет некоторые детали, необходимые для связи всех составляющих воедино и использования с факсом. Это означает, что спецификацию T.37 можно очень просто развернуть в любой системе, содержащей составляющие компоненты. T.37 это хорошая спецификация. T.37 это зрелая, здоровая спецификация. T.37 – это единственно здравый способ работать с факсом на сегодняшнее время.

FoIP реального времени (Real time FoIP) – T.38

Всего лишь один стандарт был разработан для факса в реальном масштабе времени через IP – спецификация T.38. Прежде чем приступить к обсуждению, что есть T.38, необходимо отметить некоторые факты о текущем статусе стандарта в реальном мире, справедливые на сегодняшний день. Большое количество VoIP-шлюзов и прочего оборудования до сих пор не поддерживают T.38. Много шлюзов, на коробках которых написано «поддержка T.38», всего лишь имеют T.38 в очереди дополнений на разработке, как например обстоит дело с Linksys SPA2100. Очень немного из текущих разработок T.38 поддерживают факсы на скорости 33600 бит/с (протокол V.34bis) , хотя сейчас почти все малобюджетные факс-аппараты и многофункциональные устройства (принтер/сканер/копир/факс) поддерживают её. Множество шлюзов имеют очень недоработанные подпрограммы, связанные с T.38 – я лично использовал небольшой шлюз, который намертво зависал как только слышал сигнал факса. Если вы знаете, как работает T.38, вы должны представлять, как ведут себя его «ключные» версии.

Итак. Что такое T.38?

T.38 это протокол передачи факсов через IP-сети (FAX over IP) реального времени. Это означает, что он был создан чтобы работать точно так же как традиционная передача факсов. Вы звоните на другой факсовый аппарат, и, пока ждёте, факс передаётся. Приёмным факсом может быть традиционный факсовый аппарат, подключенный к городской телефонной сети, VoIP-шлюз или его подобие, это может быть факсовый аппарат с портом RJ-45, подключаемый непосредственно в IP-сеть, или это может быть компьютер с факс-модемом. Что угодно!

Есть несколько нюансов, без которых невозможно заставить FoIP отлично работать с традиционными факсовыми аппаратами. Наиболее поздние версии основного факсового протокола – T.30 – содержат пункты и специальные функции, позволяющие современным факсовым аппаратам стать «знающими Интернет» (Internet-aware, – прим. перев.) факсами. Такие факсы соединяются со спецификацией T.38. Некоторые производители факсов пишут на упаковке что их аппараты – «Internet-aware devices». Это не значит что они соединяются напрямую с IP-сетями. Это только лишь значит, что они знают о существовании и характеристиках T.38.

Как работает T.38?

Исходная версия спецификации T.38 определяла два метода передачи факсов через IP-сети – одну основанную на UDP, и другую – на TCP протоколе. В то время RTP был лишь зарождающимся протоколом для вещания музыки через IP-сети. Вместо того чтобы использовать RTP, T.38 определила свой собственный способ упаковки данных в пакеты UDP, который получил название UPDTL. Сейчас этот шаг признают ошибочным, и версия протокола T.38, основанная на RTP, уже определена. Это только добавило проблем инженерам, внедряющим T.38 на своих устройствах. На деле, наиболее широко распространённый метод – это не-RTP метод, поэтому надо будет сначала добавлять поддержку RTP, а потом плавно мигрировать… ААААААААААААА!!!

Спецификация T.38 говорит какие-то странные вещи о том, когда использование UDP метода предпочтительней TCP, и наоборот. Я бы сказал что метод TCP должен быть использован между двумя IP-устройствами. Когда один из узлов подключен к аналоговой линии, скорее всего, лучше использовать UDP-метод, у которого лучше характеристики приближающие его к протоколу реального времени. Хотя, как известно, UDP – очень ненадёжный протокол, и это серьёзно компрометирует T.38 как надёжную спецификацию для передачи факсов через IP-сети.

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

В каких аспектах T.38 лучше чем FAX over VoIP?

Если T.38 используется поверх TCP, то это очень надёжно. Если использовать T.38 между «Internet-aware» факсами, то этот метод решает все проблемы передачи факсов через VoIP соединения.

Если T.38 используется в одной из UDP форм, можно использовать вариант когда каждый следующий пакет содержит копию основной информации из предыдущего пакета. Это необязательная опция, но большинство виденных мной вариантов T.38 поддерживают её. Такая схема принудительной коррекции ошибок делает T.38 более равнодушным к потерянным пакетам, нежели обычные протоколы VoIP. Необходимо потерять два пакета последовательно, чтобы реально что-то потерять. Заголовки в T.38 такие большие, что дополнительная информация, передаваемая в теле пакета, едва ли заметна. Конечно, если потерять два пакета подряд, у T.38 будут проблемы. Но, если такое случается часто, это также значит что сеть, через которую идёт передача, не пригодна для качественной связи по VoIP-каналам.

Потеря пакета в потоке T.38 не влечёт за собой сбой синхронизации модемов. Это означает что два потерянных пакета всего лишь повредят часть передаваемого изображения. Если на факсовых аппаратах используется опциональная коррекция ошибок (ECM), велика вероятность того что с одним-двумя повторами передаваемое изображение будет получено с великолепным качеством. Не идеальное решение конечно, но вполне функциональное.

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

Спецификация T.30 позволяет приостановить передачу страницы непосредственно перед концом любой строки пикселей. Эта особенность используется как мера контроля потоковой передачи в факсовых аппаратах с медленной печатью например. Эта особенность также может быть использована в продуктах на базе T.38, – ожидать приёма большего количества информации когда пакет задерживается или оказывается утраченным. Это означает, что шлюз с поддержкой T.38 может начать передачу страницы как только у него будет хотя бы часть информации от отправителя со стороны IP-сети, без необходимости промежуточной буферизации. В случае, если эффект джиттера минимален, задержка передачи также минимальна. Когда джиттер велик, передача будет задерживаться на столько, насколько это необходимо. Если пакет теряется и исправление ошибок включено, передающий шлюз может просто подождать некоторое время, пытаясь восстановить утраченную информацию из потока следующих пакетов. Если необходимая информация безвозвратно потеряна, передача будет продолжена с минимальным количеством утраченных частей страницы.

Передача HDLC (High-Level Data Link Control), , используемая в управляющих сообщениях факсового протокола, не позволяет точно контролировать поток сообщений. Как бы то ни было, существует возможность достичь достаточно хороших результатов. Протокол HDLC поддерживает контроль потока только между HDLC-фреймами. Полный HDLC протокол поддерживает возможность отменять фреймы на полпути, или возобновлять их передачу. Однако, протокол HDLC как он определяется в спецификации T.30 не поддерживает функции отмены передачи фреймов. Если нам приходится ждать конца большого фрейма для того чтобы отменить его и начать повторную передачу, мы сталкиваемся с большими задержками. Как бы то ни было, это не большая проблема для передачи факсов в рамках T.30. Большая часть HDLC фреймов, использующихся в спецификации T.30, достаточно коротки, особенно те которые встречаются между страницами. Задерживая передачу до того, как мы полностью получим данные для одного из этих сообщений не будет слишком затягивать звонок. Чтобы избежать длинных задержек для очень длинных фреймов мы можем использовать правила типа «если длина фрейма не более 30 байт (1 секунда), мы ждём получения всего фрейма чтобы продолжить; если длина фрейма больше, мы передаём его с задержкой в 1 секунду».

Какие недостатки у T.38?

Спецификация T.38 не может избежать простой проблемы, состоящей в том что ей необходимо работать со старыми факсовыми аппаратами, созданными даже до того как идея FoIP пришла кому-то в голову. Этим аппаратам требуется соблюдение жёстких временных критериев задержек в каналах связи. Для этих аппаратов T.38 частично устраняет, частично уменьшает масштаб проблемы передачи факсов по VoIP-сетям. Однако, это ничто по сравнению с передачей изображения по FTP или HTTP и возможностями данных протоколов справляться с плохими условиями сетевых соединений.

Addpac troubleshooting

Первоисточник: http://ap200.nm.ru/

==================================================================
1. Как сделать, чтобы пользователь слышал в телефонной трубке
BACKRING еще до установления связи с удаленным шлюзом/АТС?
——————————————————————

Настройки выдачи сигнала BACKRING производятся в
режиме конфигурирования voice-service-voip следующим
образом:

AP200# config
AP200(config)# voice service voip
AP200(config-vservice-voip)# local-ringback-tone ?

alert Generate local ring-back tone on receiving ALERT
early Generate local ring-back tone on sending SETUP (psuedo)
<cr> Play ring-back tone(local or from remote)
as soon as possible (default)

Ну и к примеру сделаем, чтоб максимально быстро генерил
в линию BACKRING:

AP200(config-vservice-voip)# local-ringback-tone
==================================================================

==================================================================
2. Возможно ли на сабже задать TOS для RTP-трафика?
——————————————————————

AP200(config)# ip-tos rtp ?
delay Request Low Delay
throughput Request High Throughput
reliability Request High Reliability
precedence Specify Datagram Precedence
value Specify the value directly
==================================================================

==================================================================
3. Как убрать эффект “металлического” звука?
——————————————————————

Возможно данный эффект вызывается повышенным выходным/входным
усилением голосового канала.

Настраивается усиление следующим образом:
(например для порта 0/0)

AP200(config)# voice-port 0/0
AP200(config-voice-port-0/0)# input gain -12
AP200(config-voice-port-0/0)# output gain -12
==================================================================

==================================================================
4. Как настроить чтоб работал DTMF?
——————————————————————

AP200(config)# voice-port 0/0
AP200(config-voice-port-0/0)# dial-tone-generate
AP200(config-voice-port-0/0)# high-dtmf-gain
==================================================================

==================================================================
5. Как настроить чтоб устанавливал соединение по появлению голоса
в линии?
——————————————————————

AP200(config)# voice service voip
AP200(config-vservice-voip)# voice-confirmed-connect
==================================================================

==================================================================
6. Как настроить чтоб работал на другом порту (например на 1730)?
——————————————————————

AP200(config)# gateway
AP200(config-gateway)# signalling-port 1730
System should be rebooted after write current configuration.
AP200(config-gateway)# write
Do you want to WRITE configuration ? [y|n] y
Writing configuration….done
AP200(config)# reboot

После перезагрузки будет принимать звонки из IP-сети уже на порт
1730.
==================================================================

==================================================================

7. Как настроить чтоб при дозвоне пока не взяли трубку были слышны
сигналы из удаленной телефонной линии?
——————————————————————

а) Нужно чтобы и на адпаке и на удаленном шлюзе голос проключался до
коннекта.

б) На ап это делается следующим образом:

AP200(config-vservice-voip)# h323 call channel early

возможны варианты:
AP200(config-vservice-voip)# h323 call channel ?
early Open logical channel before CONNECT
late Open logical channel after CONNECT
latest Start H.245 procedure after CONNECT if possible
==================================================================

==================================================================
8. При звонке на шлюз AP200B FXS нету КПВ (длинных гудков), тишина,
потом сразу берут трубку.
При звонке с АР200В, на удаленный шлюз – все нормально, КПВ слышно.
Как сделать, что бы было слышно КПВ при звонках на АР200В FXS?
——————————————————————

AP200(config)# voice service voip
AP200(config-vservice-voip)# inband-ringback-tone
==================================================================

==================================================================
9. Как настроить апешку, чтоб она принимала звонки только с
определенного адреса(ов)?
——————————————————————

Для этого настраиваются access-list’ы, которые затем применяются на
сетевой интерфейс для входящего/исходящего трафика.
Пример:
(апешка соединена с сетью интерфейсом LAN0 (ethernet 0 0), который
у нее является воип-интерфейсом (ну звонки через который идут))

AP200# config
AP200(config)# access-list 1 permit 192.168.1.1
AP200(config)# int eth 0 0
AP200(config-ether0.0)# ip access 1 in

После этого, апешка принимает звонки только с адреса 192.168.1.1.
(По крайней мере у меня все заработало)

За доп.инфой обращайтесь к мануалу :)

==================================================================

==================================================================
10. Адпак не распознает сигнал ЗАНЯТО, который генерит ему АТСка
после того, как абонент с ее стороны положил трубку и как следствие
– не кладет трубку, пока не получит отбой от удаленного шлюза.
Как узнать параметры этого сигнала?
——————————————————————

Можно позвонить с апешки на софтовую какую-нибудь звонилку, потом
положить на апешке трубку и на компе (на котором установлена
звонилка) включить звукозапись и не вешая трубки на этой звонилке
записать в файлик этот сигнал от атски, а потом проанализировать
его в каком-нить звуковом редакторе (Cool Edit 2000, например) на
частоту и длительность периодов тон/тишина.
Потом в адпаке произвести настройки, как указано в
конфигурировании: http://ap200.nm.ru/support/ap200_sets.html#Dialtones
==================================================================

==================================================================
11. Система слетела и открывается теперь только как BOOT доступ,
как можно вернуть старые настройки ?
——————————————————————

1. Войдите в этот БУТ-режим и задайте адрес адпаку.

2. Не выходя из бут-режима на апешке с компьютера по ФТП залейте
софтину (бин-файл) на этот адпак. (!!зайти на ап по фтп с
компьютера и залить, а не из окна конфигурирования!! т.е. к
примеру в фаре или виндовс-командере создать ФТП-соединение на
апешку, зайти на нее и переписать туда этот бин-файл)

3. Когда адпак скажет в консольное окно, что-то типа:
“system software updated successful” –
можно перезагрузить апешку.

Правда конфиг скорее всего потеряется.. но возможно и нет.
==================================================================

==================================================================
12. Некоторые абоненты достаточно медленно проводят набор,
как можно увеличить эту паузу, в документации я не нашел!?
——————————————————————

AP1005(config)# voice service voip
AP1005(config-vservice-voip)# timeout tidt
==================================================================

==================================================================
13. Народ, подскажите плиз новичку, как послать префик провайдеру?
——————————————————————

Yurik — 2004-08-10:
я например префикс добавляю транслейшн
руле примерно так:

……….
dial-peer voice 8 voip
destination-pattern 8T
session target XXX.XXX.XXX.XXX
codec g729
dtmf-relay h245-alphanumeric
no vad
translate-outgoing called-number 8
fax protocol t38 redundancy 2
fax rate 9600
…….
translation-rule 8
rule 0 8T 700#8T

А проверяю руле так
sh translation-rule 8 80957660011

The translation result is (700#80957660011)
==================================================================

==================================================================
14. Уважаемые коллеги – есть ли у AP200B возможность перевести
входящий звонок с одного порта на другой и обратно?
——————————————————————

Аркадий — 2004-08-18
Да.

!
dial-peer call-pickup ##
dial-peer call-transfer h
!
Для перехвата звонка две решетки.
Для переброса – короткий отбой или флеш.
==================================================================

==================================================================
15. Как можно удаленно просмотреть отладку прохождения звонка ?
——————————————————————

Удаленно смотреть дебаг можно след. образом:
1. Залогиниться телнетом на апешку;
2. AP200# debug voip call
3. AP200# conf
4. AP200(config)#debug-port
==================================================================

==================================================================
16. (примечание)
Апешка настроена в режиме бриджа.
две схемы:
1. PC(ftp-client)->(lan1)AP(lan0)->LAN->PC(ftp-server)
2. PC(ftp-client)<-(lan1)AP(lan0)<-LAN<-PC(ftp-server)
почему закачивает быстрее (передача файла по схеме 2),
чем выкачивает (передача файла по схеме 1)?
——————————————————————

> Конфиг:
> ………..
> ip-share interface local-side ether1.0
> !
> interface ether0.0
> ip address 192.168.1.43 255.255.255.0
> qos-control 4096 2000 –> delete this line
> line-ctrl promiscuous
> bridge
> !
> ………..

qos-control 4096 2000
обозначает, что шлюз ограничивает скорость до
4096kbps & 2000 pps для ether 0.0.
4096 обозначает ограничение исходящего трафика (в
данном случае для ЛАН0).
В целом, QoS не может контролировать входящий
трафик, поэтому закачка из и-нета получается быстрее.

Таким образом, тестирование по схеме:
PC –>LAN1–>LAN0-(qos)-> на самом деле дает
такие результаты.(т.к. ограничивается настройкой QoS,
а когда происходит закачка из и-нета, апешка не
контролирует скорость и получается быстрее).

Вобщем советуют отключит Qos-control.
==================================================================

==================================================================
17. Как настроить кол-во фреймов в пакете для кодека?
——————————————————————

ap200# config
ap200(config)# voice serv voip
AP200(config-vservice-voip)# max-frame ?
g711 set max frame per packet on G.711 RTP
g726 set max frame per packet on G.726 RTP
g7231 set max frame per packet on G.723.1 RTP
g729 set max frame per packet on G.729 RTP

==================================================================

==================================================================
18. Есть 2-х портовая апешка и два провайдера (пусть,
скажем П1 и П2). Как настроить, чтобы все звонки
с порта 0.0 уходили на П1, а с порта 0.1 на П2?
——————————————————————

1. Создаем правила преобразования:
translation-rule 1
rule 1 .T 333T

translation-rule 2
rule 1 .T 222T

translation-rule 3
rule 1 333T T

translation-rule 4
rule 1 222T T

2. На портах задаем настройки:
voice-port 0/0
translate-incoming called-number 1

voice-port 0/1
translate-incoming called-number 2

3. Создаем воип-диал-пиры на провайдерские шлюзы:
(предполагается, что диал-пиры “потс” уже есть)

dial-peer voice 100 voip
destination-pattern 333T
session target 192.168.1.41
translate-outgoing called-number 3

dial-peer voice 101 voip
destination-pattern 222T
session target 192.168.1.100
translate-outgoing called-number 4

Таким образом при наборе абонентом номера на
порту 0.0 шлюз вставит перед номером “333” и
уйдет на диал-пир 100, в диал-пире 100 номер
преобразуется обратно в то, что набрал абонент и
отправится на провайдера с адресом 192.168.1.41.
Аналогично номер, набранный на порту 0.1 будет
отправлен на провайдера с адресом 192.168.1.100.
==================================================================

==================================================================
19. Почему иногда срывается звонок
при поднятии трубки на FXS когда он перебрасывается с
FXO через plar.
——————————————————————

Оказалось, что это было из за параметра

ring detect-timeout.

Между двумя звонками порт успевал сбросить
plar коннест, и если поднять в этот момент трубку,
то телефон подключается к адпаку, а при очередном
звонке на FXO уже занято.

* комментарий ap200:
в общем нужно поставить на FXO-вой апешке в данном
случае
ring detect-timeout 70 где-нить (т.е. увеличить его).
==================================================================

Спасибо Владимиру (кто такой, не заню, т.к. просто знакомый переслал этот файл).

==================================================================

==================================================================
20. Сброс настроек на AP100

Addpac DTMF

Настройка DTMF

В случае, если шлюз не распознает/воспринимает сигналы DTMF, рекомендуется осуществить следующие настройки:

AP200(config)# voice-port 0/0
AP200(config-voice-port-0/0)# dial-tone-generate
AP200(config-voice-port-0/0)# high-dtmf-gain <значение> –, 
где 
   <значение> - уровень усиления, диапазон значений варьируется в зависимости от модели шлюза (к примеру, в AP200 диапазон ←31 – 3>, по умолчанию «-5»).

Если DTMF-сигналы не распознаются AddPac’ом из-за малого значения входного/выходного усиления канала, следует изменить значения данных усилений путем настроек:

AP200(config-voice-port-0/0)# input gain <значение>
AP200(config-voice-port-0/0)# output gain <значение>

Addpac debugging

AP1100 –> KX-TDA200RU | АТС не распознает сигналы DTMF

Сообщение Андрей Д. » Ср апр 28, 2010 11:18 am

Схема простая:
VoIP-оператор (SIP) AddPac AP1100F (8.30U) – порты FXS включены в УПАТС Panasonic KX-TDA200RU. На УПАТС настроена DISA, которая проигрывает записанное голосовое приветствие и позволяет донабрать внутренний номер.
Беда в том, что при вызове из VoIP в УПАТС донабор не происходит :(
Происходит следующее (Аб. А с мобильного (7EFXXXXXXX) набирает Аб. на AddPac (73BCXXXXXXX)). На AddPac вызов приходит по SIP от оператора с IP-адреса M.M.M.M. (A.A.A.A – IP-адрес самого AddPac, Q.Q.Q.Q – IP-адрес медиашлюза оператора):
debub rta ipc
debug voip call
debug voip sip

КОД: ВЫДЕЛИТЬ ВСЁ
AP1100#
Received SIP PDU from ( M.M.M.M:5061 )
INVITE sip:73BCXXXXXXX@A.A.A.A SIP/2.0
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-4984830-282585247-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 1 INVITE
Contact: <sip:79EFXXXXXXX@M.M.M.M:5061>
Max-Forwards: 10
User-Agent: MERA MSIP v.3.0
Allow: ACK, BYE, CANCEL, INFO, INVITE, OPTIONS, REGISTER
Content-Type: application/sdp
Content-Length:   156

v=0
o=- 1272440991 1272440991 IN IP4 Q.Q.Q.Q
s=-
c=IN IP4 Q.Q.Q.Q
t=0 0
m=audio 10734 RTP/AVP 8 0
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000

AddPac паолучил INVITE от VoIP-оператора.

КОД: ВЫДЕЛИТЬ ВСЁ
   Sending SIP PDU to ( M.M.M.M:5061 ) from 5060
SIP/2.0 100 Trying
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-4984830-282585247-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 1 INVITE
User-Agent: AddPac SIP Gateway
Content-Length: 0

245   <Call   781>   : ******************  Call Created status(InitiatedByNet)  *******************
246   <SIP   781>   : Receive INVITE Request
247   <NetCon   781>   : Found inbound voip peer by IP address id(10)
248   <Call   781>   : From Net - calledParty(73BCXXXXXXX) callingParty(79EFXXXXXXX)
249   <Call   781>   : MatchedPerfect
250   <Call   781>   : MatchAllProcess After Sorted
<0>  id(0) dest(73BCXXXXXXX) prefer(0) selected(646)
<1>  id(1) dest(73BCXXXXXXX) prefer(1) selected(0)
<2>  id(2) dest(73BCXXXXXXX) prefer(2) selected(0)
<3>  id(3) dest(73BCXXXXXXX) prefer(3) selected(0)
251   <Call   781>   : Initiate callee with dial-peer(73BCXXXXXXX) status(CalleeDeterminedAll) id(00000000-0000-0000-0000-000000000000)
252   <CEP   000000>   : InitiateOutCall :  calledNum(), callingNum(79EFXXXXXXX), callerPort(ffffffff) type(FXS)
253   <CEP   000000>   : Outbound call to CEP callId(00000000-0000-0000-0000-000000000000) callNum(781)
254   <SIP   781>   : SetAlerting

В ответ отправил Trying.

КОД: ВЫДЕЛИТЬ ВСЁ
   Sending SIP PDU to ( M.M.M.M:5061 ) from 5060
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-4984830-282585247-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 1 INVITE
User-Agent: AddPac SIP Gateway
Contact: sip:73BCXXXXXXX@A.A.A.A
Content-Length: 0

255   <Call   781>   : Connected from(0)
256   <SIP   781>   : SetConnected
257   <SIP   781>   : Add Local Audio MediaFormat : 8

После того, как отправил сигнал “Посылка вызова” в соответствующий FXS-порт, отправил оператору сообщение Ringing.

КОД: ВЫДЕЛИТЬ ВСЁ
   Sending SIP PDU to ( M.M.M.M:5061 ) from 5060
SIP/2.0 200 OK
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-4984830-282585247-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 1 INVITE
Supported: timer, replaces, early-session
User-Agent: AddPac SIP Gateway
Contact: sip:73BCXXXXXXX@A.A.A.A
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, REFER, NOTIFY, INFO
Content-Type: application/sdp
Content-Length: 186

v=0
o=73BCXXXXXXX 1233174345 1233174345 IN IP4 A.A.A.A
s=AddPac Gateway SDP
c=IN IP4 A.A.A.A
t=1233174345 0
m=audio 23010 RTP/AVP 8
a=rtpmap:8 PCMA/8000/1
a=ptime:20

УПАТС ответила (сработала DISA) и AddPac отправил оператору сообщение OK для проключения голосового тракта.

КОД: ВЫДЕЛИТЬ ВСЁ
   Received SIP PDU from ( M.M.M.M:5061 )
ACK sip:73BCXXXXXXX@A.A.A.A SIP/2.0
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-4984830-282585247-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 1 ACK
Max-Forwards: 10
User-Agent: MERA MSIP v.3.0
Content-Length: 0

258   <SIP   781>   : ACK received
259   <SIP   781>   : Receive ACK Request
260   <SIP   781>   : Set Terminated Success for 1 INVITE
261   <SIP   779>   : Set Terminated Success for 5 BYE

Оператор сообщением ACK подтвердил получение OK.
Установился голосовой тракт и вызывающий абонент слышит проигрываемое DISA приветствие. Во время привествия начинает набирать внутренний номер 130.

КОД: ВЫДЕЛИТЬ ВСЁ
   Received SIP PDU from ( M.M.M.M:5061 )
INFO sip:73BCXXXXXXX@A.A.A.A SIP/2.0
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-4534990-282585254-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 2 INFO
Max-Forwards: 10
User-Agent: MERA MSIP v.3.0
Content-Type: application/dtmf-relay
Content-Length:    26

Signal=1
Duration=270

262   <SIP   781>   : Receive INFO Request
263   <Call   781>   : Digit(1) received by INFO
264   <CEP   000000>   : PlayDigit (1)

Sending SIP PDU to ( M.M.M.M:5061 ) from 5060
SIP/2.0 200 OK
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-4534990-282585254-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 2 INFO
User-Agent: AddPac SIP Gateway
Content-Length: 0

Получив от опертора пакет INFO с информацией о набранной цифре “1” AddPac, судя по логу, проигрывает ее в порт FXS (PlayDigit (1)).
В этот момент приветствие прерывается – т.е. УПАТС обнаружила набранные в тоне цифры от AddPac.

КОД: ВЫДЕЛИТЬ ВСЁ
   Received SIP PDU from ( M.M.M.M:5061 )
INFO sip:73BCXXXXXXX@A.A.A.A SIP/2.0
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-1165890-282585255-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 3 INFO
Max-Forwards: 10
User-Agent: MERA MSIP v.3.0
Content-Type: application/dtmf-relay
Content-Length:    26

Signal=3
Duration=270

265   <SIP   781>   : Receive INFO Request
266   <Call   781>   : Digit(3) received by INFO
267   <CEP   000000>   : PlayDigit (3)

Sending SIP PDU to ( M.M.M.M:5061 ) from 5060
SIP/2.0 200 OK
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-1165890-282585255-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 3 INFO
User-Agent: AddPac SIP Gateway
Content-Length: 0

268   <SIP   781>   : Set Terminated Success for 2 INFO

Received SIP PDU from ( M.M.M.M:5061 )
INFO sip:73BCXXXXXXX@A.A.A.A SIP/2.0
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-8000030-282585255-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 4 INFO
Max-Forwards: 10
User-Agent: MERA MSIP v.3.0
Content-Type: application/dtmf-relay
Content-Length:    26

Signal=0
Duration=270

269   <SIP   781>   : Receive INFO Request
270   <Call   781>   : Digit(0) received by INFO
271   <CEP   000000>   : PlayDigit (0)

Sending SIP PDU to ( M.M.M.M:5061 ) from 5060
SIP/2.0 200 OK
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-8000030-282585255-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 4 INFO
User-Agent: AddPac SIP Gateway
Content-Length: 0

272   <SIP   781>   : Set Terminated Success for 3 INFO

Вроде все по честному, появляется еще два пакета INFO с цифрами “3” и “0” и они честно проигрываются адпаком в FXS-порт.
Только беда в том, что вызов в 1 случае из 10 проключается в нужном направлении, а в 9 случаях из 10 он уходит на 101 или 102, или вообще не тому :(
Ну и далее следует процедура разъединения.

КОД: ВЫДЕЛИТЬ ВСЁ
   Received SIP PDU from ( M.M.M.M:5061 )
BYE sip:73BCXXXXXXX@A.A.A.A SIP/2.0
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-6355030-282585277-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 5 BYE
Max-Forwards: 10
User-Agent: MERA MSIP v.3.0
Content-Length: 0

273   <SIP   781>   : Receive BYE Request

Sending SIP PDU to ( M.M.M.M:5061 ) from 5060
SIP/2.0 200 OK
Via: SIP/2.0/UDP M.M.M.M:5061;rport;branch=z9hG4bK-6355030-282585277-335544448-862082398
From: <sip:79EFXXXXXXX@M.M.M.M:5061>;tag=4984450-282585247-335544448-862082398
To: <sip:73BCXXXXXXX@A.A.A.A>;tag=49492bf64c
Call-ID: a00e4c009fe8d710800000145e556233@M.M.M.M
CSeq: 5 BYE
User-Agent: AddPac SIP Gateway
Content-Length: 0

274   <SIP   781>   : ReleaseWithNothing
275   <Call   781>   : Terminated  from(fffffffe) this(Remote:CallClear) before(NULL) forced(0)
276   <CEP   000000>   : DisconnectCall at Busy
277   <CEP   000000>   : StopSignal
278   <CEP   000000>   : Disconnect (0)
279   <NetEP   781>   : Call TO <M.M.M.M> terminated reason(Remote:CallClear)
280   <SIP   781>   : Set Terminated Success for 4 INFO

Ниже конфиг адпака:

КОД: ВЫДЕЛИТЬ ВСЁ
AP1100# sh run
!
version 8.30U
!
hostname AP1100
!
!
no bridge spanning-tree
!
dhcp-list 1 type server
dhcp-list 1 address server  10.1.1.2 10.1.1.126 255.255.255.128
!
!
ip-share enable
ip-share interface net-side ether0.0
ip-share interface local-side ether1.0
!
interface ether0.0
ip address A.A.A.A 255.255.255.224
mac-address 00:e0:4c:15:d9:96
qos-control
!
interface ether1.0
no ip address
!
snmp name AP1100F
snmp enable-trap dn-register 300 forcely-block
!
no arp reset
!
route 0.0.0.0 0.0.0.0 212.49.121.97
!
ip-tos rtp precedence 5
ip-tos rtp delay
ip-tos rtp throughput
ip-tos sig precedence 3
ip-tos sig throughput
!
!
!
!
!
! VoIP configuration.
!
!
! Voice service voip configuration.
!
voice service voip
fax protocol t38 redundancy 2
fax rate 9600
h323 call start fast
h323 call tunnel enable
timeout tidt 10
busyout monitor gatekeeper
busyout monitor voip-interface
!
!
! Voice port configuration.
!
! FXS
voice-port 0/0
fax-early-detect
no caller-id enable
!
!
! FXS
voice-port 0/1
fax-early-detect
no caller-id enable
!
!
! FXS
voice-port 0/2
fax-early-detect
no caller-id enable
!
!
! FXS
voice-port 0/3
fax-early-detect
no caller-id enable
!
!
! FXS
voice-port 1/0
fax-early-detect
no caller-id enable
!
!
! FXS
voice-port 1/1
fax-early-detect
no caller-id enable
!
!
! FXS
voice-port 1/2
fax-early-detect
no caller-id enable
!
!
! FXS
voice-port 1/3
fax-early-detect
no caller-id enable
!
!
!
!
!
voice service voip
minimize-voip-port multiply 1
!
! Pots peer configuration.
!
dial-peer voice 0 pots
destination-pattern 73BCXXXXXXX
port 0/0
!
dial-peer voice 1 pots
destination-pattern 73BCXXXXXXX
port 0/1
preference 1
!
dial-peer voice 2 pots
destination-pattern 73BCXXXXXXX
port 0/2
preference 2
!
dial-peer voice 3 pots
destination-pattern 73BCXXXXXXX
port 0/3
preference 3
!
dial-peer voice 4 pots
destination-pattern 73BCXXXXXXX
port 1/0
!
dial-peer voice 5 pots
destination-pattern 73BCXXXXXXX
port 1/1
preference 1
!
dial-peer voice 6 pots
destination-pattern 73BCXXXXXXX
port 1/2
preference 2
!
dial-peer voice 7 pots
destination-pattern 73BCXXXXXXX
port 1/3
preference 3
!
!
!
! Voip peer configuration.
!
dial-peer voice 10 voip
destination-pattern [01]..F
session target M.M.M.M  5061
session protocol sip
voice-class codec 0
no vad
dtmf-relay rtp-2833
translate-outgoing called-number 1
fax protocol t38 redundancy 2
fax rate 9600
!
dial-peer voice 11 voip
destination-pattern [2-3]......F
session target M.M.M.M  5061
session protocol sip
voice-class codec 0
no vad
dtmf-relay rtp-2833
translate-outgoing called-number 1
preference 1
fax protocol t38 redundancy 2
fax rate 9600
!
dial-peer voice 12 voip
destination-pattern 8[2-9].........F
session target M.M.M.M  5061
session protocol sip
voice-class codec 0
no vad
dtmf-relay rtp-2833
translate-outgoing called-number 1
preference 2
fax protocol t38 redundancy 2
fax rate 9600
!
dial-peer voice 13 voip
destination-pattern 810T
session target M.M.M.M  5061
session protocol sip
voice-class codec 0
no vad
dtmf-relay rtp-2833
translate-outgoing called-number 1
preference 2
fax protocol t38 redundancy 2
fax rate 9600
!
!
!
!
!
!
gatekeeper
!
!
! Gateway configuration.
!
gateway
h323-id voip.A.A.A.A
no ignore-msg-from-other-gk
!
!
! Codec classes configuration.
!
voice class codec 0
codec preference 1 g729
codec preference 2 g711alaw
codec preference 3 g711ulaw
!
!
!
! Translation Rule configuration.
!
translation-rule 1
rule 1      [01]T                    %99
rule 2      [23]T                    7343%99
rule 3      810T                     %04%99
rule 4      8T                       7%02%99
!
!
!
! SIP UA configuration.
!
sip-ua
!
!
! MGCP configuration.
!
mgcp
codec g711ulaw
vad
!
!
! Tones
!
!
!
!
AP1100#  sh ver

VoiceFinder Gateway Series (AP1100F)
Serial Number: AP1100F-03d6c6
32BIT RISC Processor With 50MHz Clock
32 Mbytes System Memory.
512 Kbytes System Boot Flash Memory
4 Mbytes System Flash Memory
Real-Time Clock Device with EEPROM

1 RS232 Serial Console Interface
1 Ethernet/IEEE 802.3 Interface (100BaseTX)
1 Ethernet/IEEE 802.3 Interface (10BaseT)

AP1100F System software Revision 8.30U
Released at Wed May 28 17:31:54 2008
Program is 3002144 bytes, checksum is 0x17c70e13
AP1100#
AP1100# sh files
-rwxrwxrwx   1    noone  nogroup        0 Jan 28 2009 evtlog0.txt
-rwxrwxrwx   1    noone  nogroup        0 Jan 28 2009 evtlog1.txt
-rwxrwxrwx   1    noone  nogroup        0 Jan 28 2009 cmdlog0.txt
-rwxrwxrwx   1    noone  nogroup        0 Jan 28 2009 cmdlog1.txt
-rwxrwxrwx   1    noone  nogroup     4367 Jan 28 2009 config.cfg
-rwxrwxrwx   1    noone  nogroup  3002144 May 28 2008 ap1100from_v8_30U.bin
AP1100#

С уважением,
Давыдов Андрей
Инженер связи
г.Екатеринбург
Аватара пользователя
Андрей Д.
Специалист
 
Сообщения: 395
ICQ: 325602156
Зарегистрирован: Пн мар 05, 2007 8:54 pm
Откуда: г.Екатеринбург

Re: AP1100 –> KX-TDA200RU | АТС не распознает сигналы DTMF

Сообщение Андрей Д. » Ср апр 28, 2010 1:29 pm

Блин, прошу прощенья, за бесполезную тему, порылся в факе и наткнулся на п. 4:

4. Как настроить чтоб работал DTMF?
——————————————————————

AP200(config)# voice-port 0/0
AP200(config-voice-port-0/0)# dial-tone-generate
AP200(config-voice-port-0/0)# high-dtmf-gain

Ранее вроде пробовал крутить high-dtmf-gain, но делал это совместно с low-dtmf-gain и видмо был не прав :(
Когда сделал high-dtmf-gain 0, то УПАТС вообще перестала реагировать на цифры и продолжала проигрывать приветствие, а когда сделал high-dtmf-gain -10, то вроде стало все работать как надо 8-)

P.S.: Хотел бы, пользуясь случаем, попросить ГУРУ немного пояснить более доходчиво назначение этих параметров.
В доке пишут:

Для настройки высокочастотного усиления dtmf-сигнала используйте команду high-dtmf-gain.
Для блокировки конфигурации high-dtmf-gain используйте команду no high-dtmf-gain.

Значение усиления Dtmf в децибелах. Диапазон значений – целые
числа в пределах между –31 и 3.

Но что конкретно усиливается параметром high-dtmf-gain и что параметром low-dtmf-gain неясно? Если предположить, что high-dtmf-gain усиливает высокочастотную составляющую сигналов DTMF, а low-dtmf-gain низкочастотную, то это не совсем логично, т.к. сигналы тонального набора DTMF – это двух частотные сигналы, которые формируются из импульсов строго-определенной частоты и длительности, поэтому говорить здесь о их высоко- или низкочастотной составляющей не совсем корректно …

С уважением,
Давыдов Андрей
Инженер связи
г.Екатеринбург

NAT Addpac

some rules:

!

nat-list 0 pat address 192.168.50.50
nat-list 0 pat static-entry tcp 1720 local
nat-list 0 pat static-entry udp 5060 local
nat-list 0 pat static-entry icmp ping local
nat-list 0 pat static-entry udp 22000 local
nat-list 0 pat static-entry udp 22002 local
nat-list 0 pat static-entry udp 22003 local
nat-list 0 pat group-static-entry udp 23000 23003 local
nat-list 0 pat group-static-entry udp 16000 17000 local
nat-list 0 pat group-static-entry tcp 14000 14003 local
nat-list 0 pat group-static-entry tcp 10000 10001 local
nat-list 0 pat static-entry tcp 21 local
nat-list 0 pat static-entry tcp 20 local
nat-list 0 pat static-entry tcp 23 local
nat-list 0 pat static-entry tcp 35300 192.168.0.101
nat-list 0 pat static-entry udp 35300 192.168.0.101
!
no ip-share enable
ip-share interface net-side ether0.0
ip-share interface local-side ether1.0
!
interface ether0.0
ip address 192.168.50.50 255.255.255.0
!
interface ether0.1
no ip address
!
interface ether1.0
ip address 192.168.0.3 255.255.255.0
ip nat-group 0 pat ether0.0
!