среда, 2 апреля 2025 г.

Заметки по поводу настройки OpenSIPS

 0) Логирование

-xlog и acc в LOCAL4 и Postgres

-настройка syslog-ng на запись LOCAL4 в opensips.log

-do_accounting("db|log","cdr|missed|failed") на начальный INVITE


1) Чёрные листы

-partition надо задать параметром, default не работает

-данные берутся из кэша, считываются из БД на старте, обновление через address_reload в cli


2) Регистрация, аутентификация, привязка к IP

-для аутентификации используются модули auth_db для доступа к таблице subscriber и auth для самой аутентификации

-данные зарегистрированного клиента сохраняются в таблицу location функцией save модуля registrar

-используются модули usrloc, registrar, auth, auth_db, signaling, tm, sl

-после аутентификации INVITE не забывать вызывать функцию consume_credentials(), чтобы удалить реквизиты из заголовка Authentication при дальнейшей пересылке

вторник, 1 апреля 2025 г.

Модули маршрутизации в OpenSIPS

CARRIERROUTE

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

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

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

Если модуль используется в маршруте ошибки (failure route), то необходимо вызвать функцию append_branch() после перезаписи RURI, чтобы сообщение ушло новому получателю. 

Зависимости: tm, database (если используем БД)