Page tree
Skip to end of metadata
Go to start of metadata

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

В пределах группы авторизации может быть одна или несколько групп обработки. Каждая из групп обрабатывается своим Accounting-сервером, либо несколькими Accounting-серверами, работающими в режиме кластера. Корневой узел группы обработки должен быть выделен отдельным типом. Для простоты, корневые узлы группы авторизации и обработки могут быть объединены в один - таким во многих примерах в документации является корневое устройство "Access+Accounting".

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

В конфигурации корневого узла группы обработки (BGInetAccounting) обязательно нужно указать параметры тарификации и обработки соединений. Для этого нужно задать "worker", указав количество потоков для него, обработчики, которые будут работать в этом worker'е и их параметры. Каждый worker назначается с идентификатором, например, accounting.worker.1. и accounting.worker.2. Каждый обработчик также задаётся с идентификатором. Таким образом, может быть несколько worker'ов и несколько обработчиков в них.

От данных параметров зависит, как часто InetAccounting будет тарифицировать сессии и как быстро будет реагировать на изменения баланса, параметров тарифа и т.п, отправляя задания на изменения скорости/параметров сессий.

Параметры обработчика тарификации (tariffication):

  • minDeltaAmount - минимальная сумма нетарифицированного трафика, при которой тарифицировать соединение. Включает в себя все трафики в байтах плюс время в секундах, которое ещё не было протарифицировано;
  • delay - пауза между заданиями тарификации;
  • batchSize - максимальное количество протарифицированных соединений за одно задание;
  • checkAccountingPeriodError - флаг необходимости проверки ошибки учетного периода перед обработкой изменения опций из тарифа. Необходимость может быть вызвана прежде всего тем, что тарификатор не учитывает отсутствие учетного периода на отключенном договоре и при изменении набора опций, посылает команду на включение абонента. Возможные значения: 0 - отключено, 1 - включено. По умолчанию 0.

Параметры обработчика соединений без трафика (tracking - используется для отслеживания изменения опций модуля для соединений, у которых нет трафика):

  • delay (delay.millis) - пауза между заданиями в секундах (в миллисекундах);
  • batchSize - максимальное количество протарифицированных соединений за одно задание.

Параметры обработчика сервисов без соединений (serv.tracking - используется для отслеживания изменения опций модуля для сервисов, у которых нет сессии и, соответственно, нет трафика):

  • delay (delay.millis) - пауза между заданиями в секундах (в миллисекундах);
  • batchSize - максимальное количество протарифицированных соединений за одно задание;
  • servTypeIds - типы сервисов, которые нужно обрабатывать (если не указано - то все типы);
  • accountingPeriodActivate - нужно ли активировать учётные периоды при проверке. Возможные значения: 1 - активировать, 0 - не активировать. По умолчанию 0;

Параметры обработчика событий (event.tracking - предназначен для более быстрой реакции на события, например, изменение статуса договора, активация тарифной опции):

  • delay (delay.millis) - пауза между заданиями в секундах (в миллисекундах);
  • batchSize - максимальное количество обработанных сервисов за одно задание;
  • servDeviceState - нужно ли реагировать на событие об изменении текущего состояния сервиса на устройстве после его фиксации в базе данных ( InetServDeviceStateAndOptionsModifiedEvent ). Возможные значения: 0 - отключено, 1 - включено. По умолчанию 1;
  • payment - нужно ли реагировать на события изменения баланса. Возможные значения: 0 - отключено, 1 - включено. По умолчанию 1;
  • capacity - размер очереди обрабатываемых событий. По умолчанию 10000;
  • processDelay - задержка в миллисекундах перед обработкой каждого из событий. Необходимо для того, чтобы все приложения обновили свои кэши после внесенных изменений, которые порождают события. По умолчанию значение 1500 мс.  В случае обработки события InetServDeviceStateAndOptionsModifiedEvent значение задержки увеличивает на 3100 мс.

Параметры сброса в базу (flushing):

  • minDeltaAccount - минимальная сумма несброшенной наработки соединения, при которой нужно сбрасывать в базу;
  • delay (delay.millis) - пауза между заданиями в секундах (в миллисекундах);
  • batchSize - максимальное количество сброшенных соединений за одно задание;
  • disableServs - Если не null (null возможен, если данный параметр не задан вообще в конфигурации обработчика), то обрабатываются только обычные или только сервисы для неаутентифицированных;
  • lockTimeout - величина таймаута блокировки в миллисекундах. Значение по умолчанию - 15000 мс.

Параметры обработчика завершения сессий (finishing - завершает соединения, а также закрывает соединения по таймауту):

  • delay (delay.millis) - пауза между заданиями в секундах (в миллисекундах);
  • batchSize - максимальное количество протарифицированных соединений за одно задание;
  • finishBatchSize - ограничение числа завершенных соединений. По умолчанию 0;
  • lockTimeout - величина таймаута блокировки в миллисекундах. Значение по умолчанию - 15000 мс.

Пример конфигурации:

