VoIP кластер на базе Asterisk

Тезисы выступления Кевина Флеминга на конференции 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 для распределенного конфигурирования/подготовки данных ?
- Какой наибольший кластер спроектирован ?



