english versionDownload PDF in english
 
 Скачать PDF версию на русском языке


Использование готовых VoIP продуктов

Назаров А.Г., к.т.н, IntegrIT

This e-mail address is being protected from spambots. You need JavaScript enabled to view it


Тенденции развития оборудования связи таковы, что постепенно сложность реализации устройств переносится с аппаратного аспекта на программный. Причин тому несколько – это и усложнение протоколов, поддержка множества новых сервисов, требование совместимости со стандартами и оборудованием других производителей и прочee. В современной телефонии это проявляется особенно ярко. Объемы программного обеспечения (ПО) для оборудования даже относительно невысокой сложности составляют уже несколько сотен тысяч строк программного кода, а в сложных проектах размер кода измеряется миллионами строк. Трудозатраты на самостоятельную разработку всего ПО в таком объеме могут составлять сотни человеко-месяцев.

Приведем типичные размеры исходных кодов некоторых компонентов

Компонент

Размер, тыс.строк

кодек G .729.1

50

кодек AMR - NB

50

акустический эхокомпенсатор

25

линейный эхокомпенсатор

20

RTP стример

10

SIP (в зависимости от набора поддерживаемых сервисов)

65 -100

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

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

Компания IntegrIT , будучи одним из таких поставщиков, предлагает рынку целый спектр разнообразных компонентов, готовых для встраивания как в существующие VoIP проекты, так и являющихся основой новых законченных продуктов.

Данная статья посвящена вопросам использования готовых программных продуктов для VoIP систем, особенностям их использования и адаптации к оборудованию.

Системные требования к ПО

Большие объемы программного кода накладывают и дополнительные требования, как к архитектуре системы, так и к методам тестирования на разных уровнях. Первым и очевидным набором требований является

  • структурирование системы на уровни

  • четкое выделение функционала компонентов и их функционального интерфейса

  • минимизация связей между компонентами

  • предоставление средств внутренней диагностики

Требование кроссплатформенности стоит отметить отдельно. Кроссплатформенность в широком смысле – как поддержка разнообразных процессоров, так и поддержка различных операционных систем, – хоть и не является абсолютным требованием к программному обеспечению, но является весьма желательной для производителей оборудования с точки зрения более легкого расширения линейки продуктов, адаптации к новым более мощным или более дешевым аппаратным средствам.


Программная реализация и специфичные требования работы в режиме жесткого реального времени дополняют этот набор требований:

  • предсказуемость ресурсопотребления каждым компонентом и наличие средств диагностики текущего потребления ресурсов

  • предотвращение дефрагментации памяти

  • наличие средств восстановления после сбоя

  • наличие средств конфигурирования

  • использование стандартизированного общего программного интерфейса к компонентам ( API ) для внутрисистемной интеграции

Последний вопрос является чрезвычайно важным в плане использования компонентов от разных производителей. Не случайно, большинство ведущих производителей предлагают к использованию всеми поставщиками программных продуктов VoIP свои стандартизованные интерфейсы. В частности, компания Texas Instruments предлагает использовать интерфейс XDAIS, совместимость с которым гарантирует важнейшие свойства программных компонентов с точки зрения их интеграции, как то

  • компоненты имеют одинаковые средства для инициализации и доступа к памяти

  • гарантируется возможность многократного инстанцирования объектов

  • специфицируется ресурсопотребление

  • гарантируется отсутствие пересечения имен при сборке

  • гарантируется отсутствие доступа к ресурсам, не специфицированным в интерфейсе: периферии, специальным регистрам процессора, прерываниям, другим объектам

Компания IntegrIT для большинства разработанных компонентов использует подмножество XDAIS API, дополнительно обеспечивая кроссплатформенность и оптимизацию потребления ресурсов. Большинство компонентов оптимизированы для наиболее популярных процессоров таких, как C64xx, ARM9e, ARM11 и обеспечивают минимально возможное потребление процессора в пересчете на один VoIP канал.

Примерное потребление ресурсов для типичных компонентов

Компонент

ARM9e

ARM11

C64xx

G 729 (кодер+декодер)

27

18

