Подключение двух серверов Asterisk между собой по Ethernet с помощью DAHDI

Содержание

В процессе изучения методов работы с DAHDI и цифровыми потоками Е1 возникла идея соединить 2 АТС между собой, не используя при этом стандартные решения вроде протокола IAX или SIP-транки, при условии отсутствия плат и шлюзов для работы с е1. Внимание сразу же было обращено на TDMoE. В данной статье будет рассмотрена непосредственно сама технология TDMoE []

В процессе изучения методов работы с DAHDI и цифровыми потоками Е1 возникла идея соединить 2 АТС между собой, не используя при этом стандартные решения вроде протокола IAX или SIP-транки, при условии отсутствия плат и шлюзов для работы с е1. Внимание сразу же было обращено на TDMoE. В данной статье будет рассмотрена непосредственно сама технология TDMoE и её применение для соединения двух серверов на базе Астериск.

О технологии TDMoE

Перед тем как начинать сборку нашего экспериментального стенда, первым делом необходимо разобрать что из себя представляет TDMoE. Расшифровывается название как TimeDivisionMultiplexing-over-Ethernet, эта технология была изобретена для тех случаев, когда необходима надежность TDM, но нет классического оборудования для реализации.

Телефония на основе TDM использует временн̀ое мультиплексирование. Это значит, что голосовые потоки дробятся на порции, пакеты которых снабжаются минимальным заголовком, включающим в себя лишь маркировку начала пакета, и в дальнейшем все каналы «упаковываются» в определенном порядке. Каналы при этом будут дифференцироваться не по этим заголовкам, а по времени прибытия, т.е. сигнал будет делиться на временн̀ые интервалы, несущие данные одного канала. Таким образом работает цифровой поток E1.

Отличительной особенностью является то, что, по сути, технология TDMoE запускает цифровой Е1 поток не по специализированным линиям, а банально по Ethernet. Чтобы использовать TDMoE в сегменте сети должен присутствовать Zaptel-интерфейс, ныне известный как DAHDI (проект был переименован 19 мая 2008 года). На примере Астериска выглядеть должно примерно следующим образом: при «поднятии» TDMoE линка АТС увидит 30 каналов, выглядящих как поток E1.

Сборка

Итак, перед нами стоит задача собрать экспериментальный стенд, состоящий из двух серверов Астериск, соединенных между собой с помощью TDMoE. Собрать было решено на двух виртуальных машинах VM VirtualBox в одной подсети. В качестве подопытных будут использованы CentOS 6.10 и CentOS 7, на обеих системах Астериск 13 версии. Ниже на скриншотах представлены настройки для первой виртуальной машины:

Настройки VirtualBox для первой виртуальной машины 1
Настройки VirtualBox для первой виртуальной машины 2
Настройки VirtualBox для первой виртуальной машины 3
ifconfig для первой виртуальной машины

По аналогии настраиваем вторую:

Настройки VirtualBox для второй виртуальной машины 1
Настройки VirtualBox для второй виртуальной машины 2
Настройки VirtualBox для второй виртуальной машины 3
ifconfig для второй виртуальной машины

Далее нам необходимо, чтобы на виртуалках был установлен Астериск и сам DAHDI. Процесс установки расписывать нет смысла, т.к. статья не об этом. Мы просто убедимся, что DAHDI встал корректно, вызвав инструмент отладки и тестирования с помощью команды:

Выполнение dahdi_test на первой виртуальной машине
Выполнение dahdi_test на второй виртуальной машине

Следующим шагом нам необходимо на виртуальной машине 1 прописать в файле /etc/dahdi/system.conf следующее:

/etc/dahdi/system.conf

Итак, разберем, что же мы записали в наш файл конфигурации:

  1. Строка dynamic=eth,eth0/ XX:XX:XX:XX:XX:XX,32,0
  • dynamic = eth – определяем тип динамического драйвера (в нашем случае для ethernet)
  • eth0/XX:XX:XX:XX:XX:XX – мак адрес виртуалки с которой будем работать (с которой устанавливаем соединение нашей текущей машины)
  • 32 – количество каналов
  • 0 – приоритет синхронизации (тайминг) каналов
  1. Строка bchan=1-15,17-32 – задаем голосовые тайм-слоты
  2. Строка dchan=16 – задаем сигнальный (для данных) тайм-слот

Перезапускаем DAHDI c помощью команды «service dahdi restart» и заходим в утилиту работы с устройствами (команда «dahdi_tool») и видим следующее:

Устройство отображается в dahdi_tool

Если мы где-то в синтаксисе допустили ошибку, то при перезапуске сервиса увидим следующее сообщение:

Ошибка при перезагрузке сервиса dahdi

Итак, наше устройство начало отображаться в списке устройств dahdi_tool, но статус все еще RED. Это означает, что отсутствует связь с устройством. Исправляется это симметричным конфигом на второй станции, но уже с указанием мак-адреса сетевого интерфейса первой машины:

Конфиг файл /etc/dahdi/system второй машины

Результат не заставил себя долго ждать:

Статус поменялся на OK с двух сторон

Далее нам необходимо настроить наши каналы в файле /etc/asterisk/chan_dahdi.conf с двух сторон. Записываем одинаковый конфиг в оба файла:

/etc/asterisk/chan_dahdi.conf на одной из машин

Проверить, что каналы поднялись командой dahdi show channels в консоли Астериска или с помощью команды dahdi_cfg -v в bash:

dahdi_cfg -v на одной из машин

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

Подробнее о работе с DAHDI можно прочитать в статье «Работа с DAHDi»

Вывод

Данная статья является по сути своей экспериментом, в результате которого удалось рассмотреть процесс соединения 2 серверов Астериск с помощью DAHDI с использованием технологии TDMoE.


Источник: voxlink.ru