FreePBX балансировка транков или распределение исходящих вызовов

Опубликовано в Asterisk

FreePBX trunkbalanceОчень часто бывают ситуации, когда провайдер GSM, согласно определенным тарифным планам, предоставляет определенное количество бесплатных минут, разговоров в месяц, например 100. Либо в тарифный план уже включено 100 минут в месяц, а последующие минуты оплачиваются по высокой стоимости. Используя Asterisk, а конкретнее FreePBX, в одном исходящем маршруте транки (внешние линии) занимаются по порядку очередности. Тем самым больше всего исходящих вызовов происходит именно с первого транка и баланс может уйти в минус, когда как на остальных, могут остаться бесплатные, неиспользованные минуты.

 Стандартными средствами FreePBX эту проблему решить трудоемко, и поэтому сообществом PBX Open Source Software Alliance был разработан внешний модуль для FreePBX, называется он trunkbalance. Модуль бесплатен и любой желающий может прислать свои/свой патч с дополнениями и исправлениями в git.
Для тестирования и описания функционирования данного модуля мы используем FreePBX 2.12 и Asterisk версии 11 (LTS). Модуль устанавливается достаточно стандартно для FreePBX и думаю здесь, на рассмотрение останавливается, особо не стоит.

После установки мы видим настройки модуля:

FreePBX trunkbalance Asterisk

Как видно можно вводить ограничения по времени, дням недели, месяцу (раздел Billing Cycle Configuration), маршрутизировать согласно временной группе, устанавливать лимиты по времени разговора и количеству совершенных вызовов.

Но для нас самым важным является именно балансировка (распределение) вызовов между транками (раздел Load Balancing Configuration).

Необходимые настройки мы производим в поле Load Ratio (Коэффициент нагрузки).

Load Ratio (LR): Если LR установлен целым числом, большим 1, модуль будет случайным образом разрешить или запрещать исходящий вызов, только на основе соотношения нагрузки. Здесь, нет определения, предыдущего использования транка и модуль, не пытается вычислить количество минут или звонков. Если вы хотите, случайным образом равномерно сбалансировать исходящие вызовы трех (n) транков, необходимо создать 2 (n-1) сбалансированных транков, в этом модуле, один с отношением нагрузки 3 (n) и один с коэффициентом нагрузки 2 (n-1). При определении исходящего маршрута (Outbound Route), необходимо прописать транки, так чтобы сбалансированный транк с LR=3 будет первым, LR = 2 будет вторым и стандартный транк будет третим. Вероятность при первом звонке, у первого транка 1/3, вероятность на второй вызов 1/3 (точнее, половина из оставшихся 2/3) у второго транка и третий транк получит 1/3 (или все из оставшихся). Чтобы отключить это правило введите 1.

Например:

У нас есть три транка gsm-01;gsm-02 и gsm-03. Соответственно создаем два транка: balance-gsm-01 и balance-gsm-02 в нашем модуле, с коэффициент нагрузки LR= 3 и LR= 2 соответственно.

FreePBX настройка транков

В исходящем маршруте прописываем транки в следующем порядке:

FreePBX настройка

В итоге, получаем нужную нам балансировку, где первый транк LR=(n), а последующий  LR=(n-1).

Коментарии: