Quota Manager
Материал из BiTel WiKi
Внимание! Данное решение/метод/статья относится к версии 5.2 и для других версий может быть неактуальна! Вам нужно самостоятельно поправить решение под свои нужды или воспользоваться помощью на форуме. Будем признательны, если внизу страницы или отдельной статьёй вы разместите исправленное решение для другой версии или подсказки что надо исправить.
Содержание |
Описание
У Cisco есть приложение - Quota Manager, работающее в связке с SCE. Это приложение позволяет в реальном времени гибко управлять скоростью клиента в зависимости от потреблённого объема трафика. Казалось бы, BGBilling тоже имеет такой функционал, но в нём не хватает гибкости. В частности, в модуле Inet есть узел тарифного плана "Диапазон трафика", но максимальный уровень детализации - 1 час. К тому же, час не плавающий - строго привязан к стрелкам часов. Чтобы реализовать гибкое квотирование без применения SCE, было решено реализовать собственное управление квотами в виде расширения для модуля Inet.
Постановка задачи
Нужно сделать тариф на VPN:
- Скорость: 100Мбит, если клиент скачал за последний час более 1GB - опускаемся на скорость 50Мбит
- Скорость: 50Мбит, если клиент скачал за последний час более 1GB - опускаемся на скорость 25Мбит
- Скорость: 25Мбит, если клиент скачал за последний час более 1GB - опускаемся на скорость 10Мбит
- Если клиент на любой "ступеньке" (профиле квот) просидел 1 час и скачал от от 750MB до 1GB, он поднмается на ступеньку вверх
- Если клиент на любом профиле просидел 1 час и скачал от от 500MB до 750MB, он поднмается сразу на 2 профиля вверх
- и т.д.
- "Скачал" - на самом деле учитывается трафик в обе стороны (входящий и исходящий) в сумме
- Время "1 час" на практике можно задать любое. Например, полчаса. Либо опускать вниз в течение часа, а "поднимать" уже через полчаса
- Когда клиент переходит на другой профиль, данные о потреблённой квоте в прошлом профиле теряются, т.е. он начинает "с чистого листа". Это ещё одна фича, которую нельзя реализовать узлом "диапазон трафика" в Inet.
- На практике, если клиент начинает качать, то он падает вниз раньше, чем через час. Но чтобы подняться, ему придётся ждать не менее часа.
Реализация
Расширение представляет из себя jar-файл (Файл:Custom inet quota.zip), а также класс-узел тарифного плана в динамическом коде. Требуется настройка BGInetAccess, BGInetAccounting, создание доп таблиц в mysql, конфигурирование тарифа.
Ограничения
* Работает только с Rаdius-типами трафиков, т.к. используются соответсвующие события аккаунтинга. * Не тестировалось на версиях BG 6+