Asterisk™: будущее телефонии Второе издание - Меггелен Джим Ван
Если этот параметр задан, Asterisk деактивирует вычисление контрольных сумм UDP пакетов и не будет проверять контрольные суммы UDP от систем, поддерживающих эту функцию: nochecksums=yes regcontext (канал)
Задавая контекст, содержащий некоторые команды, можно сконфигурировать Asterisk на выполнение ряда действий при регистрации равноправного участника сети на вашем сервере. Эта опция используется в сочетании с regexten, определяющей, какой добавочный номер должен быть выполнен. Если параметр regexten не задан, в качестве добавочного номера используется имя равноправного участника. Asterisk будет динамически создавать и уничтожать для добавочного номера NoOp в приоритете 1. Все действия, которые будут выполняться при регистрации, должны начинаться с приоритета 2. Может быть задано несколько regexten, разделенных символом &. regcontext задается для каждого равноправного участника или глобально: regcontext=зарегистрированные-телефоны regexten (канал)
Опция regexten используется в сочетании с regcontext для определения добавочного номера, выполняемого в заданном контексте. Если опция regexten не задана явно, в качестве добавочного номера для сопоставления используется имя равноправного участника сети:
regexten=мойтелефон resyncthreshold (канал)
Порог ресинхронизации используется для восстановления синхронизации буфера, компенсирующего задержки, если после получения нескольких кадров выявлено существенное отклонение, при условии что отклонение было обусловлено путаницей с временными метками. Порог ресинхронизации определяется как замеренная флуктуация1 плюс значение resyncthreshold в миллисекундах: resyncthreshold=1000 rtautoclear (глобальный)
Этот параметр определяет, должна ли Asterisk автоматически завершать действие регистрации соединений типа friend, созданных «на лету», по тому же графику, как если бы они были зарегистрированы обычным способом. Если задано значение yes, по истечении срока действия регистрации friend исчезнет из конфигурации до следующей регистрации. Если задано целое значение, регистрация будет действительна в течение этого количества секунд, а не обычного срока действия регистрации: rtautoclear=yes|no|количествосекунд rtcachefriends (глобальный)
Если rtcachefriends включен, Asterisk будет кэшировать соединения типа friend, регистрирующиеся в режиме реального времени, точно так же, как если бы они поступали из iax.conf. Это часто помогает в таких вопросах, как оповещение о непросмотренных сообщениях для равноправных участников сети, зарегистрировавшихся в режиме реального времени: rtcachefriends=yes|no rtignoreregexpire (глобальный)
Если для параметра rtignoreregexpire задано значение yes и срок регистрации равноправного участника сети, зарегистрировавшегося в режиме реального времени, истек (на основании срока действия регистрации), Asterisk продолжит использовать IP-адрес и порт, хранящиеся в базе данных: rtignoreregexpire=yes|no rtupdate (глобальный)
Если задано значение yes, Asterisk обновит при регистрации IP-ад- рес, порт вызова и срок действия регистрации равноправного участника сети. Значение по умолчанию - yes: rtupdate=yes|no tos (глобальный)
Asterisk может задавать в IP-заголовке биты типа обслуживания (Type of Service, TOS), чтобы способствовать повышению производительности в маршрутизаторах, которые учитывают TOS-биты при определении маршрутов. Допустимыми являются такие значения: CS0, CS1, CS2, CS3, CS4, CS5, CS6, CS7, AF11, AF12, AF13, AF21, AF22, AF23, AF31,
Флуктуация - случайное отклонение величины, характеризующей систему из большого числа частиц, от ее среднего значения. - Примеч. науч.ред.
AF32, AF33, AF41, AF42, AF43 и ef (expedited forwarding - срочная пересылка). Также для TOS-битов может использоваться числовое значение.
Больше информации можно найти в файле doc/ip-tos.txt в папке исходного кода Asterisk. trunk (канал)
Функция объединения каналов IAX2 позволяет Asterisk отправлять голосовые данные (в виде мини-кадров) из нескольких каналов под одним заголовком. Сокращение дополнительных издержек делает протокол IAX2 более эффективным при отправке нескольких потоков в одну конечную точку (обычно на другой сервер Asterisk): trunk=yes|no trunkfreq (канал)
trunkfreq используется для управления частотой отправки сообщений по магистральному каналу. Задается в миллисекундах. Сообщения отправляются вместе с командой trunk=yes: trunkfreq=20 trunktimestamps (канал)
Определяет, должна ли Asterisk посылать временные метки для каждого отдельного подкадра, входящего в состав магистрального кадра (trunk frame). При передаче этих временных меток немного увеличивается требуемая полоса пропускания (менее чем на 1 Кбит/с
Извлечение информации диалплана с удаленного сервера Asterisk
Asterisk может извлекать информацию диалплана с другого сервера Asterisk, используя выражение switch =>. Когда это происходит, драйвер IAX-канала Asterisk должен дождаться ответа от удаленного сервера, прежде чем сможет продолжать выполнение всех остальных связанных с IAX процессов. Это доставляет особенно много неприятностей, когда имеется множество вложенных выражений switch: если выражение switch указывает на несколько серверов, результат может возвратиться с ощутимой задержкой.
Если для глобальной опции iaxcompat задано значение yes, при осуществлении поиска switch Asterisk будет порождать отдельный поток. Использование этого потока позволяет драйверу IAX-канала продолжать выполнение других процессов, пока поток ожидает ответа. Эта опция обусловливает небольшие потери производительности: iaxcompat=yes|no
на вызов), но они гарантируют надежную передачу временных меток кадров из конца в конец. Если оба конца всех ваших магистральных каналов направляются прямо в TDM и значение trunkfreq равно длине кадра используемого кодека, вероятно, можно опустить этот параметр. Получатель также должен поддерживать эту функцию, хотя необязательно, чтобы она была у него активирована: trunktimestamps=yes|no
Регистрация на других серверах с помощью выражений register
Выражение регистрации register => используется для регистрации вашего сервера Asterisk на удаленном сервере. Это позволяет удаленному концу соединения знать ваше местонахождение на случай, если вы сконфигурированы с динамическим IP-адресом. Заметьте, что выражения register используются, только если вы сконфигурированы на удаленном конце как равноправный участник сети и когда host=dynamic. Основной формат выражения register:
register => имяпользователя: пароль@удаленный-хост пароль является необязательным параметром (если не сконфигурирован в удаленной системе).
В качестве альтернативы можно задать RSA-ключ, заключив его имя[142]в квадратные скобки ([]):
register => имяпользователя:[имя-rsa-ключа]@удаленный-хост По умолчанию запросы register будут посылаться через порт 4569. Их можно направить на другой порт, явно задав его:
register => имяпользователя:пароль@удаленный-хост:1234
Описания IAX-каналов
Теперь, когда определены общие настройки, можно приступать к описанию каналов. Если предполагается принимать анонимные IAX-вы- зовы, рекомендуется создать гостевой канал. Это очень распространенный способ связи в сообществе Asterisk. Прежде чем решить, что это не для вас, подумайте о том, что, если вы хотите предоставить кому-либо возможность связи с вами через IAX (без конфигурации специальной учетной записи), он должен соединяться как гость. Эта учетная запись, в сущности, становится вашим «телефонным номером по протоколу IAX». Описание гостевого канала должно выглядеть примерно так: [guest] type=user context=incoming callerid="Incoming IAX Guest"
Несомненно, спамеры найдут способ доступа к этим адресам, но в ближайшем обозримом будущем это не представляет проблемы. В долгосрочной перспективе, вероятно, будет использоваться DUNDi (больше информации об этом вы найдете в главе 14).