Использование Asterisk в качестве транзитной АТС IP-to-IP
Часто Asterisk используют как офисную или абонентскую IP АТС, коей она и задумывалась, но возможности АТС Asterisk легко позволяют использовать её как транзитную IP АТС, например, как центральный узел для обмена трафиком между абонентами находящимися на разных оконечных IP АТС.
Конечно, использование Asterisk в таком режиме не заменит большую транзитную АТС, также называемую софтсвитчем(softswitch) или программным коммутатором 4 класса, которые используют средние или крупные операторы связи. Но, например, пограничный контроллер сессий Cisco CUBE( Unified Border Element) Asterisk вполне способен заменить.
В статье приведён пример конфигурации Asterisk для для транзита трафика между тремя IP АСТ. Причём две из них находятся слева – западные офисы, одна справа – восточные офисы.
Графическая схема элементов и их связей представлена на изображении ниже.
Опишем схему. Требуется объединить корпоративные телефонные сети западных и восточных офисов.
Западные офисы представляют из себя две IP АТС:
1. Кластер Cisco Unified Communications Manager с IP основного publisher=10.10.1.1
и резервного subscriber=10.10.1.2, абонентской номерной ёмкостью 1XXX, где X – любая цифра от 0 до 9.
2. Сервер Avaya Communication Manager c IP=10.10.2.1 и абонентской номерной ёмкостью 2XXX, где X – любая цифра от 0 до 9. Протокол TCP используется как транспортный для SIP в Avaya.
Восточные офисы представляют из себя одну западную АТС Asterisk – кластер из двух серверов с IP-адресами основного узла 10.9.1.1 и 10.9.1.2. Абонентская номерная ёмкость 3XXX, где X – любая цифра от 0 до 9.
Необходимо, чтобы все абоненты запада и востока могли звонить друг другу. Естественно IP АТС могут быть любыми SIP-совместимыми системами, но в качестве примера я выбрал эти, потому что они реально работают в аналогичной конфигурации.
Так как CUCM и западный Asterisk представляют из себя кластеры с основным и резервным сервером, то необходимо настроить перемаршрутизацию на резервный сервер, в случае недоступности основного, а также принимать вызовы с резервных серверов.
Предполагается, что:
- На объединяемых IP АТС уже настроены правила маршрутизации и при наборе по соответствующим маскам вызовы будут маршрутизироваться на транзитный Asterisk.
- У вас уже установлен Asterisk, настроена сетевая машрутизация между всеми сетями где находятся IP АТС. Asterisk имеет два сетевых интерфейса eth0 и eth1 в двух разных сетях.
По большому счёту нам понадобится добавить код в два файла:
/etc/asterisk/sip.conf
– где мы опишем все SIP-транки между нашим транзитным Asterisk и абонентскими IP АТС.
/etc/asterisk/extensions.ael
– где настраивается маршрутизация между SIP-транками.
Начнём с sip.conf, добавим в него SIP-транки для соединения транзитного Asterisk c нашими западными и восточными IP АТС.
;Cisco UCM Publisher, абоненты с номерами 1XXX [CUCM-1] type=friend context=WEST-IN host=10.10.1.1 insecure=port dtmfmode = auto disallow=all allow=alaw allow=ulaw nat=no canreinvite=yes ;Cisco UCM Subscriber, абоненты с номерами 1XXX [CUCM-2] type=friend context=WEST-IN host=10.10.1.2 insecure=port dtmfmode = auto disallow=all allow=alaw allow=ulaw nat=no canreinvite=yes ;Avaya Communicaton Manager, абоненты с номерами 2XXX [ACUM] type=friend context=WEST-IN host=10.10.2.1 insecure=port dtmfmode = auto disallow=all allow=alaw allow=ulaw nat=no transport=tcp ; Используем протокол TCP для SIP canreinvite=yes ; East Asterisk основной, абоненты с номерами 3XXX [ASTERISK-1] type=friend context=EAST-IN host=10.9.1.1 insecure=port dtmfmode = auto disallow=all allow=alaw allow=ulaw nat=no canreinvite=yes ; East Asterisk резервный, абоненты с номерами 3XXX [ASTERISK-2] type=friend context=EAST-IN host=10.9.1.2 insecure=port dtmfmode = auto disallow=all allow=alaw allow=ulaw nat=no canreinvite=yes
Каждый SIP-транк имеет тип friend и используется как для входящей так и для исходящей связи.
Для компактности используем синтаксис ael, добавим контексты с правилами маршрутизации для запада и востока в файл extensions.ael:
context WEST-IN {
//Контекст для маршрутизации вызовов с Запада на Восток
_3XXX => { // Вызов на кластер ASTERISK-EAST
// Set(CALLERID(num)=01${CALLERID(num)})
//Пример, если нужно подставить префикс
Verbose(!!! Call from WEST to EAST);
Verbose(from ID ${CALLERID(num)} and NAME ${CALLERID(name)} );
Verbose( --called-number-> ${EXTEN} !!!);
Dial(SIP/${EXTEN}@ASTERISK-EAST-1,,tT);
Verbose(${DIALSTATUS}); // Проверяем статус дозвона
switch(${DIALSTATUS}) {
case BUSY:
Hangup;
case ANSWER:
Hangup;
case NOANSWER:
Hangup;
default:
Dial(SIP/${EXTEN}@ASTERISK-EAST-2,,tT);
// Перемашрутизация на резервный узел в
// случае "ненормального" отбоя
Hangup;
};
};
};
context EAST-IN {
//Контекст для маршрутизации вызовов с Востока на Запад
_1XXX => { // Вызов на кластер Cisco UCM
Verbose(!!! Call from EAST to CUCM WEST);
Verbose(from ID ${CALLERID(num)} and NAME ${CALLERID(name)} );
Verbose( --called-number-> ${EXTEN} !!!);
// Dial(SIP/${EXTEN:2}@CUCM-1,,tT);
// Пример, удаляем первые 2 цифры
Dial(SIP/${EXTEN}@CUCM-1,,tT);
NoOp(${DIALSTATUS}); // Проверяем статус дозвона
switch(${DIALSTATUS}) {
case BUSY:
Hangup;
case ANSWER:
Hangup;
case NOANSWER:
Hangup;
default:
// Dial(SIP/${EXTEN:2}@CUCM-2,,tT);
// Пример: отрезаем первые 2 цифры
Dial(SIP/${EXTEN}@CUCM-2,,tT);
// Перемашрутизация на резервный узел в
// случае "ненормального" отбоя
Hangup;
};
};
_2XXX => { // Вызов на Avaya Communication Manager
Verbose(!!! Call from EAST to Avaya WEST);
Verbose(from ID ${CALLERID(num)} and NAME ${CALLERID(name)} );
Verbose( --called-number-> ${EXTEN} !!!);
Dial(SIP/${EXTEN}@ACUM);
Hangup();
};
};
Как видно из примера с комментариями, dialplan достаточно простой.
После добавления кода в файлы sip.conf и extensions.ael не забудьте выполнить из консоли asterisk команды для применения конфигурации:
sip reload ael reload
Для отладки вызовов можно использовать команду originate. Например, имитировать вызов сначала на CUCM, а потом как входящее плечо из контекста EAST-IN на номер 1001 CUCM, во втором случае на номер 2000 Avaya Communication Manager:
originate SIP/1000@10.10.1.1 extension 1001@EAST-IN originate SIP/1000@10.10.1.1 extension 2001@EAST-IN
Похожие материалы:
Tags: Asterisk, Cisco Unified Communications Manager, IP-телефония, softswith class 4, программный коммутатор 4 класса, транзитный коммутатор
