KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программное обеспечение » Джим Меггелен - Asterisk™: будущее телефонии Второе издание

Джим Меггелен - Asterisk™: будущее телефонии Второе издание

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Джим Меггелен, "Asterisk™: будущее телефонии Второе издание" бесплатно, без регистрации.
Перейти на страницу:

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

Реальная интеграция технологий связи

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

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

A

Каналы VoIP

Каналы VoIP в Asterisk представляют средство соединения с протоколами, которые они поддерживают. Для использования протокола необходим конфигурационный файл, где содержатся общие параметры, описывающие, как система обрабатывает протокол, а также специальные параметры для каждого канала (или устройства), которые будут упоминаться в диалплане. В данном приложении подробно рассматриваются конфигурационные файлы протоколов IAX и SIP.

IAX

Конфигурационный файл IAX (iax.conf) содержит всю конфигурационную информацию, необходимую Asterisk для создания и управления каналами, работающими по протоколу IAX. Разделы файла отделены заголовками, сформированными словом, заключенным в квадратные скобки ([]). Имя в скобках будет именем канала за одним исключением: раздел [general] не является каналом, это область, где определяются глобальные параметры протокола.

В данном разделе рассматриваются различные общие и специальные настройки канала, определяемые в файле iax.conf. Мы опишем каждый параметр, а затем приведем пример его использования. Некоторые опции могут иметь несколько действительных аргументов. Список этих аргументов, разделенных символом вертикальной черты (|), приводится рядом с опцией. Например, запись bandwidth=low|medium|high означает, что параметр bandwidth принимает в качестве аргумента одно из значений: low, medium или high.

Комментарии можно вставлять в любом месте файла iax.conf. Текст комментария начинается с точки с запятой (;). Все, что располагается справа от точки с запятой, будет проигнорировано обработчиком Asterisk. Комментарии могут использоваться достаточно активно.

Общие настройки IAX

Первой незакомментированной строкой в файле iax.conf должен быть заголовок [general]. Параметры в этом разделе будут применяться ко всем соединениям, использующим данный протокол, если не определено другое в описании конкретного канала. Поскольку некоторые из этих настроек могут определяться для канала индивидуально, меткой (глобальный) мы обозначили настройки, которые всегда глобальны, а меткой (канал) - те, которые могут задаваться для каждого канала в отдельности. Если параметр задается в разделе [general], его не надо определять для каждого канала; его значение становится значением по умолчанию. Помните, что определение параметра в разделе [general] не запрещает задавать ему другое значение для конкретного канала; это просто делает данное значение значением по умолчанию. Также нельзя забывать, что отсутствие задания этих параметров может в некоторых случаях приводить к использованию системных значений по умолчанию.

Вот параметры, которые могут быть сконфигурированы: accountcode (канал)

Код учетной записи может определяться для каждого пользователя. Если задан, этот код учетной записи будет присваиваться записи вызова, если не задан код учетной записи конкретного пользователя. Заданное имя accountcode будет использоваться как имя файла в формате CSV в папке /var/log/asterisk/cdr-csv/, где хранятся записи параметров вызовов (Call Detail Records, CDRs) для соединений типа user/peer/friend:

accountcode=iax-имяпользователя adsi (канал)

Поддержка ADSI (Analog Display Services Interface - интерфейс сервисов для аналогового дисплея) может быть активирована только при наличии совместимого с ADSI телекоммуникационного оборудования на стороне клиента (CPE-оборудования): adsi=yes|no allow и disallow (канал)

Могут быть разрешены или запрещены определенные кодеки, что позволяет разработчику системы задавать перечень используемых кодеков. allow и disallow также могут быть определены для канала отдельно. Помните, что выражения allow в разделе [general] будут распространяться на все каналы, для которых не переопределено disallow=all. Согласование кодеков ведется в порядке их задания.

Лучшей практикой считается определять disallow=all, а затем в выражениях allow явно задавать каждый кодек, который вы желаете использовать. Если ничего не задано, предполагается allow=all:

