wiki:Chapter2

Глава 2 Подготовка системы к установке Астериск Очень скоро, я уверен , однажды, в каком-то «совершенном» будущем, пока еще недостижимом, появится общедоступное место для компьютеров , заключающее в себе всю необходимую функциональность , содержащее все необходимое аппаратное обеспечение для организации соединений телекоммуникационных интерфейсов очень недорого и , в некоторых случаях, обыденно. Джим Диксон «История Zapata и как она относится к АСТ»

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

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

Таблица 2-1 перечисляет наиболее основные руководства , которые Вы должны учесть при планировании своей системы. Следующая секция более внимательно рассматривает различные вопросы проектирования и внедрения системы, влияющие на ее производительность.

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

Таблица 2-1 Требования к производительности

Назначение системыКоличество каналовМинимальные требования
Тестовая⇐5400 MHz x86, 256 MB RAM
SOHO (малый офис, до 3 линий и до 5 наборов пользователей)5-101 GHz x86, 512 MB RAM
Малый бизнес⇐253 GHz x86, 1 GB RAM
Средняя и большая>25Dual CPU, кластер из АТС

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

[xx] Если Вы уверены, что Вам необходима распределенная -АТС, Вам нужно будет изучить протокол DUNDi, Asterisk Realtime Architecture (ARA), func_odbc и другие инструменты баз данных. Это поможет Вам отделить требования к данным Вашей системы от диалплана Вашей -АТС, включая основной диалплан … карочеThis will help you to abstract the data your system requires from the

dialplan logic your Asterisk systems will utilize, allowing a generic set

of dialplan logic that can be used across multiple boxes, thereby allow-

ing you to scale more simply by adding additional boxes to the system.

Автор косноязычный ппц.

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

Результаты нагрузочных тестов

Джошуа Колп свел результаты тестовых измерений в таблицу, используя тестовую систему на базе AMD Athlon64 X2 4200+ with 1 GB RAM and 80 GB SATA hard drive, тестируя обычный SIP сценарий: звонок, проигрывание приветствия, ожидание действий на несколько секунд. Отметьте, пиковые нагрузки CPU больше во время чтения из RAM, нежели при чтении с HDD. Это может быть объяснено тем, что CPU ждет данные для обработки перед посылкой их в требуемый канал. Хотя, это всего лишь небольшой тест и ни в коей мере не отражает нагрузочные возможности Вашей системы. Вам предлагается провести тест собственноручно для определения числа одновременных звонков согласно Вашего диалплана и используемых приложений.

Таблица 2-2 Результаты нагрузочного теста по стандартному SIP сценарию с приложениями Wait() и Playback() - SIP возвращает звонящему эхо.

Одновременных звонков330350550
Нагрузка CPU149%14.8%57.6%
Средняя загрузка492560
Хранилище данныхHDDRAM diskRAM disk

Выбор серверного оборудования

Выбор сервера и сложая и простая задача. Простая потому что подойдет любая х86 платформа, но сложная, потому что производительность системы зависит от внимания, которое Вы уделите проектированию системы. При выборе платформы Вы должны внимательно учесть конструкцию Вашей системы и и какую функциональность требуется поддерживать. Это поможет Вам определить требования к CPU, материнской плате, источнику питания. Если Вы просто разрабатываете свой первый в целях изучения, можете пропустить эту секцию. Но если Вы проектируете отказоустойчивую систему для распространения, эти вопросы требуют рассмотрения.

Вопросы производительности

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

Вы должны учесть следующие факторы:

  • Максимальное количество одновременных звонков. Каждое новое соединение увеличивает нагрузку.
  • Процент траффика, требующего интенсивного использования прцессора по цифровой обработке сигнала кодеками (G.729 и GSM)

The Digital Signal Processing (DSP) work that Asterisk performs in software can

have a staggering impact on the number of concurrent calls it will support. A system

that might happily handle 50 concurrent G.711 calls could be brought to its knees

by a request to conference together 10 G.729 compressed channels. We’ll talk more

about G.729, GSM, G.711, and many other codecs in Chapter 8.

  • Как часто будут проводиться конференции и какой уровень активности ожидается?

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

  • Подавление эха

Подавление эха может потребоваться при любом звонке с или из ТФОП. Т.к. подавление эха это математическая функция, система с ней справится, но нагрузка на CPU может достигнуть предела. Не пугайтесь. Обсудим Подавление эха в Главе 8.

  • Написание бизнес-логики диалплана в скриптах

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

Довольно таки трудно ранжировать указанные факторы по степени влияния на производительность. Влияние каждого известно в общих словах, но вот подсчета точного влияния на производительность еще не сделано. Частично потому, что эффективность каждого компонента системы зависит от ряда факторов, таких как мощность CPU, чипсет и качество сборки, общая загруженность системы , оптимизация ядра Линукса, сетевой траффик, количество и типы ТФОП интерфейсов, и ТФОП трафик, даже не учитывая затраты на не- сервисы, исполняемые системой. Давайте взглянем на влияние следующих ключевых факторов:

Кодеки и переодировка

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

CPU (и FPU)

