
Тезисы выступления Кевина Флеминга на конференции VoIP Winter 2007
Построение высокопроизводительных VoIP кластеров на базе Asterisk
("Building VoIP Clusters with Asterisk, the Open Source Telephone Platform")
1. Преимущества ПО с открытым исходным кодом ( Open Source )
Экономическая
- низкая стоимость начального ознакомления и внедрения
Аналогия свободного рынка
- минимальное центральное планирование
- Сообщество "само-заинтересованных" разработчиков
- необходимость - мать изобретательства
- особенности и поправки согласно потребности сообщества, а значит рынка
- Быстрый вывод продукта на рынок, сокращенный цикл разработки
- Пользователями управляемая фиксация и исправление ощибок ( "Достаточно глаз - что бы заметить ошибку" )
- Открытый стандарт
- Если поддерживающая компания умирает - программный продукт остается
2. Место ПО с открытым кодом в Телефонии
- PSTN gateway
- Softswith
- Conferencing server
- Voice mail server
- Musik on hold server
- POTS gateway
3. Участие сообщества разработчиков
- Около 400 на сегодня со всего глобуса
- Более 2/3 новых основных свойств приложения ( новой функциональности ) вводится сообществом в каждой новой версии
4. Участие компании Digium в разработке
- Команда разработчиков возросла с 2х с полной занятостью в середине 2005 г до 12 человек в настоящее время, и будет увеличиваться
- Дизайн ядра Asterisk и архитектурные навороты и улучшения
- Интеграция с комерческими продуктами третьх фирм-разработчиков
5. История Asterisk версий
- Version 0.1.0 05 Дек 1999
Автор Марк Спенсер
Реализация под GPL соглашением
- Version 0.2.0 12 сент 2002
Добавлено Queues, Agents, MeetMe, Speax
- Version 0.3.0 07 фев 2003
Основные возможности SIP, G729, поддержка MGCP
- Version 0.4.0 11 апр 2003
IAX2, IAX2 trunking, добавлены макросы
- Version 0.5.0 09 сент 2003
iLBC, SIP & IAX2 Video поддержка
- Version 0.7.0 13 янв 2004
SCCP, AES шифрование, ODBC поддержка для CDR
- Version 0.9.0 12 апр 2004
CVS ветка как стабильная, ADPCM и DSP исправления
- Version 1.0.0 10 сент 2004
Добавлено CDR обработок, GR-303, OSP, NFAS, G726
- Version 1.2.0 16 ноя 2005
DUNDI ( Distributed Universal Number Discovery )
Asterisk Extension Language(AEL), Realtime для SIP, IAX users/peers
Native / Internal Musik on hold
шифрование в канале IAX2
Q.SIG
FastAGI - AGI через TCP
ODBC Voice Mail Storage
- Version 1.4.0 25 дек 2006
Переменная длина DTMF
T38 передача факса сквозь себя
Появление разделяемых (совместных) линий
Многопотоковый IAX2
IMAP Voice Mail Storage
Общий Jitter буфер
Asterisk Extentions Language ( AEL2 )
Jabber/Jingle/XMPP/GooleTalk
6. История разработки
- Отчеты об обнаруженных ошибках в среднем 8-10 в день
- 60-150 завершенного кода ПО в каждом релизе
- Ошибки по безопасноти исправляются командой по разработке ядра за 24-48 часа с момента поступления сообщения
АРХИТЕКТУРА
1.Масштабируемость
- Asterisk начал существование как простая АТС (PBX)
- но теперь поддерживает несколько сотен одновременных вызовов на современных ( US$2K ) серверах
- масштабируемость добавлена как необходимое свойство
- и один из первых способов наращивание решений из недорогих серверов для распределения нагрузки ( горизонтальный метод )
2. ПО-Компаньоны
- OpenSER - SIP proxy server используемый для обеспечения сбалансированности нагрузки, сервиса ошибок переполнения и большого количества регистраций
- astmanproxy - Asterisk Manager Interface ( AMI ) proxy для подключения приложений к кластеру Asterisk с несколькими серверами
- LinuxHA - среда высокой доступности для Linux серверов для обеспечения защиты от ошибок "свободен-занят"
3. Сервера приложений
Voice Mail Server ( Сервер голосовых сообщений )
- Поддерживает для всех существующих платформ VoIP или TDM
- Простая интеграция в существующие сети, включая поддержку SMDI для реального TDM свича
- Поддерживает множественное разделяемое хранение информации, включая NFS, ODBC базы днных и IMAP4 ( mail storage )
- Asterisk 1.6 будет поддерживать "управление событиями в кластере" так, что даже индикатор ожидания сообщением может быть легко использован несколькими серверами одновременно
Conferencing server ( проведение конференций )
- Поддерживает аудио конференции для всех существующих платформ VoIP или TDM
- Поддерживет большое количество возможностей по администрированию конференцией таких как приглашение - отключение модератором и др.
- Конференцию можно построить через любое количество Asterisk серверов
- AMI ( Asterisk Manager Interface ) обеспечивает WEB интерфейс для управления конференцией
Transcoding ( Перекодирование кодеков )
- Обеспечивает транскодирование для большинства голосовых кодеков ( G.711, G.722, G732.1, G.726, G.729, iLBC, Speex, GSM )
- В настоящее время не поддерживает транскодирование для видео кодеков
- Использует имеющиеся возможности обработки данных непосредственно процессором сервера, что упрощает добавление этого ресурса в кластер
- Может обеспечивать перекодировку протоколов, например SIP -> H323, для межсетевых соединений
Load Sharing ( Распределенная загрузка )
- требуется использование внешних продуктов для балансирования загрузки входящих запросов ( OpenSER для SIP протокола, TDM переключалель для ISDN/SS7 подключений )
- Простое разделение Номерного плана ( Dial Plan ) между серверами и координирование ресурсов
- AMI и SNMP обеспечивают простой метод для наблюдением за загрузкой серверов для балансировки трафика
Избыточность ( Redundancy )
- Для простого переключения VoIP, избыточность может быть использована балансировщиком загрузки для перенаправления вызовов на свободные сервера
- Использования механизма распределенного доступа к хранению данных позволяет серверам мгновенно получать доступ для перенаправления данных для всего кластера, с гарантией непротиворечивости перенаправления вызовов
- Не требуется поддержки специальных протоколов или линков между серверами для поддержки избыточности
Обработка ситуации отказа ( Failover )
- Текущая версия Asterisk ограничена активными/пассивными ситуациями отказа, так что невозмозможно избежать разрушения активных вызовов в момент сбоя сервера
- Большинство сценариев защиты от сбоев могут быть реализованы с использованием распределенного хранения данных и LinuxHA для передачи пассивному серверу контекста вызова активного - сбойного сервера по локальной сети
- Обработка отказа сервера может быть полностью завершена при помощи одного резервного сервера без специального дизайна или инженерных работ
DUNDi
- Distributed Universal Number Discovery
- Peer-to-peer, децентрализованный протокол
- использует RSA ключи и AES шифрование
- Основано на доверительной модели ( Trust model ):
A доверяет В
В доверяет С
А может принимать С
- Поддерживает утяжеленный ответ и кэширование
- DANDi в корпоративных сетях
- DUNDi для E.164 роутинга
ВЫВОДЫ
- Asterisk сегодня может быть использован для развертывания малых и больших кластерных систем для различного сервиса в корпорациях и системах передачи
- Большинство общих применений Asterisk в кластерах основано на использовании компаньон-продуктов для достижения Глобальных решений
- Asterisk может быть использован в существующих сетевых инфраструктурах просто, позволяя плавно перейти к Asterisk
Вопросы
- Наилучшее применение кластера Asterisk ?
- Инструменты или Front-end для распределенного конфигурирования/подготовки данных ?
- Какой наибольший кластер спроектирован ?

