Rating group, Tethering, Volume Qoutas

Конфигурация СКАТ

Услуга требует дополнительной оперативной памяти по сравнению со стандартными требованиями), которая резервируется настройкой в /etc/dpi/fastdpi.conf:

support_service_18=1

max_profiles_serv18 — настройка максимального количества профилей 18 услуги.
Значение по умолчанию: 16

Указать количество рейтинг групп (rg)

rating_group_count=0

0 (по умолчанию) — RG отключены

max_profiles_serv20 — настройка максимального количества профилей.
Значение по умолчанию: 32

Для применения конфигурации необходимо выполнить рестарт сервиса: service fastdpi restart

Принцип группировки протоколов: DPI помечает каждый новый flow протоколом из списка. Протоколы группируются в классы трафика для применения

Также применяется группировка протоколов в Rating group с учетом тетеринга. Тетеринг определяется на основе TTL в исходящем трафике. В параметре tethering_ttl_allowed = 128:64 указывается список допустимых значений TTL для трафика от абонента, которые не считаются тетерингом. Значения перечисляются через ':'. Количество значений — до 256 (0-255). Данный параметр определяется глобально на DPI. Профилирование на абонента в road map. Рейтинг группы используются для квотирования по объему, полисинга на рейтинг группу и выполнения действия block, report.

18 услуга описывает группировку протоколов по классам трафика (cs) и рейтинг группам (rg).

20 услуга описывает полисинг, квоты по объему, действия для рейтинг групп (rg).

Пример задания классов трафика и рейтинг групп с помощью 18 услуги

Подробное описание 18 услуги

Подготовить текстовый файл example.txt:

http cs0 teth1 rg1
https cs0 teth1 rg1
http cs0 teth2 rg2
https cs0 teth2 rg2
dns cs1 teth1 rg1
dns cs1 teth2 rg2
default cs7 teth0 rg3

Описание параметров:

teth0 — нет контроля tethering (default)

teth1 — есть контроль tethering: tethering присутствует

teth2 — есть контроль tethering: tethering отсутствует
rgN, задает номер рейтинг группы:

rg0 default (rg не установлена)

rg1 установлена rg=1
..

rg65535, максимальное количество рейтинг групп
В данном примере по http, https протоколам отслеживается тетеринг и в зависимости от этого назначается соответствующая rg. Отметим, что класс полисинга cs один и тот же, но rg разные в зависимости от TTL. Аналогично по dns протоколу. По ВСЕМ остальным протоколам (default) нет контроля тетеринга и указана отдельная rg.

Конвертировать во внутренний формат:

cat example.txt|lst2dscp /tmp/example.bin

Обратная конвертация для проверки:

dscp2lst /tmp/example.bin

Создать профиль 18 услуги и назначить абоненту:

fdpi_ctrl load profile --service 18 --profile.name test_dscp --profile.json '{ "dscp" : "/tmp/example.bin" }' fdpi_ctrl load --service 18 --profile.name test_dscp --login test_subs

Проверить назначение услуги:

fdpi_ctrl list --service 18 --login test_subs

В трассировке trace_ip добавлено поле rg=N для определения поведения DPI для конкретного flow.

Пример задания полисинга, квоты по объему и действия для рейтинг групп (rg) с помощью 20 услуги

Подготовить текстовый файл, в котором для каждой рейтинг-группы прописать TBF-полисинг, квоту и действие по достижении квоты:

rg1 tbf rate 1Mbit burst 1Mbit inbound.rate 8Mbit inbound.burst 1Mbit quota 100MB report rg2 tbf rate 8Mbit burst 1Mbit inbound.rate 8Mbit inbound.burst 1Mbit quota 1GB block

В данном примере описаны две рейтинг группы. rg1 имеет upload 1Mbps / download 8Mbps и квоту на 100MB с действием по истечением квоты report. rg2 имеет upload 1Mbps / download 8Mbps и квоту на 1GB с действием по истечением квоты block.
report и block — это доступные действия по достижении квоты:

report — сообщить о достижении квоты, но пропускать трафик далее;

block — сообщить о достижении квоты и блокировать трафик по данной рейтинг-группе

Конвертировать тектовый файл в бинарный формат:

cat rg.txt | lst2rg /var/lib/dpi/rg.bin

Обратная конвертация для проверки:

rg2lst rg.bin > rg.txt

Создать профиль 20 услуги и назначить абоненту:

fdpi_ctrl load profile --service 20 --profile.name rg1 --profile.json '{ "rg_list" : "/var/lib/dpi/rg.bin" }' fdpi_ctrl load --service 20 --profile.name rg1 --login test_subs