CPU состоит из нескольких частей, одна из которых — FPU , вычислитель с плавающей запятой. Скорость CPU, помноженная на эффективность его FPU , играют важнейшую роль в количестве одновременно поддерживаемых системой звонков. Следующая секция («Выбирая процессор») предлагает несколько основных инструкций для выбора CPU, удовлетворяющего требованиям Вашей системы.

Другие процессы, исполняемые системой

Будучи UNIX-родственной ОС, Линукс был спроектирован мультизадачным для нескольких различных процессов. Проблема возникает, когда один процесс, например , требует высокого уровня быстроты отклика от системы. По умолчанию, Линукс предоставляет ресурсы процессам в равной доли. Если Вы установите множество серверных приложений в систему, всем им будет предоставлен равный доступ к ресурсу CPU. Так как зачастую требует приоритетного доступа к CPU, не желая разделять его с другими приложениями, вынужденно с ними сосуществуя, может понадобиться специальная оптимизация системы. Оптимизация в-основном сводится к расстановке приоритетов приложениям в системе, и , во время установки, уделения внимания тому, какие приложения будут установлены в качестве сервиса.

Оптимизация ядра

Оптимизация ядра для нужд отдельного приложения это то, чем отличаются очень немногои сборки Линукса , и поэтому тут стоит немного поработать самим. Как самое элементарное ( в зависимости от вашего дистрибутива) , Вы должны скачать исходники ядра Линукса с  http://www.kernel.org и скомиллировать его на Вашей системе. Вы также можете установить патчи, улучшающие производительность, но это будет считаться хком официально поддерживаемого ядра.

Задержки запросов на прерывания

Задержки запросов на прерывания IRQ это период между поступлением запроса от периферийной карты (такой как карты телефонного интерфейса) на прерывание работы CPU , чем бы он ни был занят, до момента когда CPU действительно ответит, что он готов выполнить задачу от интерфейсной карты. Перифения , особенно карты Zaptel , очень нетерпимы к задержкам прерываний. This is not due to any problem with the cards so much as part of the nature of how a software-based TDM engine has to work. Если мы забуферизируем TDM данные и пошлем в шину одним большим пакетом, это может быть и более эффективно с точки зрения системы, но приведет к задержке между моментами , когда звук принят картой и когда передан в CPU на обработку. Это делает обработку TDM данных в режиме реального времени невозможной. При проектировании карт Zaptel было определено, что посылка данных каждую миллисекунду будет наилучшим с точки зрения передачи звука, но побочным эффектом этого является прерывание работы системы раз в миллисекунду. Это играло какую то роль на старых материнских латах, но сейчас уже потеряло свою актуальность.

[x] Линукс исторически имеет проблемы со способностью быстро обслуживать прерывания. Эта проблема достаточно серьезна для разработчиков аудио программ, поэтому они написали несколько патчей, устраняющих данную проблему. Уже давно идет вялотекущая дискуссия, как бы эти патчи включить в официальное ядро Линукса.

Версия ядра

официально поддерживается на Linux Version 2.6.

Дистрибутив Линукс

Дистрибутивы Линукса многочисленны и разнообразны. В следующей главе мы обсудим проблему выбора дистрибутива, и как загрузить и установить Линукс и вместе.

Выбор процессора

Так как требования Астерикса видвигаются в основном, большим количеством математических вычислений, разумно будет использовать процессор с мощным FPU. Обработка сигналов Астериксом требует скачкообразных нагрузок на вычислительную математическую мощность CPU. Эффективность решения этих задач зависит от эффективности FPU в составе CPU.

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

И Интел, и АМД имеют мощные FPU. Современные процессоры, независимо от изготовителя, имеют достаточную производительность.

Очевидным выводом будет то, что Вы должны использовать максимально мощный процессор, на который хватит денег. Но не торопитесь покупать наиболее проц на текущий момент. Вы должны всегда помнить ключевые требования к CPU. В конце концов, болид Формулы-1 не подходит для загруженных автострад. Более медленные процы и более холодные, значит позволяют строить менее энергоемкие безвентилляторные Астерикс-АТС для малых офисов , которые будут устойчиво работать например, в грязных условиях.

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

Малые системы

Малые системы довольно чвствительны к систмным требованиям Астерикса , но типичная нагрузка малых систем перекрывается обычно возможностями современного процессора.

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

Если ы установили Астерикс в образовательных целях, Вы можете посторить полнофункциональную систему на базе относительно маломощного CPU. Авторы книги тестировали несколько стендовых установок Астерикс на машинах с процессором Celeron частотой от 433MHz до 700MHz, но нагрузка была при этом минимальна (не более двух одновременных звонков).

AstLinux и Asterisk на OpenWRT

Если вы реальный специалист в Линуксе на встроенных платформах, Вам будет полезно посмотреть майл-лист по AstLinux и потестить творение Кристиана Кейлхофнера, или самостоятельно установить на платформу Linksys WRT54GL сборку Астерикса от Брайана Капоуча. Этот проект возвращает Астерикс к его истокам и позволяет строить невообразимо мощные АТС на очень недорогих платформах.

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

Средние системы

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

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

Большие системы

