ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Метки статьи: ‘Железо VoIP’

Добро пожаловать в блог! Надеемся, что Вы еще вернетесь.

Не так давно поставили очень удобный gsm-voip шлюз на 2 sim и 2 fxo  addpac GS1002 для работы в связке с Asterisk.

До этого работал addpac AP1100F для оцифровки входящих аналоговых линий, они работают под одной OS, так что конфиг похожий на AP1100f:

GS1002# show running-config

# навесим IP на wan:
interface FastEthernet0/0
ip address 10.100.0.248 255.255.255.0
!
! VoIP configuration.
!
!
! Voice service voip configuration.
!
voice service voip
protocol sip
dtmf-relay out-of-band
fax protocol t38 redundancy 0
fax rate 9600
h323 call start fast
h323 call tunnel enable
no call-barring unconfigured-ip-address
no voip-inbound-call-barring enable
!
!
! Voice port configuration.

# тут вешаем на какой номер отправлять входящие звонки на астериск
! GSM
voice-port 0/0
connection plar 377737708
ring number 10
ring detect-timeout 100
ring detect-timer 900
no announcement
no caller-id enable
!
!
! GSM
voice-port 0/1
connection plar 377737709
ring number 10
ring detect-timeout 100
ring detect-timer 900
no announcement
no caller-id enable
!
# fxo порты не исользуем, если надо по образцу выше
! FXO
voice-port 0/2
no caller-id enable
!
!
! FXO
voice-port 0/3
no caller-id enable
!
 # заведем dial-peer destination-pattern по кол портов:
!
dial-peer voice 0 pots
destination-pattern T
port 0/0

!
dial-peer voice 1 pots
destination-pattern T
port 0/1
!
!

# заведем sip cервер с destination-pattern
! Voip peer configuration.
!
dial-peer voice 300 voip
destination-pattern T
# IP sip серевера, куда кидаем входящие звонки

session target ip 10.100.0.1 session protocol sip voice-class codec 1 no vad dtmf-relay info fax protocol t38 redundancy 0 fax rate 9600 ! ! ! ! ! # выставим 711alaw кодек приоритетным ! Codec classes configuration. ! voice class codec 1 codec preference 1 g711alaw ! ! ! ! SIP UA configuration. ! sip-ua user-register sip-server 10.100.0.1 register e164
На аддпаке всё, если есть нюансы можно смотреть дебаг:

GS1002# debug voip call

GS1002# terminal monitor

 

На Астериске:

В  дефаулт секции в  extensions.conf укажем default контекст:

[general]
context=INBOUND

в конексте INBOUND обработаем входящие вызовы с шлюза

[INBOUND]

exten => 377737708,1,Goto(INBOUND,3777377,1)
exten => 377737709,1,Goto(INBOUND,3777377,1)

Для исходящих вызовов в конексте исходящих звонков в  extensions.conf просто кидаем вызов на IP шлюза 10.100.0.248:

exten => _XXXXXXXXXX,1,Dial(SIP/${EXTEN}@10.100.0.248,90,r)

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Пожалуйста, уважайте чужой труд.

Автор: stalex

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 5, среднее: 4,40 из 5)
Загрузка...
Отправить на почту Отправить на почту

В продолжении статьи Настройка Cisco AS5350 в качестве VoIP-шлюза.

Имеем:

  • Cisco AS5350 (VoIP-шлюз)
  • Сервер FreeBSD с установленным freeradius

Прикручиваем RADIUS к AS5350 для сохранения информации о совершаемых VoIP-звонках. log voip calls, log ip voip calls

Основная задача это обеспечение возможности однозначного сопоставления IP-шной и TDM-ной частей (legs) VoIP-звонка, а также логирование IP-адресов, с которых производятся звонки через наш VoIP-шлюз, что по умолчанию не делается.

Я не буду подробно на этом останавливаться и просто приведу настройки Cisco в части акаутинга и radius:

