Ключевые слова:cisco, voip, (найти похожие документы)
From: zaikini
Date: Mon, 25 Sep 2010 17:02:14 +0000 (UTC)
Subject: Транскодинг (transcoding) на Cisco AS5350xm
Оригинал: http://subnets.ru/blog/?p=1239
Очередная практическая задача по реализации транскодинга на AS5350xm.
Что такое транскодирование коротко можно прочитать здесь:
http://en.wikipedia.org/wiki/Transcode
А сама задача появилась из цели экономии средств отдаваемых поставщикам
услуг.
Существующая схема услуг:
Поставщик А <--> Е1 <--> Арендованный канале Е1 у поставщика Б <--> Е1 <-->
Cisco AS5350xm <--> VoIP (SIP, g711) <--> SIP SERVER <--> Клиенты
Посчитав затраты, было решено отказаться от арендованного канала Е1
поставщика Б, а услуги от поставщика А решено было получать по VoIP.
После того как вопрос был согласован, постащик А выдал ТУ на
подключение услуги, в связи с чем новая схема должна было стать такой:
Поставщик А <--> VoIP (H323, g729) <--> Cisco AS5350xm <--> VoIP (SIP, g711)
<--> SIP SERVER <--> Клиенты
Просмотрев сайт www.cisco.com, было обнаружено, что необходимое
транскодирование g729 <-> g711 можно реализовать без каких либо
проблем при наличии IOS версий выше 12.4(20)Т3, 12.4(22)YB и 15.0(1)М
(номера 13 и 14 для IOS компанией Cisco не используются, т.к. эти
числа считаются "не счастливыми>> в культурах разных стран). Но при
отсутствии оной пришлось реализовать следующую схему:
Поставщик А <--> VoIP (H323, g729) <--> Cisco AS5350xm <--> Е1 (loop) <-->
Cisco AS5350xm <--> VoIP (SIP, g711) <--> SIP SERVER <--> Клиенты
Т.е. принимаем звонок от поставщика отправляем его в Е1,
"заворачиваем" его обратно и далее он "уходит" в VoIP уже с
необходимыми нам параметрами. Сразу оговорюсь, что такая схема
работает при наличии двух свободных Е1 на вашем маршрутизаторе.
Для начала нам потребуется кабель с разъемами RJ-45 и следуюзщей
"распиновкой":
E1 --- E1
1 --- 4
2 --- 5
На моем маршрутизаторе были свободны порты E1 3/2 и 3/3. Соединяем
порты созданным кабелем и приступаем к настройкам.
Задаем параметры физических интерфейсов Е1:
!
controller E1 3/2
framing NO-CRC4
pri-group timeslots 1-31
!
controller E1 3/3
framing NO-CRC4
pri-group timeslots 1-31
Затем настройки D-каналов:
!
interface Serial3/2:15
no ip address
encapsulation hdlc
isdn switch-type primary-net5
isdn protocol-emulate network
isdn incoming-voice modem
!
interface Serial3/3:15
no ip address
encapsulation hdlc
isdn switch-type primary-net5
isdn incoming-voice modem
И проверяем состояние наших Е1:
#show controllers e1
...
E1 3/2 is up.
Applique type is Channelized E1 - balanced
No alarms detected.
alarm-trigger is not set
Version info of slot 3: HW: 519, PLD Rev: 6
Framer Version: 0 *9
...
E1 3/3 is up.
Applique type is Channelized E1 - balanced
No alarms detected.
alarm-trigger is not set
Version info of slot 3: HW: 519, PLD Rev: 6
Framer Version: 0 *9
Далее настраиваем необходимые пиры (сразу будут указаны различные
pattern направлений, объяснение будет ниже):
POTS:
Настройки пиров для нашей "петли"
...
!
dial-peer voice 3 pots
description ###INCOMING FROM OUR VoIP###
incoming called-number .
direct-inward-dial
port 3/2:D
no register e164
!
dial-peer voice 4 pots
description ###INCOMING FROM PROVIDER-A###
incoming called-number .
direct-inward-dial
port 3/3:D
no register e164
...
! -- этот пир "отправляет" звонки из нашей VoIP сети в loop
!
dial-peer voice 800 pots
description ###FROM OUR VoIP TO LOOP###
destination-pattern 011.T
progress_ind setup enable 3
progress_ind alert enable 8
port 3/2:D
! -- этот пир "отправляет" звонки из сети VoIP Поставщика А в loop
!
dial-peer voice 801 pots
description ###FROM PROVIDER-A TO LOOP###
destination-pattern 022.T
progress_ind setup enable 3
progress_ind alert enable 8
port 3/3:D
VoIP:
! -- этот пир "принимает и отправляет" звонки из сети/в сеть VoIP Поставщика А
!
dial-peer voice 888 voip
description ###VoIP PROVIDER A###
translation-profile incoming FROM-PROVIDER-A-TO-LOOP ! --- подставляем
необходимый префикс
destination-pattern 033.T
codec g729r8
session target ras ! --- наш шлюз регистрируется на гэйткипере постащика А
! --- (об этих настройках в другой статье)
incoming called-number 7...... ! --- для того чтобы звонок на наши номера
! --- прошел через этот пир и мы смогли подставить префикс
dtmf-relay h245-signal rtp-nte
fax-relay ecm disable
fax protocol t38 ls-redundancy 0 hs-redundancy 0 fallback none
no vad
! -- этот пир "принимает и отправляет" звонки из нашей сети/в наше сеть VoIP
!
dial-peer voice 700 voip
description ###OUR VOIP###
translation-profile incoming FROM-OUR-VoIP-TO-LOOP ! --- подставляем необходимый префикс
answer-address 4957...... ! --- необходимо для того чтобы звонки от наших абонентов прошли
! --- через этот пир и мы подставили необходимый префикс
destination-pattern 4957......
session protocol sipv2
session target sip-server
codec g711alaw
fax-relay ecm disable
fax protocol t38 ls-redundancy 0 hs-redundancy 0 fallback none
no vad
...
!
voice-port 3/3:D
translation-profile incoming FROM-LOOP-TO-PROVIDER-A ! --- подставляем необходимый префикс
disc_pi_off
input gain 3
echo-cancel coverage 32
cptone RU
music-threshold -45
bearer-cap Speech
Теперь собственно сама логика работы и ее реализация.
Входящие звонки со стороны Провайдера А мы принимаем и отправляем в
поток 3/3, со стороны нашей сети все входящие звонки мы отправляем в
поток 3/2.
При входящем звонке (направление звонка рассматриваем относительно
AS5350xm) со стороны Провайдера А к набираемому номеру нам необходимо
подставить префикс 022495, 022 - чтобы однозначно определить
необходимый нам поток 3/3, а 495 приходится подставлять из-за того,
что в нашей сети используются 10-ти значные АОНы, а провайдер присылает
звонки на 7-ми значные. Для однозначного определения входящего voip
пира для звонка со стороны провайдера в пире 888 voip используется
команда incoming called-number. Звонок уходит в порт 3/3 согласно пиру
801, 022 при этом отрежется и из потока 3/2 придет вызов на номер
4957...... который смаршрутизируется согласно пиру 700 voip.
При входящем звонке со стороны нашей сети подставляем префикс 011 для
отправки звонка в поток 3/2. Звонок уходит в порт 3/2 согласно пиру 800
pots. Чтобы однозначно определить входящий пир для нашей VoIP сети
используется команда answer-address в пире 700 voip. Далее этот звонок
"выходит" из 3/3 и для того, чтобы точно его отправить в сторону
Поставщика А мы подставляем префикс 033 (возможно это излишне, но мы
сразу предположим, что таких провайдеров может быть несколько) и звонок
будет смаршрутизирован согласно пиру 888 voip.
Правила трансляции:
voice translation-rule 2
rule 1 /^7495\.*/ /011/
rule 2 /^\.*/ /011/
!
voice translation-rule 3
rule 1 /^\.*/ /022495/
!
voice translation-rule 4
rule 1 /^\.*/ /033/
!
voice translation-profile FROM-PROVIDER-A-TO-LOOP
translate called 3
!
voice translation-profile FROM-OUR-VOIP-TO-LOOP
translate called 2
!
voice translation-profile FROM-LOOP-TO-PROVIDER-A
translate called 4