PJSIP. Глубокая настройка глобальных параметров
О библиотеке pjsip написано не мало статей, но в большинстве из них внимание уделяют по большей степени таким вещам как конечные точки (эндпоинты), транспорт, контакты, регистрации и прочее. В данной же статье будет подробно рассмотрена секции global и system файла конфигурации pjsip.conf и их опции. О секциях system и global Вообще, прежде чем перейти к […]
О библиотеке pjsip написано не мало статей, но в большинстве из них внимание уделяют по большей степени таким вещам как конечные точки (эндпоинты), транспорт, контакты, регистрации и прочее. В данной же статье будет подробно рассмотрена секции global и system файла конфигурации pjsip.conf и их опции.
О секциях system и global
Вообще, прежде чем перейти к описанию конкретной секции, стоит пару слов сказать о библиотеке в целом. Отличительной особенностью PJSIP стала модульность. Это означает что, конфигурационный файл разбит на модули или секции. В этих секциях задается конфигурация каждого объекта, и исключением становятся как раз секции system и global. Более подробно с описанием и назначением секций можно ознакомиться в статье «Pjsip. Базовая настройка. Идеология настройки»
Казалось бы, что system и global – это такие незначительные детали, упоминать о которых особо и смысла то нет, но имеющие огромное значение. Об этих секцях можно сказать, что они вместе являются своего рода аналогом раздела general файла sip.conf в chan_sip. Как и в нём, в этих секцях описываются параметры, которые будут применяться глобально ко всем sip коммуникациям, да и к системе в целом.
Вот так выглядят эти секции в конфигурационном файле:
![](https://voxlink.ru/wp-content/uploads/2020/06/Screenshot_1-2.png)
Опции system
А теперь разберем каждую секцию, какие опции в ней описываются и для чего они нужны. Для начала перечислим опции system и их назначение.
timer_t1 — устанавливает значение таймера транзакции T1 (задается в миллисекундах, значение по умолчанию = 500). Вообще таймер T1 необходим для определения того, как долго ждать перед повторной передачей запросов, которые не получают ответа при использовании ненадежного транспорта (например, UDP).
timer_b — устанавливает значение таймера транзакции B (задается в миллисекундах, значение по умолчанию 32000). Таймер B определяет максимальное время ожидания после отправки запроса INVITE до завершения транзакции.
compact_headers – устанавливает использование кратких форм общих имен заголовков SIP (значение по умолчанию no).
threadpool_initial_size – устанавливает начальное количество потоков в пуле потоков res_pjsip (значение по умолчанию 0).
threadpool_auto_increment – устанавливает число на которое увеличивается количество потоков при необходимости (значение по умолчанию 5).
threadpool_idle_timeout – устанавливает количество секунд, прежде чем удалить «пустой» поток (задается в секундах, значение по умолчанию 60).
threadpool_max_size – указывает максимальное количество потоков в пуле потоков res_pjsip. Значение 0 указывает на отсутствие максимума (значение по умолчанию 50).
disable_tcp_switch – отключает автоматическое переключение с UDP на TCP (значение по умолчанию yes).
type = system – задается тип секции system.
Так же стоит отметить, что есть еще 2 опции follow_early_media_fork (значение по умолчанию yes) и accept_multiple_sdp_answers (значение по умолчанию no), работающие с атрибутами SDP в ответах UAS и тэгом «To».
Опции global
Теперь стоит перечислить опции секции global и разобраться какая опция за что отвечает.
max_forwards – задает значение, используемое в заголовке Max-Forwards для запросов SIP (значение по умолчанию 70).
keep_alive_interval – задает интервал отправки keepalive-сообщений активным транспортам, ориентированным на соединение (задается в секундах, значение по умолчанию 90).
contact_expiration_check_interval – задается интервал для проверки «истекших» контактов (задается в секундах, значение по умолчанию 30).
disable_multi_domain – отключает поддержку нескольких доменов (значение по умолчанию no). Стоит отметить, что если этот параметр отключен, то повышается производительность в реальном времени из-за уменьшения количества запросов к БД.
unidentified_request_period – задается временной промежуток, в течение которого накапливаются неопознанные запросы (задается в секундах, значение по умолчанию 5).
unidentified_request_count – задается количество разрешенных неопознанных запросов с одного IP (значение по умолчанию 5).
user_agent –задается значение, используемое в заголовке User-Agent для запросов SIP и заголовок сервера для ответов SIP.
default_outbound_endpoint – задается эндпоинт, используемый при отправке исходящего запроса на URI (значение по умолчанию default_outbound_endpoint).
default_voicemail_extension – задается экстеншен голосовой почты для отправки в заголовке сообщения-уведомления NOTIFY, если он не указан в эндпоинте или в другом месте.
debug – включает или выключает лог отладки SIP (значение по умолчанию no, может принимать значения yes/no/[ip-адрес удаленного хоста для дебага]).
endpoint_identifier_order – устанавливает порядок обработки идентефикаторов эндпоинта (значение по умолчанию ip,username,anonymous).
default_from_user – задает значение для поля «From» SIP-запроса, если не будет варианта получше, например CallerID (значение по умолчанию asterisk).
default_realm – задает значение поля «realm» SIP-запроса (значение по умолчанию asterisk).
mwi_tps_queue_high — задается значение для триггера, при достижении которого будут выдаваться сообщения о высокой загрузке на Астериск и pjsip прекратит обрабатывать новые запросы, пока значение не снизится (значение по умолчанию 500).
mwi_tps_queue_low – задается значение для триггера, при котором загрузка Астериска перестает быть критической (значение по умолчанию -1).
mwi_disable_initial_unsolicited – включает/выключает отправку нежелательных MWI на все эндпоинты при запуске (значение по умолчанию no). Функция полезна, если у вас в системе больше тысячи эндпоинтов, чтобы ее сильно не загружать при старте.
ignore_uri_user_options – включает/выключает игнорирование параметров поля пользователя SIP URI (значение по умолчанию no). Т.е. если эта опция включена, и в пользовательском поле SIP URI есть точки с запятой, то поле усекается до первой точки с запятой. Это фактически делает точку с запятой неиспользуемым символом для имен эндпоинтов PJSIP, экстеншенов и aor. Функция может оказаться полезной для работы с провайдерами, использующими по той или иной причине пользовательские параметры.
use_callerid_contact – помещает CallerID в сгенерированный заголовок контакта (значение по умолчанию no).
send_contact_status_on_update_registration – включает отправку ami-события ContactStatus, когда устройство обновляет свою регистрацию (значение по умолчанию yes).
taskprocessor_overload_trigger – задает область действия триггера для перегрузок процессора задач (по умолчанию область глобальная, значение global). Принимает одно из трех значений:
- global – любая перегрузка процессора задач вызовет алерт-сообщения
- pjsip_only – алерт вызовут только перегрузки процессора задач pjsip
- none – выключает триггер
type = global задается тип секции global.
Заключение
В качестве заключения и своего рода вывода хотелось бы написать, что теме глобальных параметров PJSIP уделяется недостаточно внимания, и на мой взгляд очень зря, т.к. эта библиотека хороша своей гибкостью, а параметры, задаваемые в рассмотренных нами секциях, в этом играют значимую роль. Возможно, какие-либо параметры я мог пропустить, полный список можно найти на официальном сайте проекта или же в sample-файлах самого Астериска, описание прилагается, но на английском языке.
![](/wp-content/uploads/2019/05/Screenshot_2.jpg)
Остались вопросы?
Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.