...
...
...

простая система корпоративной VoIP-телефонии

В данной статье описан основной порядок действий по инсталляции системы корпоративной телефонии. При чтении данной статьи заведомо не будут даваться ссылки на документацию, которая поступает с устройствами или указываться в общем плане порядок действия с устройствами. Задача администратора - иметь эту документацию и в случае необходимости часть действий, описанных ниже проводить в соответствии с документацией производителя. Пример: нет особого смысла описывать порядок замены программного обеспечения в устройстве IP-телефонии в данной статье - эта часть очень подробно описана в документации на устройство. Предполагается что у администратора имеется определенный опыт работы как в среде Windows, так и в среде UNIX, но направление VoIP для него новое и его надо практически внедрять.

Учитывая, что в общем случае мы работаем с устройствами удаленно и добраться до удаленного устройства иногда не представляется возможным, рекомендуется все работы производить чрезвычайно аккуратно и осознанно. Есть смысл дополнительно известить в офисе, где установлено удаленное устройство, необходимый персонал (секретарей, например) о том, где это устройство находится и какой порядок включения/выключения/сброса питания на этом устройстве. Очень полезным будет на верх устройства наклеить большой лист бумаги и нарисовать стрелку в направлении выключателя питания. Это не Cisco-класс оборудования, может и зависнуть. Должны быть готовы.

В данной статье будет описано построение заведомо более сложной системы, чем можно было бы сделать, но в данной заведомо более сложной схеме реализации существует определенная гибкость и возможность достаточно простого расширения без перестройки всех устройств системы путем только наращивания оборудования. Все, о чем идет дальше речь, работает только в среде DTMF-нумерации.

выбор технологии и оборудования

Самый простой вариант - полное отсутствие какой бы то ни было телефонной инфраструктуры в подразделениях. Случается. Часто. Но звонить надо, поэтому ставятся городские телефоны или люди просто используют корпоративные мобильные пакеты. Сейчас этого добра уже достаточно и в перспективе будет еще больше. Чем хорош такой подход - делать ничего не надо. Оно работает. Чем плох - дорого. Как можно расправиться с корпоративным пакетом? Можно запихнуть его в GSM-гейт. Поясню о чем речь - существует оборудование, которое можно использовать для GSM-телефонии и к нему подключать или обычные телефоны, или офисные АТС. Удобно в случае, если нужна телефонная линия, а физически доступна только сеть мобильной связи. Есть альтернативный вариант - если офис подключен к Интернету и существует нормальный интернет-канал - настроить телефонное взаимодействие офисов через Интернет. Мы говорим о канале более 128 кб/с.

Что для этого требуется - оборудование перевода телефонного сигнала в Интернет-формат и программное обеспечение управления всем этим оборудованием. Задачу ставим следующим образом: есть 3 офиса, территориально разнесенные на большое расстояние и подключенные к Интернет, и между офисами настроены виртуальные сети либо используются дргуие схемы подключения. Главное условие - мы не выходим с адресами этих сетей непосредственно в Интернет.

Какое выбираем оборудование - здесь будет дан пример выполнения телефонии на оборудовании H.323. Существует более новый стандарт - SIP. Пускай существует. Мы работаем с H.323. Пока в подробности не вдаемся. Основная наша задача сейчас - помнить что стандартов несколько, но сосредоточиться на чем-то одном.

Считаем, что внутри офисов существуют локальные телефонные станции. Для станций ряда Panasonic - проблем не возникает. Для Siemens - немного по другому. Серии Hicom-120/125 по программному обеспечению не позволяют (по крайней мере мы не нашли варианта) формировать тоновые посылки с системного телефона на внутренний телефонный номер. То есть, при звонках через внешний порт АТС (в город) путем последовательного нажатия кнопок “*” и “#” после этой комбинации в порт выдаются DTMF-посылки - можно управлять устройствами на внешнем канале. Этого не получается при звонках с системного телефона на внутренний порт.
После длительных переговоров с различными телефонными гуру - решения вопроса найдено не было. То ли не того уровня гуру нам попадались, то ли это действительно из-за древности идеологии Hicom-120/125, вобщем нам было разъяснено, что она этого точно не может. Мы говорим только о системном телефоне. С обычным телефоном вообще этих вопросов не возникает. Ставишь его под DTMF и работаешь.