4.2

Акустический эхоподавитель

75

44

12

Детектор голосовой активности

4.2

2.7

0.7

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

Особенно важно это для компонентов, напрямую взаимодействующих с аналоговыми окончаниями: эхокомпенсаторы, кодеки, шумоподавители, детекторы голосовой активности и проч. Компания IntegrIT уделяет особенное внимание этому вопросу. Каждый компонент тщательно протестирован, например, линейный эхокомпенсатор снабжен объемом тестовых данных размером порядка 300 Мбайт. Однако эти VoIP компоненты не только протестированы с помощью широкого набора тестов, но и проверены нашими партнерами с помощью специализированного оборудования для тестирования качества речи.


В следующих главах рассмотрим в общих чертах архитектуру типичных VoIP систем и набор необходимых для них компонентов

VoIP решение в целом

Рассмотрим подробнее VoIP решение, предлагаемое компанией IntegrIT . Оно является гибко конфигурируемой основой для построения разнообразных VoIP устройств: шлюзов, IP -АТС, серверов конференц-связи, операторских пультов, цифровых и программных телефонов.


Структурно оно разделено на следующие уровни и части

  • сетевые протоколы

  • IP- телефония и ДВО

  • голосовой тракт

  • системные функции и драйверы

Уровни VoIP решения

Первый уровень обеспечивает пакетный интерфейс с сетью и набор необходимых стандартных протоколов ( ICMP, Telnet , TCP/UDP, TFTP , etc .). Он предоставляет стандартизованный сетевой интерфейс для всех остальных компонентов. Для поддержки специфично телефонной функциональности он также включает нижнеуровневую часть SIP протокола, которая поддерживает диалоги обмена между SIP -агентами, поддерживает и обслуживает соединения между ними.


Примерный набор компонентов VoIP решения

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

  • верхнеуровневые функции SIP протоколов, ответственные за переводы вызовов, удержание, конференс-связь, вмешательство и проч.

  • конечные автоматы и таймеры для обслуживания всех фаз телефонных соединений различных типов

  • средства управления голосовым трактом


Голосовой тракт содержит

  • компоненты обработки речи (эхо и шумоподавление, набор кодеков, проч.)

  • конференс-микшер для микширования речи абонентов и поддержки режима удержания вызова

  • набор компонентов аналоговой сигнализации ( CPT , АОН, детектор/регенератор/режектор DTMF , CallerID , и проч.)

  • RTP -стример для пакетизации речи

  • RTP -приемник конвертации асинхронного RTP -потока в синхронный аудио/ TDM сигнал с функциями компенсации джиттера и потерь пакетов

Это наиболее вычислительно нагруженная часть системы, особенно в случае, если требуется одновременно обрабатывать множество соединений.

Самый нижний уровень системных функций и драйверов являет собой сильно зависящую от операционной системы часть, которая содержит

  • загрузчик и подсистему обслуживания аварийных ситуаций

  • файловую систему и менеджер памяти

  • поддержка xml , zip и проч. необходимых форматов файлов для конфигурирования

  • набор драйверов периферии и интерфейс к операционной системе реального времени

Верхние три уровня работают асинхронно и связаны между собой через очереди сообщений. Голосовой канал предъявляет требования обслуживания в режиме реального времени, так как обрабатывает синхронные аудиопотоки. Такой дизайн дает необходимую надежность, гибкость и независимость реализации уровней. Помимо этого, такой дизайн обеспечивает переносимость решения на популярные двухядерные процессоры типа OMAP. В этом случае высоконагруженная часть системы – голосовой тракт – переносится в DSP ядро и работает под управлением ядра ОС реального времени DSP-BIOS , а все остальное работает на ядре ARM под управлением ОС Linux .

Любопытно сопоставить общие свойства ПО разных уровней по ряду параметров

Уровень

сетевые протоколы

IP -телефония и ДВО

голосовой тракт

системные функции и драйверы

Зависимость от ОС

средняя

слабая

слабая

сильная

Зависимость от процессора

средняя

слабая

сильная

сильная

Зависимость от типа приложения/шлюза

