Получение цифрового голоса через канал E1
Когда ваш телефонный провайдер приводит к вам в офис одну или несколько аналоговых линий, то сразу более-менее понятно, что и как с ними нужно делать. Но если речь заходит о полном потоке 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.
Подведём итоги: задачу организации телефонной связи в офисе компании можно условно разделить на три составные части, которые приведены ниже.
- Построение телефонной связи внутри офиса.
- Организация исходящих звонков.
- Приём входящих вызовов.
Для добавления дополнительных функций к только что построенной телефонной службе требуется глубокое знание всех аспектов функционирования голосовых вызовов, которое можно почерпнуть из великого множества других источников. Например, можно обратиться к статье. Данное же повествование на этом завершается.