Asterisk и Cisco маршрутизатор в роли шлюза

Материал из Xgu.ru

Перейти к: навигация, поиск
Автор: Сергей Бондаренко

Содержание

[править] Cisco маршрутизатор как FXO и SIP шлюз

Cisco маршрутизатор может выступать в роли FXO и SIP шлюза для Asterisk.

Такая схема может быть полезна в следующих случаях:

  • Подключение к городской телефонной сети (PSTN) посредством аналоговых портов FXO (особенно применимо для факсимильной связи - Fax);
  • Резервирование линий телефонной связи;
  • Подключение к городским телефонным сетям (PSTN) посредством выделенного IP канала от провайдера IP телефонии (ITSP) что позволит получить гарантированный уровень качества обслуживания (QoS).

[править] Топология решения

Для функционирования в качестве телефонного шлюза Cisco маршрутизатор должен работать под управлением Cisco IOS с включёнными голосовыми функциями. Посмотреть подходящий IOS можно в Cisco Feature Navigator. В данной лабораторной среде использовался Cisco IOS C2800NM-ADVENTERPRISEK9_IVS-M Version 12.4(22)T.

Asterisk ciscogw.png

Алгоритм работы входящего звонка:

  1. Звонок с PSTN поступает на Cisco на один из номеров: 0444909999 (IP), 0444909991 (FXO);
  2. Cisco с помощью правил маршрутизации звонков (dial-peer) маршрутизирует звонок на автоответчик (IVR) Asterisk;
  3. Дальше звонок обрабатывается согласно звонкового плана настроенного на Asterisk;

Алгоритм работы исходящего звонка:

  1. Звонок с телефона зарегистрированного на Asterisk поступает на Cisco маршрутизатор;
  2. Cisco нормализует номер и маршрутизирует звонок в PSTN;

Выбор маршрута абонентами Asterisk:

Выбор маршрута абонентом осуществляется с помощью префикса. Абоненты Asterisk звонят через аналоговые линии FXO набирая префикс 9 перед номером телефона – 9ХХХХХХХХХХ. Для звонка через IP канал ITSP, абоненты набирают номер без префикса ХХХХХХХХХХ.

Fax может быть подключён к Asterisk через аналоговый адаптер, например Cisco ATA 186.

[править] Пример конфигурации Cisco маршрутизатора

Маршрутизатор также может содержать другие необходимые конфигурации функций Cisco IOS: Cisco IOS Firewall, ACL, BGP, OSPF, GRE, VPN и др.

   !Разрешить SIP сигнализацию между точками в VoIP сети
   voice service voip 
    allow-connections sip to sip
   ! Правило нормализации набраного номера DNIS (убираем префикс 9)
   voice translation-rule 1
     rule 1 /^9\(.+\)$/ /\1/
   
   ! Правило нормализации звонящих номеров ANI 
   ! (вместо локального номера 6XX подставляем городской номер 0444909999)
   voice translation-rule 3
     rule 1 /^.*$/ /0444909999/
   
   voice translation-profile over_fxo
     translate called 1
   
   voice translation-profile to_sip_itsp
     translate calling 3
   ! Настройка аналоговых FXO портов 0/3/0 и 0/3/1. 
   ! Направление всех входящих из PSTN звонков на внутренний номер 0444909991. 
   voice-port 0/3/0
     description from_fxo
     no battery-reversal
     cptone RU
     timeouts interdigit 2
     connection plar opx 0444909991
     description 0444909991
     caller-id enable
   
   voice-port 0/3/1
     description from_fxo
     no battery-reversal
     cptone RU
     timeouts interdigit 2
     connection plar opx 0444909991
     description 0444909991
     caller-id enable
   ! SIP транк - маршрут звонка на Asterisk. 
   ! Направление всех входящих звонков на номера 0444909991 и 0444909999. 
    dial-peer voice 1 voip
     description to_asterisk
     preference 2
     destination-pattern 044490999[19]
     session protocol sipv2
     session target ipv4:10.0.44.188:5060
     session transport udp
     dtmf-relay rtp-nte
     codec g711ulaw
     no vad
   ! Маршруты звонка на PSTN через FXO интерфейсы 0/3/0 и 0/3/1. 
   ! Нормализация исходящих DNIS – убираем префикс 9
    dial-peer voice 4909991 pots
     description to_fxo_pstn
     translation-profile outgoing over_fxo
     preference 7
     destination-pattern 9.T
     progress_ind disconnect enable 8
     port 0/3/0
   
   dial-peer voice 49099911 pots
     description to_fxo_pstn
     translation-profile outgoing over_fxo
     preference 7
     destination-pattern 9.T
     progress_ind disconnect enable 8
     port 0/3/1
   ! SIP транк - маршрут звонка на PSTN через ITSP. 
   ! Нормализация исходящих ANI – указываем наш городской номер 0444909999
   dial-peer voice 4909999 voip
     description to_gtelecom
     translation-profile outgoing to_sip_itsp
     preference 3
     destination-pattern [0-8].T
     session protocol sipv2
     session target ipv4:51.63.116.35:5061
     session transport udp
     incoming called-number 0444909999
     dtmf-relay rtp-nte
     codec g711ulaw
     no vad
   ! Регистрация Cisco шлюза на Asterisk
   sip-ua 
    authentication username ciscotestrouter password 7 password
    registrar ipv4:10.0.44.188 expires 65535
    sip-server ipv4:10.0.44.188