disallow=all allow=ulaw allow=gsm allow=ilbc

amaflags (канал)

Система автоматической регистрации сообщений (Automatic Message Accounting, AMA) описана в наборе документов компании Telcordia, зарегистрированных как FR-AMA-1. Эти документы определяют стандартные механизмы формирования и передачи CDR. Можно задать один из четырех флагов AMA, который будет применяться ко всем IAX-соединениям:

am flags=default|omit|billing|documentation authdebug (глобальный)

Можно свести до минимума объем записи параметров аутентификации, отключив его с помощью authdebug=no. Запись параметров аутентификации активирована по умолчанию, если не отключена явно:

authdebug=no autokill (глобальный)

Чтобы максимально сократить опасность зависания в условиях недоступности хоста, можно задать для параметра autokill значение yes, тогда любое новое соединение будет разорвано при отсутствии подтверждения ACK в течение 2000 мс. (Очевидно, что это не рекомендуется для хостов с большой задержкой.) Вместо yes можно указать время ожидания в миллисекундах перед тем, как будет принято решение о недоступности равноправного участника сети. Параметр autokill задает время ожидания для всех равноправных участников, работающих по протоколу IAX2, но с помощью команды qualify его можно сконфигурировать для каждого равноправного участника в отдельности: autokill=1500 bandwidth (канал)

bandwidth - это сокращенная запись, которая поможет избежать применения disallow=all и множества выражений allow для задания используемых кодеков. Допустимыми опциями являются:

high

Допускаются все медиа-кодеки (G.723.1, GSM, plaw, alaw, G.726, ADPCM, slinear, LPC10, G.729, Speex, iLBC).

medium

Допускаются все кодеки, кроме slinear, plaw и alaw.

low

Допускаются все медиа-кодеки, кроме G.726 и ADPCM. bandwidth=low|medium|high bindport и bindaddr (глобальные)

Эти необязательные параметры позволяют задавать IP-интерфейс и порт, которые будут принимать IAX-соединения. Если они опущены, будет задан порт 4569, и все IP-адреса системы Asterisk будут принимать входящие IAX-соединения. Если задано несколько адресов привязки, IAX-соединения будет принимать только заданный интерфейс[141]. Использование вместо адреса 0.0.0.0 указывает Asterisk слушать все интерфейсы: bindport=4569 bindaddr=192.168.0.1

codecpriority (канал)

Опция codecpriority определяет, какие параметры при входящем вызове будут иметь преимущество при согласовании кодеков. Если этот параметр задан в разделе [general], выбранные опции будут наследоваться всеми пользовательскими настройками в конфигурационном файле канала; однако их можно задавать в отдельных пользовательских параметрах для более тонкой настройки. Если значения заданы и в [general], и в пользовательских разделах, настройки пользователя переопределяют настройки раздела [general]. Если этот параметр не задан, значение по умолчанию - host. К допустимым опциям относятся: caller

Вызывающая сторона имеет приоритет над хостом.

host

Хост имеет приоритет над вызывающей стороной.

disabled

Предпочтения кодеков не учитываются; это поведение по умолчанию, если не определены предпочтения кодеков.

reqonly

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

codecpriority=caller|host|disabled|reqonly

delayreject (глобальный)

Если по IAX-каналу поступает ошибочный пароль, это обеспечит задержку отправки сообщений отказа REGREQ или AUTHREP, что поможет защититься от атак с подбором паролей. Время задержки - 1000 мс: delayreject=yes|no forcejitterbuffer (канал)

Поскольку Asterisk пытается соединить каналы (конечные точки) напрямую, конечным точкам обычно позволено самостоятельно выполнять буферизацию входящих сообщений, которая будет компенсировать задержки. Однако, если конечные точки имеют слабую реализацию такой буферизации, можно заставить Asterisk выполнять ее всегда, независимо от условий. Чтобы принудительно активировать буферизацию входящих сообщений для компенсации задержки, необходимо задать forcejitterbuffer=yes: forcejitterbuffer=yes iaxthreads и iaxmaxthreads (глобальные)

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*