Большие системы (более 120 каналов) могут быть развернуты на многих системах и площадках , и вопросы производительности могут регулироваться со специально назначенных ПК. Очень большие Астерикс-АТС могут быть посторены таким образом.

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

Выбор материнской платы

Предвосхищая множество вопросов, мы в этой книге также не можем рекомендовать какую либо конкретную материнскую плату. Любые рекомендации станут тут-же неактуальны, при еженедельном появлении новых устройств. Но материнские платы как автомобили, схожи в основном, и различаются в деталях. А Астерикс- рабочее приложение, и детали важны.

Что мы можем сделать, так это пояснить, какого качества материнки точно будут работать хорошо с Астерикс и какие характеристики сво йственны хорошим материнским платам. Главная идея — сочетание стабильности и хорошей производительности. Вот несколько советов:

  • отдельные системные шины обеспечивают минимальную задержку. Если Вы планируете в своей АТС ТФОП линии через аналоговые или TRI интерфейсы(рассмотрим далее в главе) , то Zaptel карты будут генерировать прерывание 1000 раз в секунду. Имея на шине устройство, конкурирующее за прерывания с картой Zaptel, получим ухудшение производительности. Чипсеты от Интел и nVidia nForce для АМД показывют наилучшие результаты в этой области. Изучите чипсет на Вашей материнке , чтобы убедиться в отутствии проблем с задержками прерываний.
  • Если Вы используете карту Zaptel , Вы должны быть уверены, что BIOS позволяет ручное управление назначением прерываний. Как правило, материнки класса hi-end позволяют играть параметрами БИОСа, бюджетные материнки более простые. Это спорный момент, хорошо или плохо, но APIC материнки вообще позволяют назначать прерывания устройствам из операционной системы.
  • Серверные материнские платы в основном реализуют отличный от десктоповских стандарт PCI-шины. Наряду с остальными отличиями, главное — различное напряжение этих шин. В зависимости от имеющихся катр, Вы должны выбрать шину, 3.3В или 5В. Рисунок 2-1 демонстрирует визуальные отличия шин на 3.3В и 5В. Большинство серверных материнок имеют оба варианта шины, десктопные — только 5В.

[x] There is some evidence that suggests connecting together two com-

pletely separate, single-CPU systems may provide far more benefits

than simply using two processors in the same machine. You not

only double your CPU power, but you also achieve a much better

level of redundancy at a similar cost to a single-chassis, dual-CPU

machine. Keep in mind, though, that a dual-server Asterisk solu-

tion will be more complex to design than a single-machine solution.

  • Обсудим использование сногопроцессорных или многоядерных систем. Это все улучшает возможность системы по обслуживанию параллельных задач. Для Астерикс, это дает особое преимущество при вычислении задач с плавающей запятой.
  • Если Вам нужен модем, установите внешний через последовательный порт. Если у Вас внутренний, убедитесь, что это не «Win-модем» - это должно быть вполне самодостаточное устройство (учтите, что определить это непросто, если не невозможно)
  • Учтите, что при отказе встренной сетевой карты, нужно будет заменить всю материнскую плату. С другой стороны, при установке обычной сетевой карты, есть риск ее ненадежного механического соединения с материнской платой. Разумно будет использовать две карты, одну для внутренней сети телефонов и пользователей, а другую для соединения с внешней сетью, с VoIP провайдерами или сайтом. Сетевушки дешевы, рекомендуем всегда иметь их две.
  • Стабильность и качесво вашей Астерикс-АТС зависит от компонент, которые Вы используете. Астерикс зверь, и ему нужна хорошая кормежка. (Афтар жжот. Прим. Перев.) Как и во всем другом, высокая цена не значит наилучшее качество, так что Вы должны стать знатоком в компьютерных комплектующих.

Возвращаясь к уже сказанному, мы должны повторить, Астерикс встает на любую платформу, на которую встанет Линукс. Стендовые экземпляры, которые были построены при написании этой книги, включали все, начиная с Linksys WRT и кончая двухядерными Xeonами. Мы не заметили вообще никаких проблем при пяти одновременных звонках. Для обучения, не стесняйтесь ставить Астерикс на любую платформу, какую сможете раздобыть. Если Вы готовы пустить свою систему в производство, Вы должны понимать последствия от Вашего выбора платформы.

Требования к источнику питания

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

Компьютерные блоки питания

Блок питания жизненно важен для стабильности всей системы. Астерикс сам по себе не требует повышенной мощности питания, но все, что имеет отношение к мультимедиа (телефония, аудио, видео и т.д.) всегда чувствительны к качеству энергообеспечения.

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

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

Копите деньги на хороший блок питания (геймеры всегда воодушевляются такими идеями , so there are lots of choices out there)

Дополнительные блоки питания

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

Важно помнить, что каждый из независимых блоков питания должен быть подключен к своему отдельному источнику, имеющему свою отдельную цепь питания. В действительно критичных к отказу окружениях (например госпиталь), даже основная цепь питания всего здания резервируется, и дизель-генераторы всегда наготове на случай отказа основного питания ( как было на северо-западе США 15 августа 2003г.)

Окружение

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

Меры по улучшению питания и источники бесперебойного питания