G-SERVICE Docs
Архитектура ISP (OSS/BSS)

Access Control (AAA) Service

FreeRADIUS интеграция: профили, CoA, сессии, PPPoE/IPoE, vendor-атрибуты.

Access Control (AAA) Service

Bounded Context: Network Access Control
Владелец данных: RadiusProfile, Session
Технологии: Go, PostgreSQL, ConnectRPC, FreeRADIUS (SQL backend)

Ответственность

AAA Service управляет доступом абонентов к сети. Работает в связке с FreeRADIUS, который выступает RADIUS-сервером для NAS-устройств (BRAS, OLT). Это критический компонент — если AAA не работает, абоненты не могут подключиться к сети. SLO: 99.99% availability, < 50ms p99 latency.

  • Profiles: CRUD RADIUS-профилей (radcheck/radreply) для каждой подписки. Каждый абонент = один RadiusProfile с набором атрибутов.
  • CoA (Change of Authorization): Динамическое изменение параметров активной сессии (скорость, блокировка, редирект) без разрыва соединения. Ключевой механизм для dunning и турбо-кнопки.
  • Sessions: Мониторинг активных сессий (RADIUS Accounting Start/Stop/Interim-Update). Данные передаются в Mediation для биллинга и аналитики.
  • Auth Types: PPPoE (логин/пароль), IPoE (MAC + Option 82 — без логина), Hotspot (captive portal).

Сценарии использования CoA

СценарийТриггерRADIUS-атрибутыРезультат
Dunning: soft blockbalance < 0 (D+0)Mikrotik-Address-List=blockedRedirect на captive portal
Dunning: hard blockD+3 без оплатыMikrotik-Rate-Limit=64k/64kСкорость 64 kbps
Dunning: resumeОплата полученаВосстановление оригинальных атрибутовПолная скорость
Турбо-кнопкаПокупка ускоренияMikrotik-Rate-Limit=200M/200MВременное ускорение
Смена тарифаtariff.changedНовый Rate-Limit по тарифуНовая скорость на лету
DisconnectРасторжение/RMADisconnect-RequestПринудительный разрыв сессии

Архитектура

Loading diagram...

Агрегат: RadiusProfile

Loading diagram...

Примеры атрибутов

PPPoE (MikroTik BRAS):

ТаблицаAttributeOpValue
radcheckCleartext-Password:=hashed_password
radreplyMikrotik-Rate-Limit:=100M/100M
radreplyFramed-IP-Address:=10.0.1.100
radreplyFramed-Pool:=pool-residential

IPoE (Huawei BRAS):

ТаблицаAttributeOpValue
radcheckAuth-Type:=Accept
radreplyHuawei-Input-Average-Rate:=102400 (kbps)
radreplyHuawei-Output-Average-Rate:=102400
radreplyFramed-IP-Address:=10.0.2.50

ConnectRPC API

service AAAService {
  rpc CreateProfile(CreateProfileRequest) returns (CreateProfileResponse);
  rpc UpdateProfile(UpdateProfileRequest) returns (UpdateProfileResponse);
  rpc DeleteProfile(DeleteProfileRequest) returns (DeleteProfileResponse);
  rpc SendCoA(SendCoARequest) returns (SendCoAResponse);
  rpc DisconnectSession(DisconnectSessionRequest) returns (DisconnectSessionResponse);
  rpc ListActiveSessions(ListActiveSessionsRequest) returns (ListActiveSessionsResponse);
  rpc GetSessionHistory(GetSessionHistoryRequest) returns (GetSessionHistoryResponse);
}
МетодRBACОписание
CreateProfileinternalСоздать RADIUS-профиль (вызывается Provisioning)
UpdateProfileinternalОбновить атрибуты (смена скорости)
SendCoAinternalОтправить CoA-пакет на NAS (смена параметров без разрыва)
DisconnectSessionisp-operator+Принудительный разрыв сессии
ListActiveSessionsisp-viewer+Активные сессии (для мониторинга и CRM)

CoA Flow (Change of Authorization)

Loading diagram...

Session Monitoring

Данные из RADIUS Accounting (radacct таблица):

ПолеОписание
acctsessionidУникальный ID сессии
usernameЛогин PPPoE или MAC (IPoE)
nasipaddressIP NAS-устройства
framedipaddressIP абонента
acctinputoctetsВходящий трафик (bytes)
acctoutputoctetsИсходящий трафик (bytes)
acctstarttimeНачало сессии
acctstoptimeКонец сессии (NULL если активна)

Зависимости

Loading diagram...
  • Входящие: Provisioning → AAA (CreateProfile, UpdateProfile, SendCoA).
  • Исходящие: AAA → NAS (CoA packets).

Ссылки:

On this page