Час Ч настал, и 1 потока Е1 нам хватать перестало. Благо, на АТС раскроссировано сразу 4, так что дело осталось за малым — установить и настроить новую плату на 4 потока.
В качестве устройства была выбрана Digium TE407P — решение с 4 портами PRI E1\T1 и модулем аппаратного эхоподавления. Она заменила стоявшую там Digium TE122P — младшую 1портовую модель.
Итак, приступим:
Подготовка:
Для начала, подготовим патч-корды, которыми наш девайс будет соединяться с АТС. Для этого используется обычный кабель UTP 5CAT в стандартной распиновке, где используются оранжевая и синяя пара (1-2 и 4-5 контакты).
Обратный конец, при необходимости, обжать на кроссовер, то бишь если 1 конец у нас бо-о, с-бс, то второй будет с-бс, бо-о). У меня второй конец вставлялся прямо в плинт от АТС, поэтому я его даже не обжимал, а пользовался ключом для плинтов (очень удобная вещь)
Но об этом позже.
Итак, физика у нас теоретически готова. Приступим к подготовке ПО.
Для начала, необходимо подкорректировать настройки модуля DAHDI:
Открываем файл /etc/dahdi/modules.conf и раскомментируем строку, отвечающую за поддержку карт данной модели и комментируем ненужный более модуль поддержки те122:
wct4xxp #wcte12xp
Исправим некоторые настройки в /etc/dahdi/system.conf
loadzone = us defaultzone = us span=1,1,0,ccs,hdb3 bchan=1-15 dchan=16 bchan=17-31 span=2,2,0,ccs,hdb3 bchan=33-62 dchan=32 span=3,3,0,ccs,hdb3 bchan=64-93 dchan=63 span=4,4,0,ccs,hdb3 bchan=95-124 dchan=94 echocanceller=mg2,1-15,17-31,33-62,64-93,95-124
Небольшая ремарка. Потока у нас будет 4, однако на 1м из них (старом) D-канал настроен на 16й канал, а на остальных — на 1й, что в дальнейшем привнесло небольшой разлад и притормозило работу.
Итак, с модулем DAHDI закончили.
Выключаем сервер, заменяем ТЕ122Р на ТЕ407Р, включаем…
Коммутация и тестирование
После включения сервера проверяем вывод dmesg:
dmesg wct4xxp 0000:03:00.0: Found a Wildcard: Wildcard TE405P (5th Gen) wct4xxp 0000:03:00.0: TE4XXP: Launching card: 0
Взлетело. Отлично.
Проверяем правильность кроссировки с обеих сторон. Для этого используем извечный метод всех телефонистов — loopback, он же замыкание на себя.
Для платы — достаточно закоротить оранжевую и синюю пары, если индикатор на передней панели карты загорелся зеленым-мы все сделали правильно.
Для АТС — аналогично. Я для этих целей использовал специальный девайс, шедший в комплекте с платой:
Представляет собой кусок текстолита с RJ-45 разъемом и замкнутыми контактами на нужных парах, с логотипом дигиума. Повесил на брелок =)
Коммутируем с обеих сторон — вставляем RJ-45 в плату, с помощью описанного выше ключа коммутируем в плинт. Если все ОК — индикатор на АТС и плате должны загореться зеленым, если не загорелись — нужно поменять местами синюю и оранжевую пару (Rх платы должен идти к Tх ATC, и наоборот).
Железо проверили, переходим к логике:
Проверяем состояние потоков утилитой dahdi_scan
dahdi_scan [1] active=yes alarms=OK description=T4XXP (PCI) Card 0 Span 1 name=TE4/0/1 manufacturer=Digium devicetype=Wildcard TE405P (5th Gen) (VPMOCT128) location=Board ID Switch 0 basechan=1 totchans=31 irq=22 type=digital-E1 syncsrc=1 lbo=0 db (CSU)/0-133 feet (DSX-1) coding_opts=AMI,HDB3 framing_opts=CCS,CRC4 coding=HDB3 framing=CCS [2] active=yes alarms=OK description=T4XXP (PCI) Card 0 Span 2 name=TE4/0/2 manufacturer=Digium devicetype=Wildcard TE405P (5th Gen) (VPMOCT128) location=Board ID Switch 0 basechan=32 totchans=31 irq=22 type=digital-E1 syncsrc=1 lbo=0 db (CSU)/0-133 feet (DSX-1) coding_opts=AMI,HDB3 framing_opts=CCS,CRC4 coding=HDB3 framing=CCS [3] active=yes alarms=OK description=T4XXP (PCI) Card 0 Span 3 name=TE4/0/3 manufacturer=Digium devicetype=Wildcard TE405P (5th Gen) (VPMOCT128) location=Board ID Switch 0 basechan=63 totchans=31 irq=22 type=digital-E1 syncsrc=1 lbo=0 db (CSU)/0-133 feet (DSX-1) coding_opts=AMI,HDB3 framing_opts=CCS,CRC4 coding=HDB3 framing=CCS [4] active=yes alarms=OK description=T4XXP (PCI) Card 0 Span 4 name=TE4/0/4 manufacturer=Digium devicetype=Wildcard TE405P (5th Gen) (VPMOCT128) location=Board ID Switch 0 basechan=94 totchans=31 irq=22 type=digital-E1 syncsrc=1 lbo=0 db (CSU)/0-133 feet (DSX-1) coding_opts=AMI,HDB3 framing_opts=CCS,CRC4 coding=HDB3 framing=CAS
Плата и АТС весело перемигиваются зелеными огоньками, DAHDI потоки подхватил, значи можно переходить к следующему этапу
Конфигурирование Asterisk-а
Подправим модуль chan_dahdi.conf
[channels] language=ru context=incoming-pstn switchtype=euroisdn signalling=pri_cpe usecallerid=yes hidecallerid=no callwaiting=yes usecallingpres=yes callwaitingcallerid=yes threewaycalling=yes transfer=yes cancallforward=yes callreturn=yes echocancel=yes echocancelwhenbridged=yes rxgain=-1.0 txgain=1.0 callgroup=1 pickupgroup=1 immediate=no relaxdtmf=yes group = 1 channel => 1-15,17-31,33-62,64-93,95-124
После этого делаем рестарт Астериска и в стандартной конфигурации все должно заработать.
В стандартной. Но не у нас.
У нас Астериск упорно не желает загружать 2-4 потоки, при этом не давая работать и первому.
Если оставить так:
channel => 1-15,17-31
работает.
Думал, где-то что-то не так настроил или скроссировал. Потом дошло.
Как писалось выше, D-channel (канал с сигнализацией) на 1 потоке у нас настроен на 16 канал, а на остальных — на первый. Астериск почему-то по умолчанию считает D-каналом именно16й (видимо, поэтому ранее на него и был настроен со стороны АТС), и о том, что модуль DAHDI видит D-каналы 2-4 потоков на 1 канале — ничего знать не хочет. Что ж, мы ему об этом расскажем:
Допишем в начале chan_dahdi.conf:
[trunkgroups] trunkgroup => 1,16 trunkgroup => 2,32 trunkgroup => 3,63 trunkgroup => 4,94 spanmap => 1,1 spanmap => 2,2 spanmap => 3,3 spanmap => 4,4
Описание из семпл-файла:
; Group: Defines a trunk group. ; trunkgroup => <trunkgroup>,<dchannel>[,<backup1>...] ; ; trunkgroup is the numerical trunk group to create ; dchannel is the DAHDI channel which will have the ; d-channel for the trunk. ; backup1 is an optional list of backup d-channels.
; Spanmap: Associates a span with a trunk group ; spanmap => <dahdispan>,<trunkgroup>[,<logicalspan>] ; ; dahdispan is the DAHDI span number to associate ; trunkgroup is the trunkgroup (specified above) for the mapping ; logicalspan is the logical span number within the trunk group to use. ; if unspecified, no logical span number is used.
Опция trunkgroup создает транковые группы, в которых можно указать номер D-канала, опция spanmap привызывает конкретный span к конкретной группе.
Рестарт Астериска…
> dahdi show status Description Alarms IRQ bpviol CRC Fra Codi Options LBO T4XXP (PCI) Card 0 Span 1 OK 2 0 0 CCS HDB3 0 db (CSU)/0-133 feet (DSX-1) T4XXP (PCI) Card 0 Span 2 OK 2 0 0 CCS HDB3 0 db (CSU)/0-133 feet (DSX-1) T4XXP (PCI) Card 0 Span 3 OK 2 0 0 CCS HDB3 0 db (CSU)/0-133 feet (DSX-1) T4XXP (PCI) Card 0 Span 4 OK 2 0 0 CAS HDB3 0 db (CSU)/0-133 feet (DSX-1) > pri show spans PRI span 1/0: Up, Active PRI span 2/0: Up, Active PRI span 3/0: Up, Active PRI span 4/0: Up, Active
Работает.
На все действо потрачено 40 минут времени, из них время недоступности сервиса — менее 5 минут (время на перезагрузку сервера).
Да, чуть не забыл.
Digium TE407P (на самом деле она ТЕ405Р с установленным модулем аппаратного эхоподавления), как и ряд других, умеет быть как Е1, так и Т1. Режим устанавливается с помощью перемычек непосредственно на плате (они подписаны). По умолчанию перемычки стоят в положении Т1, так что не забудьте переключить их в режим Е1.