aaa new-model
aaa authorization exec h323 group radius local
aaa authorization exec sip group radius local
aaa authorization network default group radius local
aaa authorization network h323 group radius local
aaa accounting delay-start
aaa accounting exec default start-stop group radius
aaa accounting exec h323 start-stop group radius
aaa accounting exec sip start-stop group radius
aaa accounting network default start-stop group radius
aaa accounting network h323 start-stop group radius
aaa accounting network sip start-stop group radius
aaa accounting connection h323 start-stop group radius
aaa accounting connection sip start-stop group radius
aaa nas port extended
aaa session-id common
gw-accounting aaa

ip radius source-interface FastEthernet0/0
radius-server host 1.1.1.2 auth-port 1812 acct-port 1813
radius-server timeout 30
radius-server key 7 10491D54261E210823493A2A373B
radius-server vsa send accounting

Обратите внимание на команду на VoIP-шлюзе Cisco:

radius-server vsa send accounting

Благодаря ей VoIP-шлюз будет передавать нужные нам атрибуты, определенные производителем (так называемые Vendor-Specific Attributes), а именно:

  • h323-incoming-conf-id — ID звонка
  • h323-remote-address — IP, с которого/на который был звонок
  • iphop — этот атрибут заполняется при исходящих из IP-сетей звонках количеством хопов до IP-адреса звонящего и их IP-адресами.

