Зачастую необходима возможность управления глобально свойствами текущих соединений. Например, уменьшение пропускной способности каналов активных пользователей, но только в моменты пиковой загрузки внешнего канала. Для этого в BGRadiusDialup реализована возможность сопоставления договорам неких абстрактных чисел - уровней. Если договору не сопоставлен уровень, то он считается нулевым. Сопоставление осуществляется командой
на сокет управления RADIUS-сервера с указанием перечня договоров и уровней.Формат команды:
, где - набор записейНапример, передача извне файла с уровнями levels, содержащего уровни для договоров с кодами 4 и 5:
4\t1 5\t2
Может быть осуществлена следующим образом (BGRadiusDialup установлен на локальной машине и его admin.port=1955):
echo ./levels | nc 127.0.0.1 1955
После выполнения команды set_levels для договоров, уровень которых не был передан, он становится нулевым. Переданные уровни сохраняются в файле levels в каталоге BGRadiusDialup, для возможности восстановления после перезагрузки BGRadiusDialup. Логика формирования уровней полностью отдана стороннему приложению. Пример подобного управляещего скрипта вы можете посмотреть в WiKi.
В биллинге уровень передаётся в тарифный запрос при каждом обсчёте и воспринимается узлом
. В соответствии с уровнем могут изменяться зоны и текущие параметры соединения. Ниже приведён пример подобного тарифного плана.