На главную страницу

Что такое Asterisk, CallWeaver, Yate, FreeSwitch?

Asterisk - открытая программная АТС.
Callweaver - клон Asterisk версии 1.2.
Yate(Yet Another Telephony Engine) - открытая программная АТС.
FreeSwitch - открытая программная АТС.

Любая из этих АТС поддерживает множество VoIP протоколов и предоставляет функции голосовой почты, конференций, интерактивного голосового меню (IVR), центра обработки вызовов (постановка звонков в очередь и распределение их по агентам используя различные алгоритмы), запись CDR и прочие функции.

Что такое DAHDI, Zaptel?

Asterisk не может обмениваться данными с периферийным оборудованием, эту задачу должен выполнять драйвер. Также, драйвер должен быть "понятным/однотипным" для Asterisk.

В случае карт E1 и линейных окончаний Asterisk, драйвером для работы с Asterisk является DAHDI или Zaptel (предок DAHDI). Именно он предоставляет "понятный" интерфейс для Asterisk.
Драйвер для самого устройства, как правило, поставляется производителем.

Как работает Asterisk с периферийным оборудованием Asteroid, Quasar, ELF2-AE?

Asterisk передает и принимает данные и сигнализацию с помощью DAHDI.
DAHDI, получив запрос от Asterisk, отправляет его в драйвер устройства, например в Quasar.
Драйвер устройства отправляет данные от Asterisk в устройство, а данные от устройства в DAHDI.

У меня не компилируется драйвер DAHDI, в чем может быть проблема?

Возможно, у вас не установлены:

  • Компилятор (gcc).
    Компилятор должен быть той же версии, которой собрано ядро ОС.
    cat /var/log/dmesg | grep "Linux version"
  • Должны быть установлены заголовочные файлы ядра.
    Обычно это пакет вида linux-headers-xx-x86, он добавит ссылку /lib/modules/xx.yy.zz/build/ на папку с заголовочными файлами. Команда "ls /lib/modules/`uname -r`/build/" должна выполниться без ошибок.
  • Не установлены вспомогательные пакеты libnewt-dev, ncurses-dev.
    Полный список нужно смотреть в файлах README внутри DAHDI.

У меня не запускается драйвер DAHDI, в чем может быть проблема?

  • Модуль не установлен.
    Установите его согласно руководству - в архиве есть файлы README.
  • Драйвер DAHDI и ядро ОС собраны разными версиями gcc.
    dmesg выдаст список сообщений от ядра ОС.
    tail -f /var/log/kern.log будет печатать все новые сообщения.
    Так, загружая драйвер вы увидите, что выводило ядро в этот момент.
  • Не удовлетворены зависимости модулей.
    Выполните depmod -a.
    Диагностика такая же, как в предыдущей проблеме.

Работает ли ваше оборудование с сигнализацией SS7(ОКС7), PRI?

Все устройства за исключением Asteroid работают с любой сигнализацией, поддержанной в Asterisk.
В Asterisk есть поддержка SS7(ОКС7), PRI, и много других.

При разговоре слышны щелчки, факсы плохо проходят.

У вас неправильно настроена синхронизация.
Конфигурация интерфейсов DAHDI должна быть описана в /etc/dahdi/system.conf.
Далее, по этому вопросу примеры конфигурации приводятся в скобках "{ }".

Драйвер DAHDI работает с синхронным оборудованием, т.е. каждая следующая порция данных в следующий такт должна быть доступна. Если Периферийных устройств несколько - они должны работать синхронно, по одним часам.

В синхронной сети должно выполняться одно простое правило - master должен быть соединен с slave. Если это правило нарушается - будут потерянные(skip) или повторенные (slip) кадры.

Предположим, вы получаете от АТС поток E1, т.е. АТС - master, заводите его в Asterisk/DAHDI, и у вас есть внутренний коммутатор.
В такой схеме вы должны настроить порт 1 адаптера Quasar как slave {span = 1,1,0,cas,hdb3,crc4} , он смотрит на АТС.
Порт 2 настроить как master {span = 2,0,0,cas,hdb3,crc4}, порт 2 будет получать синхронизацию от порта 1, т.к. это одно устройство.
Внутренний коммутатор должен быть в режиме slave. DAHDI будет работать с устройствами по часам АТС.

Другой вариант, к АТС у вас подключен ELF2-AE, а в офис подключен Asteroid.
ELF2-AE настроен в режиме slave, в мониторе ELF2-AE режим slave {dynamic=eth,eth1/00:55:55:55:55:00/0,30,1}.
Ethernet данные отправляются по часам АТС, то есть ELF2-AE slave на порту E1, master на Ethernet. DAHDI работает как slave, в конечном счете, от часов АТС, Осталось настроить Asteroid.
Asteroid должен быть slave{dynamic=eth,eth1/00:55:55:55:55:00/0,30,0}, и в мониторе Asteroid настраиваем как master, VCO=1,2 (именно master, asteroid будет подстраивать свои часы по часам от Ethernet потока DAHDI).

В текущей версии DAHDI (2.2.0) master'ом для DAHDI становится первое зарегистрированное устройство, в нашей сборке эта ошибка исправлена.
Подробнее о синхронизации и исправлениях в DAHDI см. в руководстве пользователя Asteroid и ELF2-AE, раздел "синхронизация Zaptel/DAHDI" и "Исправления в Zaptel/DAHDI".