В связи с этим принято решение - перейти на HiPath. Там это делается сразу, но при заказе станции необходимо указать это условие как обязательное в техническом задании - все «супер» гуру очень хорошо умеют считать деньги и постоянно чего-то недоговаривать, оставляя себе сладенький кусочек на перспективу. Смотришь клиент проснется - и чего-то еще отломится. Это и есть причина, почему такого класса требования надо писать на бумаге. В противном случае - придется платить деньги еще и за «сложное конфигурирование», а то и воевать по поводу полного возврата оборудования из-за его функциональной непригодности.

Что мы делаем - ставим достаточно простое оборудование. Какое? Какое существует. Какое продается.

В принципе для наших условий существует два интерфейса VoIP-оборудования - FXO и FXS.

FXS-порт изображает из себя порт АТС - то есть он в состоянии только выдавать напряжение звонка в линию, соответственно - это эмуляция той телефонной пары, которая приходит с городской АТС - к нему подключается обычный телефон, способный по умолчанию работать в DTMF. Другой тип порта - FXO - эмулирует пользовательский телефонный аппарат в части того, что он может «снимать трубку», отвечать и набирать номер. Так как это телефонный интерфейс - он также может воспринимать набор, передаваемый ему в DTMF. Этот порт подключается к порту телефонной станции как обычный телефон или факс. Телефонная станция конфигурируется для работы по этому порту в DTMF. Это нам и надо.
Рассмотрим производителей оборудованя (а их достаточно много). Список можно найти например здесь-http://www.gnugk.org/interoperability.html- и здесь -http://www.gnugk.org/interoperability-2.html.Список внушает уважение, но не более. Наш выбор невелик - Dynamix или NSG. Кто-то может добыть Micronet. Не будем вдаваться в подробности относительно этих устройств, скажем только, что общее у них - версия прошивки. В их основе лежит базовое устройство одного производителя, и во все эти устройства заливается одинаковое программное обеспечение. Перезаливкой программного обеспечения эти устройства можно перевести с протокола работы H.323 на протокол SIP. Кто знает, как со временем сложатся требования - может придется переходить на SIP - тогда при подобном выборе модная нынче «защита инвестиций» налицо.

Почему мы не говорим о DLink? Да, устройства от DLink существуют, но производитель более не поддерживает H.323 - не будем с ними спорить. Выберем для примера Dynamix 0004/H/. Это 4-портовая VoIP FXO-система. Так как подобные устройства обычно как пирожки на лотке не продаются , то в фирме, в которой мы их будем покупать, попросим перешить их сразу под прошивку 2m4fxo118b. Это последняя стабильно работающая прошивка для этого класса устройств.

Еще нам потребуется FreeBSD. Считаем, что она настроена и работает. VPN подняты. Там есть место для инсталляции и настройки GateKeeper - программного обеспечения управления телефонными каналами.

Схема предполагается следующая: есть 3 офиса, в каждом устанавливается VoIP-устройство. Для каждого офиса определяем его «код дозвона» - то есть при наборе номера «код дозвона» будет определять то устройство на котором мы хотим прийти для последующего донабора на внутренней АТС.



офискод офисавнутренняя нумерация в офисеустройство IP-телефонии
Офис - А (о. А)2100-120118, 119
Офис - Б (о. Б)5200-220218, 219
Офис - С (о.С)9300-320318, 319


Как будет производиться звонок:
- допустим, мы находимся в офисе А и звоним в о. Б на номер 206;
- набираем внутренний номер порта на телефонной станции 118 офиса А;
- слышим голосовое приветствие;
- набираем код офиса Б – 5;
- набираем нужный номер – 206;
- завершаем набор символом «#».
или:
- мы находимся в офисе С и звоним в о. А на номер 106;
- набираем внутренний номер порта на телефонной станции 318;
- слышим голосовое приветствие;
- набираем код офиса А – 2;
- набираем нужный номер – 106;
- завершаем набор символом «#».

Приниматься звонок обычно будет на последний подключенный порт VoIP-устройства. Что можно оговорить при конфигурировании офисной АТС, так это создание группу для звонков на VoIP-устройство. Примерно вот как: мы звоним на номер 118, если он занят - звонок сразу же маршрутизируется на 119. То есть все пользователи знают только один номер обращения к устройству, а дальше сама АТС определяет, на какой свободный порт перебросить этот звонок.

То есть логически достаточно ясная схема работы. Может быть, предложенная схема и не «прозрачна» - если вам это необходимо, то вам придется идти по направлению стекирования используемых АТС. Но это другие масштабы, другие деньги и другие затраты на обслуживание.
Могут быть и другие вариации использования оборудования и схем организации телефонии, которые, возможно, окажутся более технологичными, но мы реализуем описанный выше подход. Особенности этого подхода:
- ясная схема использования для сотрудников;
- простота реализации;
- возможность контроля звонков;
- возможность блокирования определенных направлений или номеров для дозвона;
- возможность перенаправления звонков.

приступим к делу

С чего начинаем: берем в аренду нужное количество устройств с прошивкой 2m4fxo118b.

Если не удалось получить именно с этой прошивкой - не страшно. Начинаем с тем, что у нас есть. Или идем наhttp://www.micronet.infoили на сайт производителя и скачиваем 2-мегабайтный образ прошивки. Дополнительно потребуется TFTP-сервер под Windows, компьютер с COM-портом. Найдите в документации на устройство порядок подключения через HyperTerminal (стандартная компонента Windows/Communications) - в части точного описания параметров, выставляемых для COM-порта в HyperTerminal. Устройство поставляется с кабелем подключения к COM-порту.

Если что-то не получилось или мы не дождались полной перепрошивки устройства и оно больше не грузится – не отчаивайтесь. В общем случае это не страшно. По крайней мере еще не все потеряно :). Данные устройства сконструированы так, что первоначально загружается загрузчик, а только потом загружается сама прошивка. Нам нужно будет перезалить прошивку, находясь не на уровне самой прошивки (не в ее программном окружении), а на более низком уровне - на уровне загрузчика. Техподдержка отлично знает порядок действий в этом случае и стандартные пароли загрузчика устройства. В FAQ’е на сайте Micronet также есть необходимые разъяснения.

Теперь нарисуем схему сети (см. рис. 1).


Рис. 1.

Действуем в соответствии со схемой:
Через HyperTerminal/COM-порт на всех трех устройствах меняем необходимые IP-адреса, шлюзы, проверяем маски и обязательно проверяем наличие чего- то логически удобоваримого в MAC-адресе. Устройство работоспособно при невыставленном MAC.

Устанавливаем устройства в их сетях. Проверяем доступность устройств как по Telnet, так и по HTTP. Нам понадобится и первое, и второе. Теперь - под номерами - примеры программирования устройств. Для различных офисов будут проставляться соответствующие указатели -А, -Б, -С. Если различия между конфигами для разных офисов незначительны, буде приводить только один экземпляр, объясняя различия.

программируем интерфейсы

DNS указан в файле конфигурации, пропишем его, однако ничего сказать об его практическом использовании мы не можем. Блок от PPPoE user name и до конца - не трогаем вообще. Что стоит - то и стоит.

Офис А:

usr/config$ ifaddr -print

IP mode : Static
Internet address information
IP address: 192.168.40.251
Subnet mask: 255.255.255.0
Default gateway: 192.168.40.254
DNS primary: 192.168.40.240
DNS secondary: 192.168.40.241
HTTP port: 80
SNTP: mode=0, sntp off
IPSharing: no IPSharing device.
IP change: Disable
PPPoE user name: pppoe
PPPoE password: *****
PPPoE reboot: Yes
PPPoE echo: Disable
EMS IP: 10.1.1.2
EMS user name: Max_Su
EMS password: ******
EMS time: 0

В других офисах меняется только номер IP-сети.

системные параметры

Inter-Digits time - время в секундах от момента набора последней цифры в телефонный порт устройства до момента завершения приема набранной посылки, формирования задания и отправки задания по соединению на обработку. Для «тугодумов», которые не помнят «на взлет» набираемый номер - этот фактор может стать определенной проблемой. Это одна из причин, почему в системе принято стандартом завершать набор указателем «законченности» набора номера «#».

User defined prefix disable - код нашего офиса: А - 2, Б - 5, С - 9, убираем префикс при принятии звонка.

Local generate ring back tone - в момент выполнения соединения - хотим чтобы трубка не молчала а выдавала подобие гудков дозвона.

Ring before answer - количество гудков с PBX, после которых устройство снимает трубку.

End of dial - требование восприятия символа # как завершения команды и немедленного набора номера.

Офис А:

usr/config$ sysconf -print

System information
Inter-Digits time: 8
Keypad DTMF type: H.245 SignalType
User defined prefix switch: OFF
User defined prefix disable: 2
User defined prefix: -
Codec select method: Master
Local generate ring back tone: Enable
Round Trip: Disable
Gateway prefix: Drop
End of dial: Enable
Detect silence voice: Enable
Ring time: 1
Ring before answer: 1
Delay to add DTMF: 1
Auto connect time: 1
FXO type: Normal

Для остальных меняем только значение параметра User defined prefix disable.

конфигурирование H.323

Gatekeeper IP address - адрес гейткипера.
Registered prefix number - префикс офиса - А-2, Б-5, С-9.
Line1 - не трогаем, что стоит, то и стоит.
Registered alias : ofa - идентификация офиса в отчетах.
Display Information: ofa - идентификация офиса в отчетах.
Gatekeeper ID - имя гейткипера.

Офис А:

usr/config$ h323 -print

H.323 stack relate information
RAS mode: GK mode
Gatekeeper IP address: 192.168.60.252
Second Gatekeeper IP:
Gateway Type: Gateway1
Registered prefix number: 2
Line1: 000
Line2: 001
Line3: 002
Line4: 003
H.235 security token: *
Registered alias: ofa
Display Information: ofa
Gatekeeper discovery: Off
Gatekeeper ID: GK-OFC
RAS TTL time: 60
RTP port: 16384
Gatekeeper finding port: 1718
GK RAS port: 1719
H225 RAS port: 1024
H225 Call signal port: 1720
Allocated port range:
start port: 2000
end port: 19999
Response timeOut: 15
Connect timeOut: 60

Конфиги других офисов отличаются номером префикса (Registered prefix number) и идентификаторами офиса (Registered alias и Display Information).

параметры голосового (телефонного) сигнала и кодеки

Все указанные параметры намного удобнее делать из HTTP интерфейса. Что мы здесь корректируем - порядок следования кодеков и громкость приема/передачи. DTMF громкость оставляем без изменений. С громкостью особо увлекаться не стоит - может искажаться звук. Все для всех устройств одинаково.

usr/config$ voice -print

Voice codec setting relate information
Sending packet size:
G.729: 60 ms
G.729: 60 ms
G.729A: 60 ms
G.729B: 60 ms
G.729AB: 60 ms
G.711U: 40 ms
G.711A: 40 ms
Priority order codec: g729 g729 g729a g729b g729ab g711u g711a
Volume levels:
voice volume: 35 35 35 35
input gain: 35 35 35 35
dtmf volume: 23 23 23 23
No sound compress & CNG:
G.729: There is no setting
G.729: There is no setting
G.729A: There is no setting
G.729B: There is no setting
G.729AB: There is no setting
G.711(U-Law): There is no setting
G.711(A-Law): There is no setting
Echo canceller: On On On On
Jitter buffer:
Min Delay: 90
Max Delay: 150

Другие протоколы не рассматривались, так как не являются для нас приоритетными.

usr/config$ support -print

Special Voice function support manipulation
T.38(FAX) support: Disabled
T.38(FAX) Request Mode: Enabled
T.38(FAX) ECM: Disabled
T.38(FAX) ASN.1: Disabled
FAX redundancy depth: 0
FastStart support: Disabled
Tunneling support: Disabled
H.245 message after FastStart support: Enabled
EarlyH245 support: Disabled

Раздел Phone не трогаем. Как работает, так и работает.

Tone

Одной из задач функционирования устройства IP-телефонии является точное идентифицирование тонов занятости (Busy) со стороны телефонной станции. Для начала сконфигурируем полностью телефонную систему, и потом - в случае если эта часть не будет работать - будем настраивать и ее. Если работает - забываем этот раздел и говорим себе - хорошо, пронесло.

Что значит «работает - не работает»? Если после окончания разговора устройство не «кладет трубку» в сторону PBX более 5 секунд - значит не работает. Надо настраивать.

Порядок настройки. Настройка (программирование) устройства ведется из HTTP-интерфейса. Что нам понадобится из оборудования - микрофон, компьютерные колонки, провод, соединяющий VoIP-устройство и PBX, к которому в центре можно подключить напрямую компьютерную колонку (с блоком питания у усилителем) и через нее услышать искомый сигнал «занято». То есть, фигурально выражаясь - делаем провод для «прослушки» и «прослушиваем» на компьютерную колонку. Микрофон подносим к колонке и пишем сигнал «занято» в звуковой файл на компьютер в виде WAV-файла. Это можем сделать даже средствами Windows - Sound Recorder (%SystemRoot%\System32\sndrec32.exe. Дальше - ставим SoundForge. Подойдет даже какая- нибудь древняя версия. Делаем следующее: считываем записанный файл, прямо на экране определяем временные параметры включения/выключение сигнала «занято» - перемешаем курсор к началу/концу сигнала и записываем время (справа внизу в формате 00:00:05.455). Записываем показания примерно 5-6 импульсов и в табличке определяем их длительность (А на рисунке 2).


Рис. 2.



началоконецрезультат, сек
0.6841.231.230-0.684=0.546
пауза.1.706-1.230=0.476
1.7062.2522.252-1.706=0.492
пауза.2.739-2.252=0.484
2.7393.2973.297-2.739=0.558


Делаем подобные вычисления точнее и принимаем средние значения - пауза/сигнал.

Теперь, в том же SoundForge - отмечаем курсором сигнал занятости, потом - Tools - Spectrum Analyses. В окне спектрального анализа выставляем в Options-Settings пределы анализируемых частот - скажем от 350 до 450 гц. Программа выдаст пик частот. Можем дать Update. В результате мы получили временные и частотные параметры сигнала «занято».

Дальше ставим в соответствующем окне HTTP-интерфейса настройки устройства.

TOS

Это выставление приоритетов прохождения VoIP-сигнала по Ethernet-сетям.

Делается одинаково для всех устройств.

usr/config$ tos -print

IP Packet ToS information:
Signalling Packet:
DSCP Code : 6
Media Packet :
DSCP Code : 6

Не будем вдаваться в подробности относительно максимального значения параметра TOS. Выставим 6.

Итак, считаем, что хардварная инфраструктура готова. Проверяем доступность до всех устройств из офиса С (там будет размещаться GateKeeper). Пробуем, перегружаем, слушаем голос вежливой барышни со всех сторон и думаем, что будем делать дальше. А дальше - ставим GNU GateKeeper. Так как ранее мы ориентировались в построении всей инфраструктуры на FreeBSD - продолжим в том же духе. У нас есть FreeBSD 5.4.
Ставим:

# cd /usr/ports/net/gatekeeper
# make
# make install

Или то же самое делаем через pkg_add - но будьте готовы к тому, что достаточно много вспомогательных пакетов будет устанавливаться. Теоретически можно ставить самый распоследний GateKeeper - но начать надо с анализа одной странички и размышлений о привязанности этого пакета к большому числу вспомогательных пакетов:http://www.gnugk.org/compiling-gnugk.html.Занимательный документ. Ясно написано для FreeBSD, что надо крепко ковыряться для получения работающей системы. Тихо об этом забываем и ставим то, что скомпилировано в дистрибутиве и по уверению разработчиков FreeBSD работает. Теоретически существует версия для Windows. Да. Существует. Только есть одна особенность, никем со стороны разработчиков GNUGK не признаваемая - Dynamix с GNUGK под Win2000 сервер или Win2003 сервер не работает. Суть вот в чем: оно работает, но падает. С периодичностью от 20 мин до 2-х недель, то есть совершенно бессистемно. После длительных разборок (и с техподдержкой Dynamix в том числе) общее мнение, удовлетворяющее обе стороны, следующее: видимо есть какие-то проблемы у Динамиксов с разбором TCP/IP-пакетов производства Microsoft, сформированных Win2003. Разбираться с этим не представляется возможным, поскольку падения не регулярны. Нельзя идентифицировать стабильный момент зависания устройства. Решение - ставить только в Unix-окружении. Так и ставим.

Развернули. Поставили. Нарисуем файл /usr/local/etc/gnugk.ini – см. во врезке его содержимое (оставлено только то, что для нас существенно). Комментарии прилагаются.
Запускаем Гейткипер:

# /usr/local/bin/gnugk -c /usr/local/etc/gnugk.ini

Проверяем работоспособность:

# ps ax| grep gnugk
97349 p0 S+ 0:00.01 /bin/sh -c ps ax| grep gnugk
97351 p0 S+ 0:00.01 grep gnugk
39198 v3 S+ 34:18.77 /usr/local/bin/gnugk -c /usr/local/etc/ gnugk.ini
Press any key to continue...

Затем заходим на это же машину по порту 7000 и получаем консоль гейткипера.
По команде « ? » получаем список всех подключенных устройств.

Дальше – смотрим, какие порты (сканируем, в крайнем случае) и адреса (сами ставили) используются и обслуживаются гейткипером и, соответственно, думаем, что делать с Firewall, оставляя доступ только с VoIP-устройств и тех машин, на которых надо настроить MS NetMeeting.
Мы заведомо не занимались вопросами защиты - после установки системы администратор самостоятельно для себя должен решить, что разрешается, а что нет.

заключение

Это не описание Call-центра. Это простая корпоративная система телефонии.
Результат наших трудов – просто система, которая работает. Осматриваемся, читаем документацию, звоним... Далее, уже при наличии работающей системы можем подумать, что можно добавить или как улучшить уже сделанное.



B. Yasynetskyy, M.Yasynetska.


© Сетевые решения