Транскодинг (transcoding) на cisco as5350xm, blog

Чергова практичне завдання по реалізації транскодинг на AS5350xm.

А сама завдання з'явилася з мети економії коштів віддаються постачальникам послуг.

Існуюча схема послуг:

Постачальник А <—> Е1 <—> Орендований каналі Е1 у постачальника Б <—> Е1 <—> Cisco AS5350xm <—> VoIP (SIP, g711) <—> SIP SERVER <—> клієнти

Порахувавши витрати, було вирішено відмовитися від орендованого каналу Е1 постачальника Б. а послуги від постачальника А вирішено було отримувати по VoIP. Після того як питання було погоджено, постачальник А видав ТУ на підключення послуги, в зв'язку з чим нова схема повинна була стати такою:

Постачальник А <—> VoIP (H323, g729) <—> Cisco AS5350xm <—> VoIP (SIP, g711) <—> SIP SERVER <—> клієнти

Постачальник А <—> VoIP (H323, g729) <—> Cisco AS5350xm <—> Е1 (loop) <—> Cisco AS5350xm <—> VoIP (SIP, g711) <—> SIP SERVER <—> клієнти

Тобто приймаємо дзвінок від постачальника відправляємо його в Е1, «загортаємо» його назад і далі він «йде» в VoIP вже з необхідними нам параметрами. Відразу обмовлюся, що така схема працює при наявності двох вільних Е1 на вашому маршрутизаторі.

Для початку нам потрібно кабель з роз'ємами RJ-45 і следуюзщей «терморегулятори»:

На моєму маршрутизаторі були вільні порти 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: 0x9

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: 0x9

Далі налаштовуємо необхідні бенкети (відразу будуть вказані різні pattern напрямків, пояснення буде нижче):

Налаштування бенкетів для нашої «петлі»


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 Постачальника А


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