Реализации H.323 для Asterisk


Существующие реализации протокола


h323

Это Asterisk H.323 канал, который входит в стандартную поставку Asterisk и располагается в директории channels/h323 исходников сервера. Модуль chan_h323 может работать только в режиме H.323 Шлюза и не может работать в качестве gatekeeper'а, несмотря на то, что автор в данный момент работает над добавлением базовой функциональности для обеспечения работы функций gatekeeper'a. Для получения инструкций по инсталляции модуля и о необходимом дополнительном программном обеспечении и их версий, смотри содержимое файла: channels/h323/README.
Особенности конфигурации: драйвер работает на конкретном ИП адресе:
bindaddr=1.2.3.4 ; this SHALL contain a single, valid IP address for this machine

oh323

Это еще одна реализация H.323 канала (фактически, это самая первая из существующих реализаций этого протокола для asterisk), которая называется Asterisk-oh323 и разрабатывается "InAccess Networks" и ее можно найти по следующей ссылке: http://www.inaccessnetworks.com/projects/asterisk-oh323.

ooh323c

Модуль asterisk-ooh323c стал частью пакета asterisk-addons. Это еще одна новая (начиная с Июня 2005 года) реализация драйвера канала, которая основывается на реализации H.323 стека с откытым кодом (ooh323c) от "Objective systems". Этот стек реализован на языке C и содержит код необходимый только для поддержки канала сигнализации и управления протокола H.323. Вся обработка медиапотоков обрабатывается самостоятельно сервером Asterisk. Это дает возможность масштабирования возможностей обработки вызовов по протоколу H.323 в зависимости от тех возможностей сервера Asterisk, которые в нем содержаться по части обработки медиапотоков. Пользователи должны заметить, что обработка вызовов, по сути, аналогична тому, как это происходит для SIP вызовов. На данный момент (30-Января-2006), этот драйвер H.323 канала доступен из SVN "asterisk-addons" и, конечно, с сайта "Objective Systems": http://www.obj-sys.com/open. Замечание: Вам необходимо использовать SVN версию asterisk.

Для пользователей, начинающих знакомство с Астериск с готовых дистрибутивов TrixBox, Elastix он возможно покажется наиболее приемлемым вариантом использования - он входит в состав этих дистрибутивов. В отличии от chan_h323 драйвер слушает все доступные интерфейсы:
bindaddr=0.0.0.0 ;The IP address, asterisk should listen on for incoming H323 connections

Единственное, что нужно для его запуска - создать файл конфигурации исходя из примера Файл конфигурации ooh323.conf, и выполнить

CLI>module unload chan_ooh323.so
CLI>module load chan_ooh323.so

woomera

Протокол Woomera делает возможность поместить Вашу VOIP систему в один сервер, а вашу АТС в другой, и соединить два этих компонента с помощью простого raw-linear-over-udp протокола. chan_woomera - это драйвер канала asterisk, разработанный для интерфейса между сервером Asterisk и woomera. На данный момент (Июль 2005 года), этот код работает, но все еще имеет статус beta. В текущее время, Woomera поддерживает только H323, но скоро будет поддерживать протокол абстрактного уровня - "OPAL VOIP". который позволит работать с многими другими протоколами. Количество протоколов, поддерживаемых сервером Woomera, не зависит от реализации канала chan_woomera, который будет поддерживать все, что поддерживает сервер Woomera, т.к. все реализация протоколов вынесена в сервер.
С помощью канала woomera Вы можете соединить Ваш asterisk к серверу H.323 (на основе кода openh323), который позволяет использовать H.323 через транспорт IPv6. Вероятно, openh323 так же содержит в себе некоторый код для поддержки SIP протокола в CVS версии. И если он будет добавлен в chan_woomera, то у Вас так же появиться возможность использовать протокол SIP через IPv6.

Сравнение реализации протокола: h323 и oh323

  • h323 имеет большую производительность, но не содержит "jitter" буфера. Эта реализация использует RTP стек сервера Asterisk.
  • драйвер oh323 использует RTP/RTCP стек и реализацию адаптивного "jitter" буфера из пакета OpenH323. oh323 не использует голосовые кодеки из OpenH323, а использует их из Asterisk.

Замечания пользователей

  • Использование драйвера OH323 может привести к проблемам со стабильностью системы в целом.
  • Jeremy McNamara: performance and why he started chan_h323

Часто возникающие проблемы

  • Компиляция драйвера канала в директории "channels/h323" приводит к ошибкам с множеством сообщений об ошибках синтаксиса: Вы должны использовать в точности те версии PWLib и OpenH.323, которые указаны в файле README, содержащимся в данной директории.
  • Когда при соединении с клиентами по протоколу H.323 Вы не слышите звуки или звук имеет плохое качество и в консоли Asterisk появляются следующие сообщения: rtp.c:489 ast_rtp_read: Unknown RTP codec 107 received. Попробуйте отключить голосовой кодек "Speex" или некоторые другие голосовые кодеки на сервере Asterisk или на стороне клиента.
  • Компиляция пакета openh323 может потребовать солидных ресурсов памяти, обратите внимание, что для этой задачи у Вас имеется достаточно памяти RAM или объём SWAP имеет достаточную величину (по отзывам пользователей: требуется 380 MB RAM)

Тестирование с использованием Netmeeting

Программа MS Neetmeeting есть на многих машинах с ОС Windows, и ее очень часто можно использовать, как программу для первых тестов соединений по h.323 протоколу. Не забудьте только в ручную выставить нужный голосовой кодек в Netmeeting, который у Вас поддерживается в Asterisk. Например, не используйте кодек g723.1 (который там является кодеком по умолчанию), а установите, например, кодек A-Law или u-Law. Когда имеет значение полоса пропускания канала, используйте дополнительно инсталлируемые кодеки GSM для Netmeeting, которые можно взять здесь: Netmeeting-GSM. Просто скачайте и запустите instcodec.exe, выберете GSM кодеки и вернитесь в Netmeeting.

Так же существует плагин Netmeeting plugin для голосового кодека с открытым кодом - Speex, но его не очень то и просто установить: (Netmeeting Speex).

Следующий шаг - это редактирование файла h323.conf, где для Вашего netmeeting абонента установим "dtmfmode=inband".

Если Вы хотите вызывать различные номера екстеншенов на Asterisk, тогда возможно Вам понадобиться ввести адрес Вашего сервера Asterisk (или его IP адрес), в качестве шлюза (Gateway) (НЕ Gatekeeper'a!) в программе Netmeeting. После этого можно просто набирать номера екстеншенов. Без настройки Шлюза Вам придется совершать вызов с использованием IP адреса Вашего сервера Asterisk.

Ссылки по теме: