Получение цифрового голоса через
канал E1
24 Сентября
2008 19:47.
Когда ваш телефонный провайдер приводит к вам в офис одну
или несколько аналоговых линий, то сразу более-менее понятно, что и как с ними
нужно делать. Но если речь заходит о полном потоке E1 или его части, то у
большинства администраторов опускаются руки. Хотя всё не так сложно, как
кажется на первый взгляд. Опишем всю процедуру создания телефонии в небольшом
филиале с использованием оборудования компании Cisco
Systems. Сразу бы
хотелось бы обратить внимание на то, что здесь речь идёт именно о прямом выходе
телефонии малого офиса в PSTN, а не о связи между офисами через сети передачи
данных. Создание телефонии в офисе можно условно разделить на два этапа:
создание внутренней телефонной сети и связь её с внешним миром. Для того чтобы
у нас всё заработало, необходимо обладать маршрутизатором с голосовым и E1
модулями, коммутатором и несколькими IP-телефонами. В нашем распоряжении был
маршрутизатор Cisco
2851, основные параметры которого представлены ниже (здесь и далее некоторые
строки опущены). Жирным шрифтом
выделены важные места, а курсивом –
вводимые команды.
ATS_2851#sho ver
Cisco IOS Software, 2800 Software
(C2800NM-SPSERVICESK9-M), Version 12.4(15)T4, RELEASE
SOFTWARE (fc2)
Compiled Thu 13-Mar-08 03:04 by prod_rel_team
ROM: System Bootstrap, Version 12.4(13r)T, RELEASE
SOFTWARE (fc1)
Cisco 2851 (revision 53.51) with
249856K/12288K bytes of memory.
Processor board ID FCZ120670M0
4 FastEthernet
interfaces
2 Gigabit Ethernet interfaces
16 Serial interfaces
2
Channelized E1/PRI ports
8 Voice FXS interfaces
DRAM configuration is 64 bits wide
with parity enabled.
239K bytes of non-volatile
configuration memory.
62720K bytes of ATA CompactFlash (Read/Write)
ATS _2851#sho controllers
e1
E1 0/2/0 is
up.
Applique type is Channelized E1 - balanced
No alarms detected.
alarm-trigger is not set
Version info Firmware: 20071011, FPGA: 13, spm_count
= 0
Framing is CRC4, Line Code is HDB3, Clock
Source is Free Running.
CRC Threshold is 320. Reported from firmware is 320.
Data in current interval (153 seconds elapsed):
0 Line Code Violations, 0 Path Code Violations
7 Slip Secs, 0 Fr
Loss Secs, 0 Line Err Secs,
0 Degraded Mins
7 Errored Secs, 0 Bursty Err Secs, 0 Severely Err Secs, 0 Unavail Secs
Total Data (last 24 hours)
0 Line Code Violations, 7 Path Code Violations,
3265 Slip Secs, 0 Fr Loss Secs,
0 Line Err Secs, 0 Degraded Mins,
3265 Errored Secs, 0
Bursty Err Secs, 0 Severely Err Secs, 33 Unavail Secs
Кроме маршрутизатора был использован коммутатор Cisco Catalyst 3560, параметры которого приведены
далее.
PhonesSwitch_3560#sho ver
Cisco IOS Software, C3560 Software
(C3560-IPBASE-M), Version 12.2(35)SE5, RELEASE SOFTWARE (fc1)
cisco WS-C3560-24PS (PowerPC405) processor (revision R0) with
122880K/8184K bytes of memory.
Processor board ID FDO1225X12E
1 Virtual Ethernet interface
24 FastEthernet interfaces
2 Gigabit Ethernet interfaces
512K bytes of flash-simulated
non-volatile configuration memory.
Model number : WS-C3560-24PS-S
Switch Ports Model SW Version SW Image
------ -----
----- ---------- ----------
*
1 26 WS-C3560-24PS 12.2(35)SE5 C3560-IPBASE-M
PhonesSwitch_3560#
На столы офисных работников были установлены телефонные аппараты
Cisco 7906, 7940 и 7960.
Локальная сеть в офисе будет 192.168.1.0/24, для телефонов
будем использовать адреса с 192.168.1.101 по 192.168.1.150. Теперь нам
необходимо сконфигурировать DHCP-пул, адреса из которого будут выдаваться
телефонным аппаратам. Хотелось бы подчеркнуть, что дополнительные опции (66,
128 и 150) нужны для указания телефонам на IP-адреса голосового шлюза.
ip dhcp pool DHCP_Phones
network 192.168.2.0
255.255.255.0
default-router
192.168.2.1
option 150 ip 192.168.2.1
option 66 ip 192.168.2.1
option 128 ip 192.168.2.1
Приведённые конфигурационные строки заставят маршрутизатор
выдавать все адреса из нашей сети класса C. Чтобы ограничить доступный
диапазон, исключим из пула диапазоны адресов 192.168.1.1-192.168.1.100 и 192.168.151-192.168.254
так, как это показано ниже.
ip dhcp excluded-address
192.168.1.1 192.168.1.100
ip dhcp excluded-address
192.168.151-192.168.254
Подключим теперь первый телефон к коммутатору к порту FastEthernet0/1. Убедиться в том, что линия поднялась можно либо с
помощью соответствующего светового индикатора на передней панели коммутатора,
либо из вывода команды sho int
fa0/1.
PhonesSwitch_3560#sho int fa0/1
FastEthernet0/1 is up, line protocol
is up (connected)
Далее нам необходимо выяснить его MAC-адрес.
PhonesSwitch_3560#sho cdp ne | incl 0/1
SEP001EF7C47496 Fas 0/1
154 H P IP Phone
Port 1
PhonesSwitch_3560#sho mac-address-table | incl 0/1
1
001e.f7c4.7496 DYNAMIC Fa0/1
Для чего этот адрес канального уровня может потребоваться?
Например, для жёсткой привязки MAC-IP в специфических случаях использования
DHCP. Самое же важное в MAC-адресе телефона состоит в том, что этот адрес в
дальнейшем будет использован при указании физического телефонного аппарата при
настройке параметров телефонии. В том случае, когда устройство не может
ответить по протоколу CDP, его аппаратный адрес можно выяснить, если
просмотреть мостовую таблицу коммутатора командой show mac-address-table.
PhonesSwitch_3560#show mac-address-table
Vlan
Mac Address Type Ports
All 0180.c200.0010 STATIC
CPU
All ffff.ffff.ffff
STATIC CPU
1 001e.4af1.4258 DYNAMIC
Fa0/3
1 001e.f7c4.7496
DYNAMIC Fa0/1
1 001e.7ac3.d99e DYNAMIC
Fa0/4
Теперь займёмся самым важным в этом
процессе – сконфигурируем службу telephony-service так, как это показано ниже. С помощью
команды max-ephones задаётся
максимальное количество поддерживаемых аппаратов IP Phone, которое зависит от используемого
оборудования. Вызов max-dn позволяет указать
максимальное количество номеров, присваиваемых IP Phone. С помощью ip source-address можно указать IP-адрес и порт
голосового шлюза, которым мы, кстати, и являемся. Указываем тайм-аут звонка с
командой timeouts ringing.
Строка system message
отображает некоторое сообщение на экранах телефонных аппаратов. Команды time-zone, time-format, date-format и user-locale
позволяют настроить параметры локализации и времени на телефонных аппаратах. С
помощью max-conferences указывается максимальное количество возможных
конференций. За проигрывание музыки в режиме On Hold отвечает команда moh.
Остаётся задать возможность перенаправления звонков с помощью вызовов call-forward,
transfer-system
и transfer-pattern.
telephony-service
max-ephones
10
max-dn
30
ip
source-address 192.168.1.1 port 2000
timeouts ringing 60
system message Test_IP_Phone
user-locale RU
time-zone 28
time-format 24
date-format dd-mm-yy
max-conferences 16
gain -6
call-forward pattern
.T
moh
music-on-hold.au
transfer-system
full-consult
transfer-pattern .T
Теперь создадим телефон 7960 с двумя кнопками, чтобы
проиллюстрировать ряд возможностей. Указанные ниже действия создают два
виртуальных телефона (линии), которые в дальнейшем надо будет связать с
физическим телефоном.
ephone-dn 1
number 1111
label Maxim Klimanov
description Maxim
Klimanov
name Maxim Klimanov
preference 1
call-forward busy
1112
call-forward noan 1112 timeout 10
no huntstop
ephone-dn 2
number 1111
label Maxim Klimanov
description Maxim
Klimanov
name Maxim Klimanov
preference 1
Займёмся теперь созданием настроек для самого физического
аппарата.
ephone 1
mac-address 001e.f7c4.7496
speed-dial 1 1112
speed-dial 2 1113
type 7960
button 1:1 2:2
Команды button позволяют
привязать созданные ранее виртуальные линии к кнопкам физического аппарата.
Настройку локальной телефонии внутри офиса считаем законченной.
Перейдём к рассмотрению самого канала E1. Помимо всего прочего в конфигурации
маршрутизатора должна присутствовать строка, указывающая на тип карты
контроллера. Так как поток E1 в данном случае приходит на контроллер 0/2/0, то
и в типе карты должен быть указан именно такой порт.
card type e1 0 2
Теперь требуется ввести ряд параметров, отвечающих за работу
контроллера E1, IDSN и самой голосовой карты.
network-clock-participate wic 2
isdn switch-type primary-net5
carrier-id source
voice-card 0
dspfarm
dsp
services dspfarm
controller E1 0/2/0
clock source
free-running
pri-group timeslots 1-16
Следует особое внимание обратить на то, какие тайм-слоты
маршрутизатор будет принимать через канал E1. В приведённых командах происходит
приём половины потока E1. Ошибочное
указание тайм-слотов в
потоке приведёт к тому, что входящие звонки (ATC->Cisco) будут происходить
нормально, но при исходящих звонках в журнале маршрутизатора будут появляться
разнообразные сообщения об ошибках, что объясняется тем, что при исходящих
звонках тайм-слоты начинают использоваться с конца.
После указания тайм-слотов
в системе будет создано соответствующее им количество подинтерфейсов.
ATS_2851#sho ip
int bri
Interface IP-Address OK? Method Status Protocol
Serial0/2/0:0 unassigned YES unset down down
Serial0/2/0:1 unassigned YES unset down down
Serial0/2/0:2 unassigned YES unset down down
Serial0/2/0:3 unassigned YES unset down down
Serial0/2/0:4 unassigned YES unset down down
Serial0/2/0:5 unassigned YES unset down down
Serial0/2/0:6 unassigned YES unset down down
Serial0/2/0:7 unassigned YES unset down down
Serial0/2/0:8 unassigned YES unset down down
Serial0/2/0:9 unassigned YES unset down down
Serial0/2/0:10 unassigned YES unset down down
Serial0/2/0:11 unassigned YES unset down down
Serial0/2/0:12 unassigned YES unset down down
Serial0/2/0:13 unassigned YES unset down down
Serial0/2/0:14 unassigned YES unset down down
Serial0/2/0:15 unassigned YES NVRAM up up
Более подробную информацию о происходящих в системе событиях
можно получить, если воспользоваться командой debug.
Однако здесь следует соблюдать осторожность, так как размер выводимых командой
данных может превысить доступную полосу пропускания или привести к
значительному снижению скорости работы устройства.
ATS_2851#term mon
ATS_2851#deb isdn ?
all
ISDN debug messages
api ISDN Application Program Interface(s)
cc ISDN Call Control
error
ISDN error messages
events
ISDN events
mgmnt ISDN management
q921
ISDN Q921 frames
q931
ISDN Q931 packets
standard Standard ISDN debugging messages
tgrm ISDN TGRM events
ATS_2851#deb isdn q921
debug isdn q921 is ON.
ATS_2851#deb isdn q931
debug isdn q931 is ON.
Отключение отображения всех сообщений debug
можно произвести с помощью команды no deb all.
ATS_2851#no deb
all
All possible debugging has been
turned off
Дополнительную информацию об устранении неисправностей ISDN можно получить из данной статьи.
Считаем, что теперь внешний голосовой канал поднялся,
поэтому переходим к вводу команд, отвечающих за перенаправление вызова к АТС.
Для того, чтобы перенаправить голосовой поток в поток
E1 необходимо ввести следующие команды. Строка dial-peer
создаёт голосовую «пару», в соответствии с которой и будет проводиться
перенаправление. Указание destination-pattern
позволяет задать цифру для выхода из локальной телефонной сети. Чтобы указать
тот телефонный номер, который будет определяться у вызываемого абонента,
необходимо ввести команду clid network-number. Указание порта выхода во внешний
мир производится командой port.
dial-peer voice 50 pots
destination-pattern 9T
clid
network-number 1234567
direct-inward-dial
port 0/2/0:15
Для полноценного функционирования телефонии необходимо не
только производить исходящие звонки, но и принимать входящие, передавая их на определённый IP Phone. Для
идентификации того, какая из секций dial-peer должна
сработать, служит команда incoming called-number, указывающая вызываемый номер. В
данной секции также необходимо указать профиль, согласно которому будет
производиться перенаправление входящего звонка на какой-либо локальный
телефонный аппарат, что осуществляется командой translation-profile.
dial-peer voice 100
pots
description
E1_incoming
translation-profile
incoming TRL1234567
incoming
called-number 1234567
direct-inward-dial
Внутри профиля должно быть сконфигурировано некоторое
количество правил трансляции.
voice
translation-profile TRL1234567
translate called 1
Также необходимо определить и те правила, которые входят в
профиль.
voice translation-rule 1
rule 1 /1234567/ /1111/
Теперь входящий звонок по вызываемому номеру будет
сопоставлен определённому телефонному плану (dial-peer),
согласно которому он будет передан на преобразование в профиль трансляции, где
и будет выполнено необходимое правило.
Для тестирования телефонных планов может быть использована недокументированная
команда csim start
phone_number, используемая для эмуляции
исходящего вызова на номера E.164.
Подведём итоги: задачу организации телефонной связи в офисе
компании можно условно разделить на три составные части, которые приведены
ниже.
1.
Построение
телефонной связи внутри офиса.
2.
Организация
исходящих звонков.
3.
Приём
входящих вызовов.
Для добавления дополнительных функций к только что
построенной телефонной службе требуется глубокое знание всех аспектов
функционирования голосовых вызовов, которое можно почерпнуть из великого
множества других источников. Например, можно обратиться к статье. Данное же повествование на этом
завершается.