[править] Пример конфигурации Asterisk

sip.conf

   [general]
   context = incomming    ;контекст для входящих звонков
   allowoverlap = yes
   bindport = 5060
   bindaddr = 0.0.0.0
   udpbindaddr = 0.0.0.0
   tcpenable = yes
   tcpbindaddr = 0.0.0.0
   srvlookup = yes
   notifyhold = yes
   defaultexpiry = 3600
   
   [ciscotestrouter]		;SIP транк на Cisco маршрутизатор
   type=peer
   host=10.0.44.144
   context=isptelecom
   port=5060
   secret=password
   user=ciscotestrouter
   language=ru
   disallow=all
   allow=ulaw
   qualify=yes
   dtmfmode=rfc2833
   
   ;Внутренние телефоны
   [test-phones](!)
   context = vip
   type = friend
   host = dynamic
   language=ru 
   nat = yes
   canreinvite = no  
   qualify = yes
   dtmfmode = auto
   disallow = all
   allow = alaw
   allow = ulaw
   allow = h261
   allow = h263
   allow = h263p
   allow = h264
   subscribemwi = no
   subscribecontext = blf
   callgroup = 20
   pickupgroup = 20
   
   [650](test-phones)
   defaultuser=650
   secret= password
   user=650
   callerid="Sergey"  
   mailbox=650@default
   
   [651](test-phones)
   defaultuser=651
   secret= password
   user=651
   callerid="Fax"  

extensions.conf

   [IVR]
   ;IVR пилот
   exten => 691,1,Goto(menu,s,1)
   
   [menu]
   ;IVR меню
   exten => s,1,Background(01-Greeting)
   exten => s,n,Background(02-MainMenu)
   exten => s,n,WaitExten(10)
   exten => s,n,Goto(local,650,1)
   exten => s,n,Hangup
   exten => _6XX,1,Goto(local,${EXTEN},1)
  
   [local]
   ;Маршрут на локальные зарегистрированные на Asterisk IP телефоны 
   exten => _6XX,1,Dial(SIP/${EXTEN},,t,30,Ttm)
   exten => _6XX,n,Hangup()
  
   [national]
   ;Маршрут в PSTN через Cisco маршрутизатор
   exten => _9[0-8].,1,Dial(SIP/ciscotestrouter/${EXTEN},25) ;на FXO линии для Fax
   exten => _[0-8].,1,Dial(SIP/ciscotestrouter/${EXTEN},25) ;звонки через ITSP
  
   [incomming]
   ;Прием звонков транслируемых Cisco шлюзом из PSTN
   exten => _044490999[19],1,Goto(IVR,691,1)  
   
   ;Распределение прав для контекстов
   [itsptelecom]
   include => incomming
   
   [vip]
   include => IVR
   include => local
   include => national

[править] Полезные ссылки

Cisco IOS Voice Troubleshooting and Monitoring Guide