Получение цифрового голоса через канал 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.    Приём входящих вызовов.

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

На главную