COA new version: відмінності між версіями
Sv (обговорення | внесок) (Новая страница: «COA это модуль ядра, который периодически просматривает данные абонентов (параметры авто...») |
Sv (обговорення | внесок) м (Защитил страницу COA new version ([Редактирование=Разрешено только администраторам] (бессрочно) [Переименование=Разрешено только администраторам] (бессрочно))) |
(Немає відмінностей)
|
Версія за 11:52, 10 липня 2023
COA это модуль ядра, который периодически просматривает данные абонентов (параметры авторизации, доступ, баланс и т.д) и в случае их изменения отправляет команды на оборудование. Например, при изменении тарифа, не сбрасывая сессию, он может послать команду на изменения скорости. Либо при уходе баланса в минус послать команду блокировки.
Используется совместно с Radius и устраняет его недостаток - когда данные соединения (ip, скорости, сервисы) устанавливаются только в момент подключения.
Настройка
Конфиг /usr/local/nodeny/modules/coa/create.cfg.coa.cfg.pm.
Здесь вы можете увидеть, что coa отсылаются стандартной утилитой radclient (из пакета freeradius). Вы должны убедиться в правильном пути к этой утилите в параметре $radclient - на Linux и FreeBSD пути различаются.
Также в $radclient прописаны ключи, некоторые из которых вы можете подтюнить:
- -t : сколько секунд ждем coa-ответа от устройства, после чего посылаем повторный пакет. Этот параметр зависит от того насколько долго идет пакет от сервера с модулем COA до самого дальнего BRAS. И обратно. Естественно, необходимо накинуть время на обработку пакетов BRAS и разные непредвиденные ситуация. Большой таймаут тоже не следует делать ибо этим вы уменьшаете время реакции, т.е. управление будет запаздывать. Тем не менее, в первую очередь важна надежность, поэтому важен баланс, но с гарантированным запасом.
- -r : сколько попыток слать пакет. Если 2, то после первой неудачной посылается еще один. COA использует протокол UDP, поэтому могут быть ситуации, когда пакет потеряется. Две попытки, нормальный вариант.
- -p : максимальное одновременное количество coa-пакетов. Когда примерно в одно время изменяются данных большого количества абонентов, например, списание за услуги с последующей блокировкой, на BRAS идет большое количество coa-пакетов. Если их не отправлять параллельно, то это может занять большое количество времени. Поэтому пакеты посылаются параллельно в несколько потоков. Какое количество установить - зависит от производительности ваших BRAS...
В переменных $coa_connect__state_on, $coa_connect__state_off и $coa_disconnect указываются атрибуты, которые посылаются Radius-сервером клиенту в определенных ситуациях:
- В $coa_connect__state_on атрибуты, которые посылаются когда подключен абонент, которому разрешен доступ в интернет
- В $coa_connect__state_off атрибуты, которые посылаются когда подключен абонент, которому запрещен доступ в интернет
- В $coa_disconnect атрибуты, которые посылаются когда абонент отключается (перестает быть авторизованным)
Не обязательно использовать все три переменные.
Атрибуты задаются таким образом:
$coa_connect__state_on = { type => тип пакета, template => шаблон, };
Если же необходимо послать несколько команд:
$coa_connect__state_on = [ { type => тип пакета, template => шаблон, }, { type => тип пакета, template => шаблон, } ];
Тип пакета может быть:
- coa - предписывает изменить параметры сессии
- disconnect - предписывает отключить клиента
Шаблон - это текст с атрибутами в виде:
атрибут=значение
В двойных фигурных скобках можно указать данные конкретного абонента, например:
- ip - ip адрес
- auth_ses - имя сессии
- speed_in1_kb - входящая скорость в килобитах
- speed_in1_mb - входящая скорость в мегабитах
Если в параметрах авторизации будет параметр nas - coa пакет будет послан на сервер, ip которого берется из nas. В противном случае пакет будет послан на ip, указанный в конфиге.