Использование 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 класса, транзитный коммутатор