Увидеть что Cisco отдает Radius`у можно выполнив в её консоли команды:

terminal monitor
debug radius

Вот пример вывода:

RADIUS(000B0086): Send Accounting-Request to 1.1.1.2:1813 id 1646/229, len 1084
RADIUS:  authenticator 44 55 FD 7F DC D2 19 C3 - 3D 1B D2 B1 82 E6 C4 52
RADIUS:  Acct-Session-Id     [44]  10  "001069EA"
RADIUS:  Calling-Station-Id  [31]  9   "3332211"
RADIUS:  Called-Station-Id   [30]  13  "89259998877"
RADIUS:  Vendor, Cisco       [26]  66
RADIUS:   Cisco AVpair       [1]   60  "call-id=93FA01A7-1FD111E0-B101EAE7-244362EB@1.1.1.194"
RADIUS:  Vendor, Cisco       [26]  21
RADIUS:   Cisco AVpair       [1]   15  "iphop=count:1"
RADIUS:  Vendor, Cisco       [26]  33
RADIUS:   Cisco AVpair       [1]   27  "iphop=hop1:1.1.1.194"
RADIUS:  Vendor, Cisco       [26]  56
RADIUS:   h323-setup-time    [25]  50  "h323-setup-time=14:29:41.703 MSK Sat Jan 15 2011"
RADIUS:  Vendor, Cisco       [26]  28
RADIUS:   h323-gw-id         [33]  22  "h323-gw-id=as5350."
RADIUS:  Vendor, Cisco       [26]  56
RADIUS:   Conf-Id            [24]  50  "h323-conf-id=93F51D6D 1FD111E0 99AD0014 F26ABCA0"
RADIUS:  Vendor, Cisco       [26]  31
RADIUS:   h323-call-origin   [26]  25  "h323-call-origin=answer"
RADIUS:  Vendor, Cisco       [26]  27
RADIUS:   h323-call-type     [27]  21  "h323-call-type=VoIP"
RADIUS:  Vendor, Cisco       [26]  65
RADIUS:   Cisco AVpair       [1]   59  "h323-incoming-conf-id=93F51D6D 1FD111E0 99AD0014 F26ABCA0"
RADIUS:  Vendor, Cisco       [26]  26
RADIUS:   Cisco AVpair       [1]   20  "subscriber=Unknown"
RADIUS:  Vendor, Cisco       [26]  30
RADIUS:   Cisco AVpair       [1]   24  "session-protocol=sipv2"
RADIUS:  Vendor, Cisco       [26]  44
RADIUS:   Cisco AVpair       [1]   38  "gw-rxd-cdn=ton:0,npi:0,#:89259998877"
RADIUS:  Vendor, Cisco       [26]  148
RADIUS:   Cisco AVpair       [1]   142 "feature-vsa=fn:TWC,ft:01/15/2011 14:29:41.703,cgn:3803234,cdn:89259998877,frs:0,fid:730309,fcid:93F51D6D1FD111E099AD0014F26ABCA0,legID:B3920"
RADIUS:  Vendor, Cisco       [26]  58
RADIUS:   h323-connect-time  [28]  52  "h323-connect-time=14:29:52.352 MSK Sat Jan 15 2011"
RADIUS:  Acct-Input-Octets   [42]  6   144960
RADIUS:  Acct-Output-Octets  [43]  6   167360
RADIUS:  Acct-Input-Packets  [47]  6   906
RADIUS:  Acct-Output-Packets [48]  6   1046
RADIUS:  Acct-Session-Time   [46]  6   18
RADIUS:  Vendor, Cisco       [26]  61
RADIUS:   h323-disconnect-tim[29]  55  "h323-disconnect-time=14:30:10.517 MSK Sat Jan 15 2011"
RADIUS:  Vendor, Cisco       [26]  32
RADIUS:   h323-disconnect-cau[30]  26  "h323-disconnect-cause=10"
RADIUS:  Vendor, Cisco       [26]  42
RADIUS:   h323-remote-address[23]  36  "h323-remote-address=1.1.1.194"
RADIUS:  Vendor, Cisco       [26]  24
RADIUS:   Cisco AVpair       [1]   18  "release-source=3"
RADIUS:  Vendor, Cisco       [26]  28
RADIUS:   h323-voice-quality [31]  22  "h323-voice-quality=0"
RADIUS:  Vendor, Cisco       [26]  43
RADIUS:   Cisco AVpair       [1]   37  "remote-media-address=1.1.1.194"
RADIUS:  Vendor, Cisco       [26]  50
RADIUS:   Cisco AVpair       [1]   44  "gw-rxd-cgn=ton:0,npi:0,pi:0,si:0,#:3332211"
RADIUS:  User-Name           [1]   9   "3332211"
RADIUS:  Acct-Status-Type    [40]  6   Stop                      [2]
RADIUS:  Service-Type        [6]   6   Login                     [1]
RADIUS:  NAS-IP-Address      [4]   6   1.1.1.3
RADIUS:  Acct-Delay-Time     [41]  6   0
RADIUS: Received from id 1646/229 1.1.1.2:1813, Accounting-response, len 20

Что ж, для решения основной поставленной перед нами задачи достаточно выполнить следующее:
в /usr/local/etc/raddb/radiusd.conf в секции preprocess указать, что нам нужно преобразовывать VSA :

preprocess {
       with_cisco_vsa_hack = yes
}

Radius разбирает Vendor-Specific Attributes благодаря словарям, которые расположены в папке /usr/local/share/freeradius, в частности файл-словарь по cisco.

dictionary.cisco:

VENDOR          Cisco                           9

#
#       Standard attribute
#
BEGIN-VENDOR    Cisco

ATTRIBUTE       Cisco-AVPair                            1       string
ATTRIBUTE       Cisco-NAS-Port                          2       string

#
#  T.37 Store-and-Forward attributes.
#
ATTRIBUTE       Cisco-Fax-Account-Id-Origin             3       string
ATTRIBUTE       Cisco-Fax-Msg-Id                        4       string
ATTRIBUTE       Cisco-Fax-Pages                         5       string
ATTRIBUTE       Cisco-Fax-Coverpage-Flag                6       string
ATTRIBUTE       Cisco-Fax-Modem-Time                    7       string
ATTRIBUTE       Cisco-Fax-Connect-Speed                 8       string
ATTRIBUTE       Cisco-Fax-Recipient-Count               9       string
ATTRIBUTE       Cisco-Fax-Process-Abort-Flag            10      string
ATTRIBUTE       Cisco-Fax-Dsn-Address                   11      string
ATTRIBUTE       Cisco-Fax-Dsn-Flag                      12      string
ATTRIBUTE       Cisco-Fax-Mdn-Address                   13      string
ATTRIBUTE       Cisco-Fax-Mdn-Flag                      14      string
ATTRIBUTE       Cisco-Fax-Auth-Status                   15      string
ATTRIBUTE       Cisco-Email-Server-Address              16      string
ATTRIBUTE       Cisco-Email-Server-Ack-Flag             17      string
ATTRIBUTE       Cisco-Gateway-Id                        18      string
ATTRIBUTE       Cisco-Call-Type                         19      string
ATTRIBUTE       Cisco-Port-Used                         20      string
ATTRIBUTE       Cisco-Abort-Cause                       21      string

#
#  Voice over IP attributes.
#
ATTRIBUTE       h323-remote-address                     23      string
ATTRIBUTE       h323-conf-id                            24      string
ATTRIBUTE       h323-setup-time                         25      string
ATTRIBUTE       h323-call-origin                        26      string
ATTRIBUTE       h323-call-type                          27      string
ATTRIBUTE       h323-connect-time                       28      string
ATTRIBUTE       h323-disconnect-time                    29      string
ATTRIBUTE       h323-disconnect-cause                   30      string
ATTRIBUTE       h323-voice-quality                      31      string
ATTRIBUTE       h323-gw-id                              33      string
ATTRIBUTE       h323-incoming-conf-id                   35      string

ATTRIBUTE       h323-credit-amount                      101     string
ATTRIBUTE       h323-credit-time                        102     string
ATTRIBUTE       h323-return-code                        103     string
ATTRIBUTE       h323-prompt-id                          104     string
ATTRIBUTE       h323-time-and-day                       105     string
ATTRIBUTE       h323-redirect-number                    106     string
ATTRIBUTE       h323-preferred-lang                     107     string
ATTRIBUTE       h323-redirect-ip-address                108     string
ATTRIBUTE       h323-billing-model                      109     string
ATTRIBUTE       h323-currency                           110     string
ATTRIBUTE       subscriber                              111     string
ATTRIBUTE       gw-rxd-cdn                              112     string
ATTRIBUTE       gw-final-xlated-cdn                     113     string
ATTRIBUTE       remote-media-address                    114     string
ATTRIBUTE       release-source                          115     string
ATTRIBUTE       gw-rxd-cgn                              116     string
ATTRIBUTE       gw-final-xlated-cgn                     117     string
ATTRIBUTE       iphop                                   118     string

# SIP Attributes
ATTRIBUTE       call-id                                 141     string
ATTRIBUTE       session-protocol                        142     string
ATTRIBUTE       method                                  143     string
ATTRIBUTE       prev-hop-via                            144     string
ATTRIBUTE       prev-hop-ip                             145     string
ATTRIBUTE       incoming-req-uri                        146     string
ATTRIBUTE       outgoing-req-uri                        147     string
ATTRIBUTE       next-hop-ip                             148     string
ATTRIBUTE       next-hop-dn                             149     string
ATTRIBUTE       sip-hdr                                 150     string

#
#       Extra attributes sent by the Cisco, if you configure
#       "radius-server vsa accounting" (requires IOS11.2+).
#
ATTRIBUTE       Cisco-Multilink-ID                      187     integer
ATTRIBUTE       Cisco-Num-In-Multilink                  188     integer
ATTRIBUTE       Cisco-Pre-Input-Octets                  190     integer
ATTRIBUTE       Cisco-Pre-Output-Octets                 191     integer
ATTRIBUTE       Cisco-Pre-Input-Packets                 192     integer
ATTRIBUTE       Cisco-Pre-Output-Packets                193     integer
ATTRIBUTE       Cisco-Maximum-Time                      194     integer
ATTRIBUTE       Cisco-Disconnect-Cause                  195     integer
ATTRIBUTE       Cisco-Data-Rate                         197     integer
ATTRIBUTE       Cisco-PreSession-Time                   198     integer
ATTRIBUTE       Cisco-PW-Lifetime                       208     integer
ATTRIBUTE       Cisco-IP-Direct                         209     integer
ATTRIBUTE       Cisco-PPP-VJ-Slot-Comp                  210     integer
ATTRIBUTE       Cisco-PPP-Async-Map                     212     integer
ATTRIBUTE       Cisco-IP-Pool-Definition                217     string
ATTRIBUTE       Cisco-Assign-IP-Pool                    218     integer
ATTRIBUTE       Cisco-Route-IP                          228     integer
ATTRIBUTE       Cisco-Link-Compression                  233     integer
ATTRIBUTE       Cisco-Target-Util                       234     integer
ATTRIBUTE       Cisco-Maximum-Channels                  235     integer
ATTRIBUTE       Cisco-Data-Filter                       242     integer
ATTRIBUTE       Cisco-Call-Filter                       243     integer
ATTRIBUTE       Cisco-Idle-Limit                        244     integer
ATTRIBUTE       Cisco-Account-Info                      250     string
ATTRIBUTE       Cisco-Service-Info                      251     string
ATTRIBUTE       Cisco-Command-Code                      252     string
ATTRIBUTE       Cisco-Control-Info                      253     string
ATTRIBUTE       Cisco-Xmit-Rate                         255     integer

VALUE   Cisco-Disconnect-Cause          Unknown                 2
VALUE   Cisco-Disconnect-Cause          CLID-Authentication-Failure 4
VALUE   Cisco-Disconnect-Cause          No-Carrier              10
VALUE   Cisco-Disconnect-Cause          Lost-Carrier            11
VALUE   Cisco-Disconnect-Cause          No-Detected-Result-Codes 12
VALUE   Cisco-Disconnect-Cause          User-Ends-Session       20
VALUE   Cisco-Disconnect-Cause          Idle-Timeout            21
VALUE   Cisco-Disconnect-Cause          Exit-Telnet-Session     22
VALUE   Cisco-Disconnect-Cause          No-Remote-IP-Addr       23
VALUE   Cisco-Disconnect-Cause          Exit-Raw-TCP            24
VALUE   Cisco-Disconnect-Cause          Password-Fail           25
VALUE   Cisco-Disconnect-Cause          Raw-TCP-Disabled        26
VALUE   Cisco-Disconnect-Cause          Control-C-Detected      27
VALUE   Cisco-Disconnect-Cause          EXEC-Program-Destroyed  28
VALUE   Cisco-Disconnect-Cause          Timeout-PPP-LCP         40
VALUE   Cisco-Disconnect-Cause          Failed-PPP-LCP-Negotiation 41
VALUE   Cisco-Disconnect-Cause          Failed-PPP-PAP-Auth-Fail 42
VALUE   Cisco-Disconnect-Cause          Failed-PPP-CHAP-Auth    43
VALUE   Cisco-Disconnect-Cause          Failed-PPP-Remote-Auth  44
VALUE   Cisco-Disconnect-Cause          PPP-Remote-Terminate    45
VALUE   Cisco-Disconnect-Cause          PPP-Closed-Event        46
VALUE   Cisco-Disconnect-Cause          Session-Timeout         100
VALUE   Cisco-Disconnect-Cause          Session-Failed-Security 101
VALUE   Cisco-Disconnect-Cause          Session-End-Callback    102
VALUE   Cisco-Disconnect-Cause          Invalid-Protocol        120

END-VENDOR      Cisco

Далее, будем формировать уникальный ID звнока в виде MD5 хэша на основании атрибута h323-incoming-conf-id:

acct_unique {
       key = "h323-incoming-conf-id"
}

Однозначние сопоставление IP-шной и TDM-ной частей (legs) VoIP-звонка возможно по полю AcctUniqueId таблицы radacct — оно будет у них одинаковым.

Далее, указываем, что перед аккаунтингом следует данные преобразовать (с использованием словарей):

preacct {
     preprocess
     acct_unique
}

Теперь в /usr/local/etc/raddb/sql.conf мы можем использовать полученные нами данные, которые содержатся в переменных, которые, в свою очередь, определяются в словаре (/usr/local/share/freeradius/dictionary.cisco):

%{h323-remote-address} — в этой переменной содержится IP, с которого/на который был звонок.

Все бы хорошо, но у атрибута iphop есть одна тонкость — он может содержать множественные значения, например:

iphop=count:2
iphop=hop1:192.168.68.4
iphop=hop2:10.10.255.7

и если в sql.conf использовать переменную %{iphop}, то в нее будет попадать только первая строка iphop=count.

Это решаемая проблема. Если атрибут содержит множественные значения, то к ним возможно обращаться как к массиву.

В нашем примере:

  • %{iphop[0]} — будет содержать значение «count:2»
  • %{iphop[1]} — будет содержаться «hop1:192.168.68.4»
  • %{iphop[2]} — будет «iphop=hop2:10.10.255.7»

Добавив в таблицу radacct поля:

  • remote-address
  • hopcount
  • hop1
  • hop2

можно добавить их в SQL запрос в sql.conf:

accounting_stop_query = "UPDATE ${acct_table2} SET AcctStopTime = '%S', \
AcctSessionTime = '%{Acct-Session-Time}', \
AcctInputOctets = '%{Acct-Input-Octets}', \
AcctOutputOctets = '%{Acct-Output-Octets}', \
AcctTerminateCause = '%{h323-disconnect-cause}', \
AcctStopDelay = '%{Acct-Delay-Time}', \
ConnectInfo_stop ='%{Connect-Info}', \
`remote-address`='%{h323-remote-address}', \
`hopcount`='%{iphop[0]}', \
`hop1`='%{iphop[1]}', \
`hop2`='%{iphop[2]}' \
WHERE AcctSessionId = '%{Acct-Session-Id}' \
AND UserName = '%{SQL-User-Name}' \
AND NASIPAddress = '%{NAS-IP-Address}'"

По итогу таблица radacct выглядит так:

CREATE TABLE IF NOT EXISTS `radacct` (
  `RadAcctId` bigint(21) NOT NULL auto_increment,
  `AcctSessionId` varchar(32) NOT NULL default '',
  `AcctUniqueId` varchar(32) NOT NULL default '',
  `UserName` varchar(64) NOT NULL default '',
  `Realm` varchar(64) default '',
  `NASIPAddress` varchar(15) NOT NULL default '',
  `NASPortId` varchar(15) default NULL,
  `NASPortType` varchar(32) default NULL,
  `AcctStartTime` datetime NOT NULL default '0000-00-00 00:00:00',
  `AcctStopTime` datetime NOT NULL default '0000-00-00 00:00:00',
  `AcctSessionTime` int(12) default NULL,
  `AcctAuthentic` varchar(32) default NULL,
  `ConnectInfo_start` varchar(50) default NULL,
  `ConnectInfo_stop` varchar(50) default NULL,
  `AcctInputOctets` bigint(12) default NULL,
  `AcctOutputOctets` bigint(12) default NULL,
  `CalledStationId` varchar(50) NOT NULL default '',
  `CallingStationId` varchar(50) NOT NULL default '',
  `AcctTerminateCause` varchar(32) NOT NULL default '',
  `ServiceType` varchar(32) default NULL,
  `FramedProtocol` varchar(32) default NULL,
  `FramedIPAddress` varchar(15) NOT NULL default '',
  `AcctStartDelay` int(12) default NULL,
  `AcctStopDelay` int(12) default NULL,
  `proc` smallint(1) NOT NULL default '0',
  `remote-address` varchar(15) NOT NULL default '',
  `hopcount` varchar(16) default NULL,
  `hop1` varchar(20) default NULL,
  `hop2` varchar(20) default NULL,
  PRIMARY KEY  (`RadAcctId`),
  KEY `UserName` (`UserName`),
  KEY `FramedIPAddress` (`FramedIPAddress`),
  KEY `AcctSessionId` (`AcctSessionId`),
  KEY `AcctUniqueId` (`AcctUniqueId`),
  KEY `AcctStartTime` (`AcctStartTime`),
  KEY `AcctStopTime` (`AcctStopTime`),
  KEY `NASIPAddress` (`NASIPAddress`),
  KEY `import` (`NASPortType`,`AcctSessionTime`,`AcctStartTime`),
  KEY `proc` (`NASPortType`,`proc`,`AcctSessionTime`)
) TYPE=MyISAM;

Таким образом мы получаем, что в sql складывается информация о совершенных VoIP звонках и с каких IP-адресов они совершены.

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Пожалуйста, уважайте чужой труд.

Автор: Панфилов Алексей (lehis (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 3, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Всем привет!

Очередная практическая задача по реализации транскодинга на 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: 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 направлений, объяснение будет ниже):

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

На этом все, если, кому-то будет это полезным, буду рад. Жду Ваших комментариев и замечаний. Всех благ)

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Пожалуйста, уважайте чужой труд.

Автор:  zaikini

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 8, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Перед нами стояла задача реализовать на Addpac (например: Addpac AP200B или Addpac 1100B)  следующие функции:

  1. Звонков между портами.
  2. Перехвата и перевода звонков.
  3. Блокировка 8-ки ( номеров начинающихся с 8 ) на одном из портов.
  4. Выход в город.

Рассмотрим реализацию задач.

Немного теории:

FXS (Foreign Exchange Station или Subscriber) — голосовой интерфейс, эмулирующий расширение интерфейса PBX, для подключения обычного телефона.
Аббревиатура FXS применима к любому оборудованию, которое, с точки зрения телефона, является АТС.

Для порядка в нашем IT хозяйстве подписываем нужные нам FXS порты (в которые подключены телефонные аппараты):

! FXS
voice-port 0/0
description Panasonic-DECT#999

! FXS
voice-port 0/1
description Red-Phone#555

Создаем dial-peer’ы, принимающие звонки на внутренние номера 999 и 555,

dial-peer voice 10 pots
destination-pattern 999F
port 0/0

!
dial-peer voice 11 pots
destination-pattern 555F
port 0/1

Создаем dial-peer’ы, принимающие звонки на выданный нам по VoIP нашим оператором городской телефонный номер (например, 1234567):

dial-peer voice 5 pots
destination-pattern 1234567F
port 0/0

!
dial-peer voice 6 pots
destination-pattern 1234567F
port 0/1
preference 1

Далее, прописываем в режиме глобального конфигурирования:

dial-peer call-pickup 11
dial-peer call-hold h
dial-peer call-transfer h

Теперь для перехвата звонка надо будет нажать 11,  для перевода звонка — короткий отбой или флеш и телефонный номер.

Реализуем функцию блокировки 8:

dial-peer voice 20 voip
description Block_out_8*
destination-pattern 8T
huntstop
out-barred-group 1

Создаем группу 1, в которой будет прописан номер (например, 999), с которого запрещен набор 8-ки:

dialpattern-group 1
pattern 1 999F

И в конце разрешаем исходящие звонки в ТфОП через шлюз (в примере это IP-адрес 192.168.57.23) нашего VoIP провайдера:

dial-peer voice 30 voip
description out_calls
destination-pattern .T
session target 192.168.57.23
session protocol sip
codec g729
dtmf-relay rtp-2833
no vad

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: neona

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 3, среднее: 4,33 из 5)
Загрузка...
Отправить на почту Отправить на почту

Данная статья описывает решение определенной задачи.

Схема:

Два поставщика услуг классической телефонии.

Один (Оператор 1) предоставляет номера в 4 потоках Е1.

Второй (Оператор 2) пока через 1 поток Е1, но в дальнейшем предусматривается увеличение потоков от Оператора 2.

Все потоки подключены к Cisco AS5350xm.

Задача:

Исходя из коммерческих соображений необходимо все местные вызовы направлять на Оператора 1, причем потоки Оператора 1 должны заниматься последовательно начиная с первого, а все МГ/МН вызовы отправляем Оператору 2.

Решение:

Для решения этой задачи объединяем потоки от различных операторов в разные транкгруппы, причем в одной транкгруппе настраиваем алгоритм выбора потока.

Создаем транкгруппы, первая:

!
trunk group 88
description ###Operator 1###

настраиваем алгоритм выбора потока внутри транкгруппы:
hunt-scheme sequential both

вторая транкгруппа:
!
trunk group 888
description ###Operator 2###

Объединяем потоки в соответствующие транкгруппы:
!
interface Serial3/0:15
description ### Operator 1 1E1 ###
no ip address
encapsulation hdlc

указываем номер транкгруппы и приоритет, чем ниже номер тем выше приоритет, по аналогии с preference в dial-peer:
trunk-group 88 1
isdn switch-type primary-net5
isdn overlap-receiving
isdn incoming-voice modem
isdn guard-timer 3000
isdn map address .* plan isdn type unknown
fair-queue 64 256 0
no cdp enable

!
interface Serial3/1:15
description ### Operator 1 2E1 ###
no ip address
encapsulation hdlc

указываем номер транкгруппы и приоритет, чем ниже номер тем выше приоритет, по аналогии с preference в dial-peer:
trunk-group 88 2
isdn switch-type primary-net5
isdn overlap-receiving
isdn incoming-voice modem
isdn guard-timer 3000
isdn map address .* plan isdn type unknown
fair-queue 64 256 0
no cdp enable

!
interface Serial3/2:15
description ### Operator 1 3E1 ###
no ip address
encapsulation hdlc

указываем номер транкгруппы и приоритет, чем ниже номер тем выше приоритет, по аналогии с preference в dial-peer:
trunk-group 88 3
isdn switch-type primary-net5
isdn overlap-receiving
isdn incoming-voice modem
isdn guard-timer 3000
isdn map address .* plan isdn type unknown
fair-queue 64 256 0
no cdp enable

!
interface Serial3/3:15
description ### Operator 1 4E1 ###
no ip address
encapsulation hdlc

указываем номер транкгруппы и приоритет, чем ниже номер тем выше приоритет, по аналогии с preference в dial-peer:
trunk-group 88 4
isdn switch-type primary-net5
isdn overlap-receiving
isdn incoming-voice modem
isdn guard-timer 3000
isdn map address .* plan isdn type unknown
fair-queue 64 256 0
no cdp enable

!
interface Serial3/4:15
description ### Operator 2 ###
no ip address
encapsulation hdlc

снова указываем номер транкгруппы:
trunk-group 888
isdn switch-type primary-net5
isdn overlap-receiving
isdn incoming-voice modem
isdn guard-timer 3000
isdn map address .* plan isdn type unknown
fair-queue 64 256 0
no cdp enable

Проверить правильность настроек можно командой:

sh trunk group 88

Trunk group: 88
Description: ### Operator 1 ###
trunk group label: 88

Translation profile (Incoming):
Translation profile (Outgoing):

Hunt Scheme is sequential both
Max Calls (Incoming):   NOT-SET (Any)   NOT-SET (Voice) NOT-SET (Data)
Max Calls (Outgoing):   NOT-SET (Any)   NOT-SET (Voice) NOT-SET (Data)
Max Calls (MixTotal):   NOT-SET (Any)   NOT-SET (Voice) NOT-SET (Data)
Retries: 0

Trunk Se3/0:15  Preference 1
Member Timeslots : 1-31
Total channels available : 30
Data = 0, Voice = 10, Modem = 0, Pending = 0, Free = 20
Trunk Se3/1:15  Preference 2
Member Timeslots : 1-31
Total channels available : 30
Data = 0, Voice = 2, Modem = 0, Pending = 0, Free = 28
Trunk Se3/2:15  Preference 3
Member Timeslots : 1-31
Total channels available : 30
Data = 0, Voice = 0, Modem = 0, Pending = 0, Free = 30
Trunk Se3/3:15  Preference 4
Member Timeslots : 1-31
Total channels available : 30
Data = 0, Voice = 2, Modem = 0, Pending = 0, Free = 28

Total calls for trunk group: Data = 0, Voice = 14, Modem = 0
Pend = 0, Free = 106

advertise_flag 0x00000040, capacity timer 25 sec tripl_config_mask 0x00000000
AC_curr 106, FD_curr 40, SD_curr -40

succ_curr 929408 tot_curr 1093569
succ_report 929408 tot_report 1093569
changed 1 replacement position 0

Остается создать соответствующие диал-пиры в соответствии с задачей:

  • местная связь — Оператор 1
  • мг/мн — Оператор 2

!
dial-peer voice 7495 pots
trunkgroup 88
huntstop
preference 1
destination-pattern 749[5,9]…….$
progress_ind setup enable 3
progress_ind alert enable 8
no digit-strip
direct-inward-dial
!
dial-peer voice 8495 pots
trunkgroup 88
huntstop
preference 1
destination-pattern 849[5,9]…….$
progress_ind setup enable 3
progress_ind alert enable 8
no digit-strip
direct-inward-dial
!
dial-peer voice 810 pots
trunkgroup 888
destination-pattern 810.T
progress_ind setup enable 3
progress_ind alert enable 8
no digit-strip
!
dial-peer voice 888 pots
trunkgroup 888
destination-pattern 8……….$
progress_ind setup enable 3
progress_ind alert enable 8
no digit-strip

P.S. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: zaikini
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 1, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту