VoIP телефония. Корпоративная сеть.

 

Версия 1.02 04-сентября-2006

 

 

 

 

 

В предыдущих статьях («Корпоративный сервер», VPN”: ) было рассказано о построении корпоративного сервера и рассмотрены некоторые вопросы корпоратизации компьютерной системы - базовые элементы построения внешней части интранет инфраструктуры:

Сейчас рассмотрим вопросы более тесного связывания офисов в единую сеть предоставлением сервисов корпоративной телефонии.

 

Некоторые предварительные замечания о структуре телефонной сети, применяемом оборудовании и направлениях действий. В данной статье будет описано построение заведомо более сложной системы, чем можно было бы сделать, но в данной заведомо более сложной схеме реализации существует определенная гибкость системы и возможность достаточно простого расширения без перестройки всех устройств системы путем только наращивания оборудования. Все о чем идет дальше работает только в среде 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. Для начала можно заказывать и AddPack или CISCO - но цены значительно выше - соответственно больше телодвижений придется делать выбивая финансирование. Не будем вдаваться в подробности этих устройств - общее у них - версия прошивки. Это базовое устройство одного производителя и во все эти устройства заливается одинаковое программное обеспечение. Что еще с этими устройствами полезного на перспективу - перезаливкой программного обеспечения эти устройства можно перевести с протокола работы H.323 на протокол SIP. Кто знает как со временем сложатся требования - может придется переходить на SIP - тогда что-то при подобном выборе можно будет сэкономить. Почему мы не говорим о DLink ? Да, DLink существуют, они определились что более не поддерживают H.323 - не будем с ними спорить. Очень полезно по поводу DLink зайти на http://www.dlink.ru в раздел Форум и почитать статьи на предмет формата и спектра задаваемых вопросов и качества ответов. Если Вам будут настраивать систему телефонии сторонние фирмы и они полностью будут нести ответственность за работоспособность строящейся системы - всегда пожалуйста, но мы должны строить сами.

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

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

 

Офис

Код

офиса

Внутренняя Нумерация

В офисе

Устройство IP телефонии

(не принципиально)

Офис - А (о.А)

2

100-120

118, 119

Офис - Б (о.Б)

5

200-220

218, 219

Офис - С (о.С)

9

300-320

318, 319

 

Как будет производиться звонок:

 

или

 

 

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

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

 

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

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

 

 

Дальше. Рисуем схему сети:

 

Действуем в соответствии со схемой:

 

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

 

Устанавливаем устройства в их сетях. Проверяем доступность устройств как по Telnet так и по HTTP. Нам понадобятся и первое и второе.

 

Что делается по Telnet:

 

1-А  - программируем интерфейсы (если это до конца не сделано из консоли - через COM-порт). 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

 

usr/config$               

 

 

1-Б

 

usr/config$ ifaddr -print

 

 

IP mode : Static

Internet address information

    IP address              : 192.168.41.251

    Subnet mask             : 255.255.255.0

    Default gateway         : 192.168.41.254

    DNS primary             : 192.168.41.240

    DNS secondary           : 192.168.41.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

 

usr/config$

 

 

 

1-С

 

usr/config$ ifaddr -print

 

 

IP mode : Static

Internet address information

    IP address              : 192.168.60.251

    Subnet mask             : 255.255.255.0

    Default gateway         : 192.168.60.254

    DNS primary             : 192.168.60.240

    DNS secondary           : 192.168.60.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

 

usr/config$

 

  1. Системные параметры:

 

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

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

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

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

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

 

 

1-А

 

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

 

usr/config$

 

1-Б

 

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   : 5

    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

 

usr/config$

 

 

1-С

 

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   : 9

    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

 

usr/config$

 

 

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

 

Gatekeeper IP address    - адрес гейткипера

Registered prefix number - префикс офиса - А-2, Б-5, С-9

Line1 - не трогаем, что стоит - то и стоит

Registered alias         : ofa - идентификация офиса в отчетах

Display Information      : ofa - идентификация офиса в отчетах

Gatekeeper ID            - имя гейткипера

 

 

3-А

 

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

 

usr/config$

 

 

3-Б

 

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 : 5

    Line1                    : 000

    Line2                    : 001

    Line3                    : 002

    Line4                    : 003

    H.235 security token     : *

    Registered alias         : ofb

    Display Information      : ofb

    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

 

usr/config$

 

3-C

 

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 : 9

    Line1                    : 000

    Line2                    : 001

    Line3                    : 002

    Line4                    : 003

    H.235 security token     : *

    Registered alias         : ofc

    Display Information      : ofc

    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

 

usr/config$

 

 

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

 

Эта страница приводится как справочная. Все указанные параметры намного удобнее делать из 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$   

 

 

  1. Протоколы

 

Различные дополнительные протоколы (Факс) - так как не являются для нас приоритетными - не рассматривались. Остаются как есть. Будем с ними разбираться позже. Когда будет все работать. А то и вообще перейдем на E-Mail.

 

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

 

usr/config$    

 

 

  1. Phone.

 

Не трогаем. Как работает - пусть так и работает.

 

  1. Tone.

 

Вот с этим нам может придется повеселиться.

 

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

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

 

 

 

 

Начало

Конец

Результат, сек.

0.684

1.230

1.230-0.684=0.546

пауза

1.706-1.230=0.476

1.706

2.252

2.252-1.706=0.492

пауза

2.739-2.252=0.484

2.739

3.297

3.297-2.739=0.558

 

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

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

 

 

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

 

Записано в первой строке следующее - частота - 425 Гц, скважность сигнала - 350 мс. Это стандартной значение для станций HiPath-3000. На устройстве скважность в 350 мс. Указывается как 35 - это особенность устройства

 

 

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

 

 

 

 

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

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

 

usr/config$ tos -print

 

 

IP Packet ToS information:

    Signalling Packet:

           DSCP Code : 6

    Media Packet     :

           DSCP Code : 6

 

usr/config$ 

 

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

 

 

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

 

 

Так  как ранее мы ориентировались в построении всей инфраструктуры на FreeBSD - продолжим в том же духе. У нас есть FreeBSD 5.4.

 

Ставим

 

/usr/ports/net/gatekeeper

 

Make

Make install

 

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

 

Развернули. Поставили. Нарисуем файл /usr/local/etc/gnugk.ini

Оставлено то что для нас существенно. Комментарии прилагаются. Все дано для примеров устройств выше.

 

; comments may start with # (only unix) or ; (unix or windows)

;; Boolean values.

;; Boolean Values are retresented by a case insensitive string

;; - "t"..., "y"... or "1" for TRUE

;; - all other for FALSE

 

;; NOTE: This parameters may be loaded at program startup and not influenced by the HUP signal.

[Gatekeeper::Main]

;; 'config is present' indicator. Has to be 42. - Это всегда так, как пароль

Fourtytwo=42 

; Includes in some RAS-Msgs

Name=GK-OFC

; overwritten from command line parameter

Home=192.168.60.252

;NetworkInterfaces=

TimeToLive=300

;TotalBandwidth=100000

;StatusPort=7000

;StatusTraceLevel=2

;UseBroadcastListener=0

;;

;; Failover support

;;

;AlternateGKs=1.2.3.4:1719:false:120:OpenH323GK2

;Sendto=1.2.3.4:1719

;EndpointIDSuffix=_gk1

;SkipForwards=4.3.2.1

;RedirectGK=Calls > 50

;;

;; You should never need to change any of the following values.

;; They are mainly used for testing or very sophisticated applications.

;;

;UnicastRasPort=1719

;MulticastPort=1718

;MulticastGroup=224.0.1.41

;EndpointSignalPort=1720

;ListenQueueLength=1024

;TimestampFormat=RFC822

 

 

[LogFile]

; hourly - once per hour

; daily - once per day,

; weekly - once per week,

; monthly - once per month

Rotate=hourly

; For weekly rotation:

;  Mon, Tue, Wed, Thu, Fri, Sat, Sun

;  Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday

;  1, 2, 3, 4, 5, 6, 0

;RotateDay=Sun

; For monthly rotation (31th of each month, or the last day of the month

; if it has less than 31 days)

; RotateDay=31

; For daily, weekly and monthly rotation (rotation will be performed at 4:00)

RotateTime=15

; For hourly rotation (rotation will be performed at 0:59, 1:59, ...)

;RotateTime=59

 

;;  Здесь может быть одна заминка - проверьте соответствие портов на устройстве в разделе h323 и здесь

;;  по умолчанию - могут быть разные порты

[RoutedMode]

GKRouted=1

H245Routed=0

CallSignalPort=1720

CallSignalHandlerNumber=1

RemoveH245AddressOnTunneling=0

AcceptNeighborsCalls=1

AcceptUnregisteredCalls=1

SupportNATedEndpoints=1

DropCallsByReleaseComplete=1

;RemoveCallOnDRQ=1

;SendReleaseCompleteOnDRQ=0

;ScreenDisplayIE=

;ScreenCallingPartyNumberIE=

;ScreenSourceAddress=

;ForwardOnFacility=1

;ShowForwarderNumber=1

;Q931PortRange=20000-20999

;H245PortRange=30000-30999

;ConnectTimeout=180000

;SetupTimeout=8000

TcpKeepAlive=1

 

[Proxy]

;Enable=1

;InternalNetwork=10.0.1.0/255.255.255.0,127.0.0.0/8

;T120PortRange=40000-40999

;RTPPortRange=50000-59999

;ProxyForNAT=1

;ProxyForSameNAT=0 

 

 

;[Endpoint]

;Gatekeeper=no

;Gatekeeper=auto

;Gatekeeper=210.58.112.188

;Type=Gateway

;H323ID=CitronProxy

;E164=18888600000

;Password=

;Prefix=18888600,1888890003

;TimeToLive=900

;RRQRetryInterval=10

;UnregisterOnReload=0

;NATRetryInterval=60

;NATKeepaliveInterval=86400

;Discovery=1

;GatekeeperIdentifier=ParentGKId

;UseAlternateGK=1

;EndpointIdentifier=ChildGKId

 

;[Endpoint::RewriteE164]

;188889000=9

              

 

 

;;

;; Prefixes of e164 numbers for gateways.

;; A dot (.) matches any digit, ! at the beginning disables the prefix

;; Separate list elements by one of " ,;\t".

;; @see RasTbl::addPrefixes

;; This parameters should consider a HUP signal.

[RasSrv::GWPrefixes]

;; Test-Gateways

 

[RasSrv::RRQFeatures]

;OverwriteEPOnSameAddress=1

;AcceptEndpointIdentifier=1

;AcceptGatewayPrefixes=1

 

[RasSrv::ARQFeatures]

ArjReasonRouteCallToSCN=0

ArjReasonRouteCallToGatekeeper=1

CallUnregisteredEndpoints=1

RemoveTrailingChar=#

RoundRobinGateways=1   

 

 

;; Routing polices define how the message destination is located

;; and where the call is routed. Currently the following policies

;; are implemented:

;;

;;   explicit (only ARQ,Setup,Facility)

;;

;;              If destCallSignalAddress is specified by the message,

;;              the call is routed to this address - aliases, prefixes,

;;              parent, neighbors are not further checked.

;;

;;   internal

;;

;;              A local GK registration table is checked for matching alias.

;;

;;   parent

;;

;;              A parent gatekeeper (if this GK is registered as a child GK)

;;              is queried with ARQ or LRQ.

;;

;;   dns

;;

;;              Routing request aliases are scanned for presence of 'name@domain'

;;              alias types - if such an alias is found, domain part is removed

;;              and the call is routed to the endpoint 'name' at domain:1720.

;;

;;   vqueue (only ARQ)

;;

;;              Destination alises are checked for match with a virtual queue name

;;              (configure via CTI::Agents). If there is a match, RoutingRequest

;;              is signalled and the call is routed to the destination specified

;;              by some external application (like ACD).

;;

;;   neighbor

;;

;;              The gatekeeper neighbors are queries with LRQ for the destination

;;              of this routing request

 

 

[RoutingPolicy]

default=explicit,internal,parent,neighbor

 

;[RoutingPolicy::OnARQ]

;h323_ID=vqueue,internal

;default=explicit,internal

 

;[RoutingPolicy::OnLRQ]

;0048=internal

;default=neighbor

 

;[RoutingPolicy::OnSetup]

;dialedDigits=internal,neighbor

;default=explicit,internal,parent,neighbor

 

;[RoutingPolicy::OnFacility]

;default=internal

 

[RasSrv::RRQAuth]

;; On a RRQ the h323-alias is queried from this section.

;; If there is an entry the endpoint is authenticated against the given rules.

 

;; If there is no entry the default action is performed. The default action

;; is to confirm the RRQ, unless the parameter "default=reject" is given.

;;

;; Notation:

;;   <authrules> :=  empty  |  <authrule> "&" <authrules>

;;   <authrule>  := <authtype> ":" <authparams>

;;   <authtype>  := "sigaddr" | "sigip"

;;   <autparams> := [!&]*

;; The notation and meaning of <authparams> depends on <authtype>:

;; - sigaddr: extended regular expression that has to match agains the

;;     "PrintOn(ostream)" representation of the signal address of the request.

;;     Example: "sigaddr:.*ipAddress .* ip = .* c3 47 e2 a5 .*port = 1720.*"

;; - sigip: specialized form of "sigaddr". Write the signalling ip adresse

;;     using (commonly used) decimal notation: "byteA.byteB.byteC.byteD:port"

;;     Example of the above sigaddr: "sigip:195.71.226.165:1720"

;;

;; This parameters should consider a HUP signal.

 

;;  Это и есть наши устройства

ofa=sigip:192.168.40.251:1720

ofb=sigip:192.168.41.251:1720

ofc=sigip:192.168.60.251:1720

 

default=confirm

                

 

 

;; The parameter "rule" may be one of the following:

;; - "forbid" disallow any connection (default when no rule us given)

;; - "allow" allow any connection

;; - "explicit" reads the parameter ;"<ip>=<value>"; with ip is the ip4-address

;;   if the peering client. ;<value>; is resolved with ;Toolkit::AsBool;. If the ip

;;   is not listed the param "default" is used.

;; - "regex" the ;<ip>; of the client is matched against the given regular expression.

;;   First the ip-rules (like "explicit") are tested. Olny of no such param exists

;;   the regex is tried.

;;   Example: "regex=^195\.71\.(129|131)\.[0-9]+$"

;; - "password" queries remote user for login/password combination and checks

;;   it against username/password stored in this section. Passwords are encrypted

;;   with addpasswd utility using KeyFilled encryption key. DelayReject defines

;;   delay before reject is sent.

[GkStatus::Auth]

rule=allow

;regex=^(195\.71\.(129|100)\.[0-9]+)|(62\.52\.26\.[1-2][0-9][0-9])$

; only used when "rule=explicit"

;default=forbid

;Shutdown=0

;KeyFilled=123

;DelayReject=5

;LoginTimeout=120  

 

;;

;; Beside other things every number to rewrite has its

;; own key/value-line. The implemententation is such that

;; all numbers that shell be rewritten have to begin

;; with a common prefix given by 'Fastmatch'.

;;

;; Doc From the code:

;; // Do rewrite to ;newE164;. Append the suffix too.

;; // old:  01901234999

;; //               999 Suffix

;; //       0190        Fastmatch

;; //       01901234    prefix, Config-Rule: 01901234=0521321

;; // new:  0521321999

;;

;; The rewrite-numbers function take care of reloads/a HUP signal.

 

[RasSrv::RewriteE164]

;; Only if an e164 number begins with ;Fastmatch; the

;; the further rewriting is done. Only one #Fastmatch# can be given.

;Fastmatch=

;0190703100=052418088663

;01903142=

0521178260

;5241908601903142=521178260

;7777.=.

;%%%%48=48

 

;; Это пошли запреты и замены

;; запретим звонить на номер 2-115, просто заменим эту посылку на 0, устройство обрежет звонок

Fastmach=2115

2115=0

;; звонок на номер 5-115 переведем на 5-105

Fastmach=5115

5115=5105

;; звонок на номер 9-112 переведем на 2-102

Fastmach=9112

9112=2102

 

 

                     

 

;---------------------------------------------------------

[FileAcct]

; a full path to a file where CDRs will be logged

;;  пишем лог звонков

DetailFile=/var/log/gkkbp.log

; 1 to use status interface compatible CDRs, 0 to build CDR from CDRString

StandardCDRFormat=1

; parametrized CDR format string

CDRString=%s|%u|%{Calling-Station-Id}|%{Called-Station-Id}|%d|%c

; timestamp format for CDR strings

TimestampFormat=ISO8601

; hourly - once per hour

; daily - once per day,

; weekly - once per week,

; monthly - once per month

Rotate=hourly

; For weekly rotation:

;  Mon, Tue, Wed, Thu, Fri, Sat, Sun

;  Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday

;  1, 2, 3, 4, 5, 6, 0

;RotateDay=Sun

; For monthly rotation (31th of each month, or the last day of the month

; if it has less than 31 days)

; RotateDay=31

; For daily, weekly and monthly rotation (rotation will be performed at 4:00)

;RotateTime=4:00

; For hourly rotation (rotation will be performed at 0:59, 1:59, ...)

 RotateTime=46  

 

 

                        

Запускаем Гейткипер

 

>/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 - получаем консоль гейткипера.

По команде « ? » получаем список всех подключенных устройств. Команда help выдаст еще чего-то.

 

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

 

Мы заведомо не занимались вопросами защиты - после установки системы системный администратор самостоятельно для себя должен решить что разрешается а что нет. Это не описание Call-центра. Это простая корпоративная система телефонии.

 

Результат: система работает. Осматриваемся, читаем документацию, звоним, смотрим самостоятельно ПРИ РАБОТАЮЩЕЙ СИСТЕМЕ что можно сделать лучше.

 

После некоторого времени эксплуатации системы замечаем, что нас перестает устраивать два момента:

 

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

 

 

 

Теперь блок питания. Решение простое. В устройстве стоит блок питания на 5 и 3.3 вольта. Достаточно неудачный. Заменим. В любой мастерской по ремонту компьютеров на компьютерный. С вентилятором. У нас не выставка - пусть радом стоит блок. Нам красота - не первостепенное. Главное надежность. Разбираться (когда система работает) сколько времени уйдет на ремонт фирменного блока и куда его надо отправлять по почте - нет времени. Система в работе. Каждый день перерыва - мы теряем деньги, слушаем волны недовольства. Действия в ремонте простые - не хотят делать - есть другие умельцы. Любой ремонт обслуживающий компьютерную технику. Спорить не стоит - если не хотят делать - заставить невозможно. Это диагноз. Бездельники. Состояние души. Единственное утешение - подобное решение для FXO работает и его сделали очень быстро. Стоимость была - стоимость блока питания для P-4 компьютера, 300 Вт + 50% стоимости блока питания - за работу. На все ушло 1 день.

 

 

Теперь для тех у кого НЕТ НИКАКОЙ ВОЗМОЖНОСТИ искать вменяемых сервисменов.

 

ВСЕ ЧТО НАПИСАНО НИЖЕ ПО ПЕРЕДЕЛКЕ БЛОКА ПИТАНИЯ – ОТВЕТСТВЕННОСТЬ ПЕРЕДЕЛЫВАЮЩЕГО – Я ЗА ВАШЕ ОБОРУДОВАНИЕ И ДЕЙСТВИЯ ОТВЕТСТВЕННОСТИ НЕ НЕСУ.

 

 Итак, блок питания. Для Р-4. В пучке проводов должны быть следующие. Это о типе блока – если таковых нет – ищите другой блок. Я не разбирался – «а блок для АМД подходит» или «а фирменный блок для ДЕЛЛ подойдет». Должны быть:

-         черный – это земля – GND

-         красный – это +5 вольт

-         оранжевый - +3.3 вольта

-         зеленый – это включение питания

 

Порядок действий

-         обычной развернутой скрепкой соединяем в колодке разъемы с зеленым и черным (любым из черных) проводом – блок должен запуститься

-         тестером удостоверяемся в напряжениях 5 и 3.3 вольта (черный – красный/оранжевый и точно ли 5 и 3.3 или блок битый)

-         ищем колодку типа отключения CD на мейнборд – через нее будем подключать питание

-         дальше – все по вкусу выполняющего «модернизацию»

§         обрезаем лишни провода в блоке питания (его придется вскрыть)

§         зеленый-черный паяем на выключатель VoIP ящика (будем включать-выключать блок питания)

§         черный – оранжевый – красный – на колодку и олодку одеваем на разъем питания VoIP (на мейнборде). Куда подавать что – есть маркировка на мейнборде.

§         жестко крепим провод внутри VoIP ящика – чтобы не вырвало при переноске или при установке.

§         обычно в блоках в минимальный пределах можно подстроить напряжения 5 и 3.3 вольта – дошлжно стоять несколдько

На этом модернизация заканчивается. Работаем СТАБИЛЬНО дальше.

 

 

 

 

B. Yasynetskyy

iasb@yahoo.com

M.Yasynetska

marsha@list.ru

1.0 - 6.11.2005

1.01 - 19.03.2006

04-сентября-2006

 

Используются технологии uCoz