Будет ли работать Asterisk и ваше оборудование в виртуальной машине?

Зависит от типа виртуализации.

DAHDI получает от устройств данные с темпом 1000 кадров в секунду (время - 1мс).
Будет работать "Виртуализация уровня ОС", в ней виртуализируется только пользовательское окружение, то есть ядро ОС одно. Примеры: OpenVZ, Virtuozzo, Linux-VServer.

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

Как проверить правильность настройки DAHDI и оборудования?

Для поиска проблем, ознакомимся с инструментами и терминами:

  • SPAN - логическое устройство, объединеное единой сигнализацией.
    Каждый порт E1/T1 - это SPAN. Банк каналов Asteroid также виден как SPAN.
  • cat /proc/dahdi/1 - распечатать файл 1 из /proc/dahdi/.
    В файлах 1,2,... драйвер DAHDI отображает состояние каналов.
  • lsmod - вывести список загруженных модулей.
  • команда | grep dahdi - выполнить команду и отфильтровать вывод построчно по слову dahdi.
  • tail - вывести хвост файла
    -f - выводить изменения в файле
    tail -f /var/log/kern.log  - покажет сообщения в реальном времени.
    Лучше держать открытым все время поиска проблемы.
  • dahdi_cfg - применение настроек из файла /etc/dahdi/system.conf к драйверам DAHDI и устройств.
    -s отмена конфигурации (освобождение устройств)
  • dahdi_tool - монитор линий (SPAN'ов) DAHDI.

Что надо проверить и в какой очередности:

  1. Проверить что модуль DAHDI и устройства загружен.
    lsmod | grep dahdi
    lsmod | grep quasar
    quasar - модуль для адаптера Quasar, Quasar-m
    dahdi_dynamic - модуль TDMoE, необходимый для Asteroid, ELF2-AE.
  2. Проверить сообщения от ядра
    dmesg
    tail -f /var/log/kern.log
  3. Проверить файлы в /dev/
    ls /dev/dahdi/ должны выдать список файлов.
    Должны быть как минимум файлы channel, ctl, pseudo, timer.
  4. Проверить состояние линии.
    cat /proc/dahdi/номер_span
    dahdi_tool
    Линии должны быть со статусом OK.
    UNCONFIGURED означает, что драйвер загружен, но не сконфигурирован dahdi_cfg.
  5. Если не сконфигурированы - сконфигурировать.
    Отредактировать /etc/dahdi/system.conf любым редактором (editor, mcedit, joe, kedit, gedit), применить настройки командой dahdi_cfg.
    Ключ -vvv - вывести более полную информацию (больше v - больше информации).
  6. Проверить настройки каналов
    cat /proc/dahdi/номер_span
    dahdi_tool
    Убедиться что фактические настройки совпадают с тем, что хотели.
  7. Проверить, что от устройства идут прерывания.
    watch -n 1 cat /proc/interrupts
    От Quasar, Quasar-mini прерываний должно быть 1000 в секунду.

Стоит помнить, что в DAHDI/Asterisk инверсная терминология в отношении FXS/FXO.
Линия декларированная как FXS - это линия, смотрящая в сторону FXS, эту линию вы подключите к АСТ.
Линия декларированная как FXО - это линия, смотрящая в сторону FXO, к этой линии вы подключите телефоны.

Как расчитать производительность компьютера для АТС?

Выясняется только эмпирическим путем, сильно зависит от включеных опций/функций.
За оценку можно взять статью http://quasar.sourceforge.net/bench.htm .
Так, на P4 2,41 GHz с hyperthreading без эхоподавления работает транзит между E1 и SIP на 240 каналов (8 линий E1).

Прожорливые компоненты:

  • Эхоподавитель
  • Кодеки (G729, g723, iLBC)
  • Функции распознавания речи

Так, использование ресурсоемких, но сильно уплотняющих кодеков в пределах локальной сети является лишним, и ухудшающим качество звука. Их можно смело выключать, или ставить последними в списке приоритетов.

Звук сильно искажен.

Закон кодирования DAHDI и конечного устройства не совпадают.
Например, Asteroid настроен на A-law, в то время как DAHDI выдает звук в u-law.
Закон меняется параметром {alaw=} или {ulaw=} в файле /etc/dahdi/system.conf.

Зачем нужны параметры echocancel, echotraining, echocancelwhenbridged?

В файле /etc/asterisk/chan_dahdi.conf должна быть описана конфигурация, которую asterisk при загрузке запишет в DAHDI.

  • echocancel - включить или выключить эхоподавитель.
    32,64,...,2^N = Длина эхо-тракта. Задается в taps'ах, 8 taps = 1мс.
    yes = 128 taps = 16мс.
    no = выключить эхоподавитель.
  • echotraining - включить тренировку эхоподавителя.
    Не включайте эту опцию, в нормальном эхоподавителе эта опция если не вредна, то как минимум бесполезна. Остатки от никогда нормально неработавших kb, mg2,...
    Используйте oslec, и НЕ включайте эту опцию.
  • echocancelwhenbridged - разрежить удалять эхо при соединении 2-х DAHDI каналов (анг. bridge).
    При разговоре между 2-мя телефонами, подключеными через DAHDI будет удаляться эхо.
    Без этой опции, эхо удаляется только на разговоре DAHDI->SIP/IAX/любой_не_DAHDI_канал.
Поиск по сайту


  Россия, Новосибирск
  Контакты


©2001-2024 Parabel inc.