{{tag>Услуги "Услуга 9" "RADIUS accounting" "Сбор Netflow для биллинга"}}
====== Accounting — учет трафика (услуга 9)======
{{indexmenu_n>3}}
FastPCRF поддерживает RADIUS accounting. FastDPI обрабатывает абонентский трафик и формирует Netflow-статистику, которая передается в fastPCRF. Далее fastPCRF агрегирует данные, преобразует их в формат RADIUS Accounting и отправляет на RADIUS-сервер.
Для активации RADIUS accounting в **''/etc/dpi/fastdpi.conf''** необходимо задать следующие параметры:
* Включение аккаунтинга:enable_acct=1
* Включение Netflow-статистики для биллинга:
# Статистика по биллингу абонента
netflow=4
# Тайм-аут отправки статистики
netflow_timeout=60
Данные по объему потребляемого трафика передаются в биллинговую систему по протоколу RADIUS Accounting через fastPCRF, а не напрямую через Netflow.\\
Параметр ''netflow'' является битовой маской и может принимать комбинированные значения. Например, для одновременного включения accounting и полной статистики (8) необходимо указать ''netflow=12''.
* Включение авторизации локальных пользователей:enable_auth=1
* Назначение абоненту услуги 9 (экспорт статистики для биллинга). В ответе на Access-Request должен присутствовать атрибут:VasExperts-Enable-Service="9:on"
**Для DHCP-авторизации:** учет трафика по IPv4 и IPv6 ведется в отдельных сессиях. При наличии у абонента IPv4-адреса и IPv6-префикса создаются две независимые accounting-сессии.\\
**Для PPPoE:** при выдаче IPv4 и IPv6 в рамках одного RADIUS-запроса учет ведется в одной сессии.
===== Дополнительные настройки =====
При запуске fastPCRF отправляет на RADIUS-сервер запрос Accounting-Request с атрибутом ''Acct-Status-Type=Accounting-On'', а при завершении — ''Accounting-Off''. В этих запросах передаются NAS-атрибуты, идентифицирующие сервер, и ''Acct-Session-Id=0''. Аналогичный запрос Accounting-On отправляется при переключении на резервный RADIUS-сервер.
Некоторые биллинговые системы требуют синхронизации процессов авторизации и аккаунтинга: перед отправкой Access-Request текущая accounting-сессия должна быть корректно завершена. Для включения такого режима используется параметр:
acct_auth_sync=1
При включенной синхронизации перед отправкой Access-Request выполняется проверка наличия активной accounting-сессии для IP-адреса абонента. Если сессия существует, отправляется Acct-Stop, ожидается подтверждение, после чего выполняется авторизация.
Дополнительно может быть задана задержка между подтверждением Acct-Stop и отправкой Access-Request:
acct_auth_sync_delay=0
Значение задается в секундах. Используется для учета задержек обработки в биллинговой системе.
Возможна настройка интерпретации направлений трафика. По умолчанию:
* входящий трафик — от сети к абоненту;
* исходящий — от абонента в сеть.
Для изменения направления используется параметр:
acct_swap_dir=0
* 0 — без изменений;
* 1 — инвертировать направления.
===== Rating group (группы тарификации) =====
Rating group (RG) используется для детализации учета трафика абонента в RADIUS Accounting. Использование RG возможно только при включенной услуге 9 (экспорт статистики для биллинга).
==== Настройка RG в fastDPI ====
Параметры хранилища и обработки RG:
* Количество групп: rating_group_count=0 Значение по умолчанию: 0 — RG отключены.
* Максимальное число абонентов с RG: rating_group_max_subs=0 Значение по умолчанию: 0 — RG отключены.
Инициализация хранилища RG выполняется только если включена биллинговая статистика.
Объем памяти для хранения RG-статистики рассчитывается по формуле:
memory_required = 32 * rating_group_count * rating_group_max_subs * num_thread
где:
* ''32'' — размер счетчиков на одну группу (в байтах);
* ''rating_group_count'' — количество групп;
* ''rating_group_max_subs'' — максимальное число абонентов;
* ''num_thread'' — количество потоков обработки.
Пример расчета для 10 тыс. абонентов, 256 RG и 8 потоков обработки — требуется 625M памяти:
rating_group_count = 256
rating_group_max_subs = 10000
num_thread = 8
memory_required = 32 * 256 * 10000 * 8 = 625M
При высокой нагрузке поток accounting-данных от fastDPI может превышать возможности обработки fastPCRF. В этом случае требуется тюнинг сетевого стека.
{{anchor:acct-pending-queue}}
==== Передача статистики RG в RADIUS Accounting ====
Статистика по RG передается в отдельных пакетах Interim-Update. Передаются данные только по ненулевым RG.\\
Из-за ограничения размера RADIUS-пакета (4096 байт) данные RG могут быть разбиты на несколько Interim-Update пакетов.
Для идентификации типа пакета используется новый VSA ''VasExperts-Acct-Type'' (id=28, vendor=43823, integer) со значениями:
* ''0'' — стандартный Interim Update Accounting;
* ''1'' — данные по RG.
Каждая RG и её счетчики передаются в **одном** VSA со следующими атрибутами:
* VasExperts-Acct-Rating-Group (short, 16-бит) — номер RG;
* VasExperts-Acct-Input-Octets-64;
* VasExperts-Acct-Output-Octets-64;
* VasExperts-Acct-Input-Packets-64;
* VasExperts-Acct-Output-Packets-64.
Счетчики пакетов и байт по направлениям выводятся в соответствии с опцией acct_swap_dir (как в Accounting).
Особенности передачи RG:
* RG являются опциональными; если у абонента нет RG, данные не передаются;
* если RADIUS не подтверждает прием RG-пакета, повторная отправка не выполняется — свежие данные уйдут в следующем Interim-Update;
* если у абонента есть RG-статистика, перед отправкой Acct-Stop сессии отправляются текущие данные RG.
==== Задание RG при авторизации абонента ====
RG задается на уровне абонента при авторизации через специальный профиль услуги 9 с именем 'RG':
VasExperts-Service-Profile :="9:RG"
Накопление статистики по RG возможно только при включенной услуге 9 (bill stat). Если услуга 9 отключается, RG также отключается.
Примеры:
* Услуга 9 включена, RG отключены (стандартный RADIUS Accounting): VasExperts-Enable-Service :="9:on"
* Услуга 9 включена, RG включены (передача данных RG): VasExperts-Service-Profile :="9:RG"
* Услуга 9 отключена, RG отключены (RADIUS Accounting не отправляется): VasExperts-Enable-Service :="9:off"
===== Внутреннее устройство =====
{{anchor:internals}}
База данных accounting размещена в fastPCRF и работает в памяти. Структура двухуровневая:
* raw-уровень — хранение исходных данных по IP-адресам;
* уровень агрегации — объединение данных в accounting-сессии.
Через CLI возможно:
* управление сессиями (старт/стоп);
* просмотр состояния и статистики.
При перезапуске или остановке fastPCRF все текущие accounting-сессии удаляются.
При перезапуске fastDPI счетчики трафика обнуляются. При старте отправляется Accounting-On, при остановке — Accounting-Off с соответствующими NAS-атрибутами.
===== Рестарт fastDPI =====
{{anchor:fastdpi_restart}}
При запуске и остановке fastDPI отправляет в fastPCRF команды accounting-on/accounting-off, на основании которых закрываются текущие сессии.
Поведение при этом регулируется параметром:
acct_fastdpi_session_stop=1
Доступны два режима:
* 1 — при старте/остановке fastDPI отправляется Acct-Stop для всех активных сессий;
* 0 — отправляются только Accounting-On/Accounting-Off без индивидуальных Acct-Stop.
Режим с отправкой Acct-Stop обеспечивает корректное завершение сессий, но создает повышенную нагрузку на RADIUS-сервер. Альтернативный режим снижает нагрузку, но требует корректной идентификации источника по NAS-атрибутам.
Для корректной работы необходимо:
* задать уникальные ''attr_nas_ip'' и ''attr_nas_id'' для каждого fastDPI;
* настроить ''radius_attr_nas_ip_address'' и ''radius_attr_nas_id'' для fastPCRF.
Обработка на стороне RADIUS:
* если NAS-атрибуты соответствуют fastDPI — закрываются сессии этого узла;
* если fastPCRF — закрываются все активные сессии.
===== Список значений acct_stop_reason =====
''acct_stop_reason_unspecified'' — причина не указана\\
''acct_stop_reason_user_request'' — завершение по инициативе абонента или при создании новой сессии\\
''acct_stop_reason_idle_timeout'' — тайм-аут неактивности\\
''acct_stop_reason_session_expired'' — истечение времени сессии\\
''acct_stop_reason_admin_reset'' — завершение по запросу администратора (CoA Disconnect-Request)\\
''acct_stop_reason_lost_service'' — отключение услуги или DHCP-NAK\\
''acct_stop_reason_NAS_error'' — ошибка в запросе\\
''acct_stop_reason_double_secondary_key'' — конфликт вторичного ключа\\
''acct_stop_reason_coa_reauth'' — CoA reauth\\
''acct_stop_reason_callback'' — завершение из-за реавторизации\\
''acct_stop_reason_no_auth_response'' — отсутствует ответ на авторизацию\\
''acct_stop_reason_NAS_switch'' — переключение на другой узел\\
''acct_stop_reason_CoA_Disconnect'' — CoA disconnect\\
Из fastPCRF:\\
''acct_stop_reason_source_reboot'' — обнаружен рестарт fastDPI\\
''acct_stop_reason_change_session_id'' — изменение sessionId\\
''acct_stop_reason_transfer_session_id'' — перенос sessionId\\
''acct_stop_reason_fastdpi_acct_on'' — получен Acct-On/Acct-Off\\
''acct_stop_reason_suspended'' — сессия приостановлена из-за недоступности RADIUS\\
''acct_stop_reason_ppp_changed_IPv6_prefix'' — изменен IPv6-префикс\\
''acct_stop_reason_ppp_missing_IPv6_prefix'' — отсутствует IPv6-префикс