Конфигурация
# Количество потоков на worker
accounting.worker.1.thread.count=2
# Тарификатор:
# минимальная сумма трафика, при которой тарифицировать соединение
accounting.worker.1.tariffication.1.minDeltaAmount=0
# пауза между заданиями тарификации
accounting.worker.1.tariffication.1.delay=10
# максимальное количество тарифицируемых соединений за задание
accounting.worker.1.tariffication.1.batchSize=1000
# Трекер (обработка сессий без наработки):
# пауза между заданиями трекинга
accounting.worker.1.tracking.1.delay=10
# максимальное количество проверенных соединений за задание
accounting.worker.1.tracking.1.batchSize=1000
# Трекер (обработка сервисов модуля без активных сессий, по умолчанию не требуется):
# пауза между заданиями трекинга
accounting.worker.1.serv.tracking.1.delay=20
# максимальное количество проверенных соединений за задание
accounting.worker.1.serv.tracking.1.batchSize=100
# Трекер (обработка событий):
# пауза между заданиями трекинга (в миллисекундах)
accounting.worker.1.event.tracking.1.delay.millis=200
# максимальное количество проверенных сервисов за задание
accounting.worker.1.event.tracking.1.batchSize=500
 
# Количество потоков на worker
accounting.worker.2.thread.count=1
# Сброс в базу трафиков и наработки:
# минимальная наработка, при которой сбрасывать соединение в базу
accounting.worker.2.flushing.1.minDeltaAccount=0
# минимальная сумма трафика, при которой сбрасывать соединение в базу
accounting.worker.2.flushing.1.minDeltaAmount=0
# пауза между заданиями сброса в базу
accounting.worker.2.flushing.1.delay=20
# максимальное количество сброшенных соединений в базу за задание
accounting.worker.2.flushing.1.batchSize=500
 
# Количество потоков на worker
accounting.worker.3.thread.count=1
# Завершитель соединений:
# пауза между заданиями
accounting.worker.3.finishing.1.delay=20
# максимальное количество сброшенных соединений в базу за задание
accounting.worker.3.finishing.1.batchSize=500

Пример конфигурации с несколькими обработчиками тарификации (для более частой тарификации соединений с большим трафиком):

Конфигурация
# Количество потоков на worker
accounting.worker.1.thread.count=3
# Тарификатор:
# минимальная сумма трафика, при которой тарифицировать соединение
accounting.worker.1.tariffication.1.minDeltaAmount=104857600
# пауза между заданиями тарификации
accounting.worker.1.tariffication.1.delay=10
# максимальное количество тарифицируемых соединений за задание
accounting.worker.1.tariffication.1.batchSize=1000
accounting.worker.1.tariffication.2.minDeltaAmount=10485760
accounting.worker.1.tariffication.2.delay=10
accounting.worker.1.tariffication.2.batchSize=1000
accounting.worker.1.tariffication.3.minDeltaAmount=0
accounting.worker.1.tariffication.3.delay=15
accounting.worker.1.tariffication.3.batchSize=1000
# Трекер (обработка сессий без наработки):
# пауза между заданиями трекинга
accounting.worker.1.tracking.1.delay=20
# максимальное количество проверенных соединений за задание
accounting.worker.1.tracking.1.batchSize=1000
# Трекер (обработка событий):
# пауза между заданиями трекинга (в миллисекундах)
accounting.worker.1.event.tracking.1.delay.millis=200
# максимальное количество проверенных сервисов за задание
accounting.worker.1.event.tracking.1.batchSize=500
 
# Количество потоков на worker
accounting.worker.2.thread.count=1
# Сброс в базу трафиков и наработки:
# минимальная наработка, при которой сбрасывать соединения в базу
accounting.worker.2.flushing.1.minDeltaAccount=0
# минимальная сумма трафика, при которой сбрасывать соединение в базу
accounting.worker.2.flushing.1.minDeltaAmount=0
# пауза между заданиями сброса в базу
accounting.worker.2.flushing.1.delay=30
# максимальное количество сброшенных соединений в базу за задание
accounting.worker.2.flushing.1.batchSize=500
 
# Количество потоков на worker
accounting.worker.3.thread.count=1
# Завершитель соединений:
# пауза между заданиями
accounting.worker.3.finishing.1.delay=20
# максимальное количество сброшенных соединений в базу за задание
accounting.worker.3.finishing.1.batchSize=500

Для обработки сервисов без сессий нужно добавить ещё один обработчик (а также можно увеличить количество потоков для accounting.worker.1 или вынести обработчик в отдельный worker):

# Трекер (обработка сервисов без сессий):
# пауза между заданиями трекинга
accounting.worker.1.serv.tracking.1.delay=60
# максимальное количество проверенных сервисов за задание
accounting.worker.1.serv.tracking.1.batchSize=500
# типы сервисов, которые нужно обрабатывать, через запятую
# (если пусто - будут обрабатываться сервисы всех типов!)
accounting.worker.1.serv.tracking.1.servTypeIds=
# нужно ли активировать учетный период при обработке
# (по умолчанию учетный период активируется при авторизации по RADIUS/DHCP или появлении новой сессии)
accounting.worker.1.serv.tracking.1.accountingPeriodActivate=1
  • No labels