слабая

сильная

слабая

слабая

Общий объем

средний

большой

большой

малый

Как и ожидалось, сильная зависимость от процессора и ОС присутствует в последнем уровне. Однако в общем объеме ПО он весьма невелик.

ПО голосового тракта сильно зависит от типа процессора, так как требует специальной оптимизации под каждую разновидность ядра для обеспечения максимальной производительности. Однако, поставщики готовых решений, в том числе и компания IntegrIT , предлагают уже оптимизированные компоненты под наиболее популярные семейства процессоров. Таким образом, учитывая то, что ПО голосового тракта имеет значительный объем и может зависеть от процессора, приобретение готового решения может дать существенную экономию ресурсов на разработку.

Уровень IP -телефонии зависит в основном от функционала шлюза или пользовательского приложения, что вполне естественно. Безусловно, шлюз линейного комплекта отличается от шлюза абонентского комплекта или от программного телефона. Тем не менее, значительная часть этого ПО – обработка и маршрутизация вызовов, работа с планами нумерации и проч. – сохраняет преемственность. Поэтому, несмотря на большой объем программного кода, адаптация готовых решений может быть сделана существенно быстрее, нежели разработка кода “с нуля”.

Сетевой уровень не слишком сильно зависит от операционной системы, но с некоторыми оговорками. Действительно, в операционных системах типа Linux разница невелика, так как все они в той или иной степени поддерживают TCP-IP в ядре. С ядрами ОС реального времени (это касается в том числе и некоторых упрощенных реализаций Linux , например, uсLinux ) ситуация иная – необходимо использовать какую-либо стороннюю реализацию TCP - IP . В этом случае адаптация к операционной системе и процессору может занять некоторое время.

Хотелось бы также особенно подчеркнуть, что сетевой уровень состоит не только из готового TCP-IP стека, но включает и специфическую функциональность, связанную с управлением RTP -соединениями и SIP -диалогами. Эта часть системы может повлиять на общую задержку трафика, распределение общих ресурсов (например, повлечь дефрагментацию памяти). В многоканальных высоконагруженных системах это становится актуальным, так как производительность, надежность и бесперебойное обслуживание являются главными приоритетами. Поэтому использование апробированных коммерческих решений выглядит необходимым. Компания IntegrIT также предлагает свою реализацию сетевого уровня, адаптированную под различные операционные системы, в том числе и под ядро реального времени DSP-BIOS , написанную с учетом особенностей применения в VoIP системах.

Пример. Шлюз

Рассмотрим теперь пример адаптации VoIP решения к задаче построения обычного шлюза.

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

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

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

Заметим, что SIP сигнализация способна работать в обеих архитектурах. Поэтому, в принципе, однородная архитектура может быть впоследствии дополнена серверами ДВО, которые обеспечат расширенные сервисы для абонентов. Поэтому ниже мы будем рассматривать однородную систему.

С точки зрения номенклатуры изделий, шлюз должен включать

  • шлюз абонентского комплекта, обеспечивающий доступ к аналоговым телефонным окончаниям

  • шлюз линейного комплекта, обеспечивающий проключение в телефонную сеть общего пользования (ТФОП) через набор соединительных линий

  • инфраструктурное оборудование (коммутаторы, источники питания и проч.)

В качестве вычислительного ядра абонентского комплекта следует, очевидно, применять высокопроизводительные процессоры. Это может быть как DSP среднего класса, так и процессоры ARM , работающие на высокой тактовой частоте.


Рассмотрим подробнее шлюз абонентского комплекта. Мы видим, что он включает практически все основные компоненты VoIP , рассмотренные выше. Основное отличие лежит в наборе функционала голосового канала:

  • не нужна некоторая часть аналоговой сигнализации (детекторы тональной сигнализации, АОН, CallerID , режектор DTMF )

  • список поддерживаемых кодеков обычно ограничивается G.711 и G.729, так как большинство серийно выпускаемых цифровых телефонов поддерживают только их

  • для подавления эхо используется линейный эхоподавитель, акустический не нужен


В шлюзе линейного комплекта, наоборот, необходима та часть аналоговой сигнализации, которая не требуется в абонентском комплекте. Также отличается он и в уровня IP -телефонии, так как обеспечивает другой тип шлюзования. Отличается шлюз и типом обслуживаемого абонентского окончания ( FXO , а не FXS ) и, как следствие, драйверами соответствующей периферии.


Однако мы видим, что процентов на 90 шлюзы одинаковы, что и обеспечивает общность ПО для них.

Сокращение сроков разработки

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

Как уже отмечалось выше, адаптация готовых решений вместо проектирования “с нуля” уже дает временной выигрыш. Но это не все. Надо учесть особенности разработки оборудования и типовой цикл его проектирования. Подходом компании IntegrIT является сопряжение этапности и сроков проектирования ПО с соответствующими этапами разработки оборудования.

Рассмотрим типичный цикл проектирования

  • первый этап – проектирование и изготовление макета. Обычно результатом этого этапа бывает прототип изделия или наиболее существенной его части. При этом проверяются основные аппаратные решения, в том числе и в части выбора основной элементной базы.

  • модификация макета до опытного образца. Здесь происходит коррекция инженерных решений с изготовлением нескольких экземпляров изделия. На этом этапе также проясняются разнообразные вопросы, касающиеся тестирования изделий, в том числе и подготавливаются методики испытаний. Этап заканчивается испытаниями опытных образцов

  • подготовка к производству. На этом этапе изделие может быть незначительно модифицировано с целью упрощения его производства, уменьшению номенклатуры компонентов и проч. Здесь же проводятся дополнительные испытания.


Наиболее длительными являются первые два этапа, которые могут длиться 3-6 месяцев каждый в зависимости от сложности. Очевидно, что если начинать проектирование ПО только по окончанию второго этапа, то, во-первых, это увеличит сроки, а во-вторых, не даст возможности достоверно проверить все инженерные решения, так как функциональность изделия без полноценного программного обеспечения может быть проверена только в весьма ограниченном объеме. Компания IntegrIT , предлагая клиентам сотрудничество по разработке оборудования, берет на себя адаптацию своих решений к оборудованию заказчика, делая это в параллель с циклом разработки этого оборудования. При этом типичный цикл также состоит из 3 этапов:

  • на первом этапе делается прототип ПО. Целью этого этапа является запуск ПО в базовом функционале на макете заказчика, возможно, без поддержки каких-то специфичных функций. Дополнительно, подготавливаются процедура самотестирования изделия, которая помогает проверить исправность всех узлов.

  • на втором этапе ПО дополняется всеми необходимыми функциональными блоками, оптимизируется до требуемой производительности, модифицируется для перехода от макета на опытный образец. Совместно с заказчиком разрабатывается программа испытаний, которые уже смогут проверить весь функционал изделия.

  • на третьем этапе производятся незначительные коррекции ПО и подготавливается необходимая документация.

Типичный цикл проектирования изделия и ПО для него

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

Таким образом, сроки и этапность работ по программному и аппаратному обеспечению оказываются сопряженными и общие сроки проектирования изделия не увеличиваются.

Заключение

Таким образом, можно сделать вывод, что для быстрого выхода на рынок, разработки качественного телекоммуникационного оборудования, обеспечения требований совместимости, производительности необходимо использовать готовые продукты VoIP . Они должны обладать перечнем свойств, упрощающих их использование и гарантирующих качество.

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

Компания IntegrIT предлагает широкий выбор компонентов VoIP телефонии, которые могут быть использованы в различных сферах – от высокопроизводительного оборудования до оконечных абонентских устройств на базе мобильных процессоров последнего поколения. Масштабируемость определяется кроссплатформенностью и поддержкой целого ряда процессоров: ARM9e, ARM11, Cortex, Marvell Kirkwood/Armada , C64xx/ DaVinci/OMAP , Tensilica HiFi2/ConnXD2, x86 и операционных систем DSP-BIOS, Linux, Maemo/MeeGo , Windows, Windows CE/Mobile, Android.

Подробнее о продуктах компании можно узнать по ссылке www.integrit.com/products