Параметры доступа к локальной сети оператора в рассматриваемом примере выдаются отдельным DHCP-сервером. Настройка такого DHCP-сервера с идентификацией абонентского оборудования по данным опции 82 описана в отдельной статье: Идентификация по данным DHCP-опции 82 (DHCP-сервер Гидры). А Cisco ISG обеспечивает предоставление абонентам отдельных сервисов с использованием IP-транспорта: доступ к сети Интернет, IPTV, VoIP и т. д. Абонентское оборудование идентифицируется ISG по IP-адресу, а набор и параметры доступных ему сервисов определяются в результате RADIUS-взаимодействия с Гидрой.
Настройка провижининга
Теги и дополнительные параметры
В разделе Справочники → Теги добавляем новый тег доступ_через_isg для маркировки пакетов услуг, оказываемых с использованием Cisco ISG.
Соответствия сервисов ISG и пакетов услуг будем хранить в виде дополнительных параметров номенклатурных позиций этих пакетов. Заполнение сервисов сделаем через выбор справочного значения, а не через ручной ввод наименований.
В разделе Справочники → Базовые добавляем новый пользовательский справочник:
- Наименование — Сервисы Cisco ISG.
- Код — REF_TYPE_Cisco-ISG-Services.
Добавляем в новый справочник записи, по одной на каждый сервис. В добавляемых записях указываем только названия сервисов. Сами сервисы либо настраиваются статически на Cisco ISG, либо динамически конфигурируются через отдельные RADIUS-запросы от ISG. Второй вариант позволяет достаточно просто вводить новые линейки тарифных планов, отличающиеся, например скоростями доступа к сети Интернет. Оператор при таком подходе просто добавляет новый сервис в справочник и сопоставляет его с нужными пакетами услуг, а ISG получив новое имя сервиса автоматически делает дополнительный RADIUS-запрос, агент HARD отдельно его обрабатывает и формирует ответ с атрибутами-параметрами сервиса. Например, в наименованиях сервисов доступа к сети Интернет можно указать величину ограничения скорости доступа (Rate и Burst):
В разделе Справочники → Номенклатура для группы, содержащей все оказываемые посредством Cisco ISG пакеты услуг, добавляем дополнительный параметр:
- В поле Наименование указываем, например Сервис Cisco ISG.
- В поле Код пишем Cisco-ISG-Service — этот код потребуется при настройке шаблона профилей абонентского оборудования.
- Выбираем Тип — Справочное значение.
- В лукапе Справочник указываем ранее созданный базовый пользовательский справочник Сервисы Cisco ISG.
- Устанавливаем флаг Множественность — это позволит для одного пакета услуг выбирать несколько сервисов.
- Устанавливаем флаг Наследуется позициями: параметр мы задаём для группы номенклатурных позиций, но значения нам нужны для конкретных пакетов услуг.
Для всех номенклатурных позиций пакетов услуг, оказываемых посредством Cisco ISG, указываем сервисы ISG в новом параметре Сервис Cisco ISG и добавляем ранее созданный тег доступ_через_isg:
Родительский шаблон профилей абонентского оборудования
В разделе Оборудование → Шаблоны профилей (необходимо право Провижининг → Редактирование шаблонов профилей) создаём новый шаблон:
- В поле Тип оборудования выбираем номенклатурную позицию абонентского оборудования, например Оконечное оборудование.
- В поле Теги услуг указываем тег доступ_через_isg, которым на предыдущем этапе промаркировали соответствующие пакеты услуг.
- Заполняем Наименование: IPoE - Базовый доступ.
- В блоке Состояние услуги отмечаем все состояния: авторизацию необходимо выполнять при любом состоянии услуги (кроме технологического Услуга заказана), но от этого состояния будет зависеть набор назначаемых сервисов.
- Нажимаем на кнопку Добавить — форма создания шаблона сменится формой его редактирования:
Наполняем шаблон атрибутами с помощью кнопки Добавить на форме его редактирования:
Подстановка | Наименование | Параметры |
---|---|---|
Адрес компонента оборудования | ISG-IP-Address |
|
Дополнительный параметр услуги | ISG-Services |
|
Состояние услуги | Service-Status |
|
- Профили будут формироваться для Оконечного оборудования, а IP-адрес привязывается к его компоненту — используем подстановку Адрес компонента оборудования. По этому адресу агент HARD будет подбирать профиль.
- Если для пакета услуг в номенклатуре указано несколько сервисов, то в атрибуте ISG-Services их наименования будут перечислены через запятую.
- Состояние услуги будет использоваться агентом HARD для принятия решения о назначаемых при авторизации сервисах.
Меняем состояние шаблона на Активен и нажимаем Сохранить, после чего переформировываем профили по новому шаблону.
Открываем вкладку Профили абонентского оборудования, подписанного на промаркированный тегом доступ_через_isg пакет услуг, и убеждаемся, что профили сформировались корректно. Периоды действия профилей определяются периодами действия участвующих в них привязок адресов к оборудованию, поэтому в данном случае у каждого оборудования с одним привязанным IP-адресом должно быть два профиля по этому шаблону, но только один из них активный. Также могут быть, разумеется, профили по другим шаблонам:
Дочерние шаблоны профилей абонентского оборудования
Для тех категорий сервисов, по которым будет учитываться отдельный RADIUS-аккаунтинг, создаём дочерние шаблоны профилей абонентского оборудования. Также дочерние шаблоны будут полезны для таких тарифных опций как «Турбо-кнопки» (временное ускорение доступа к сети Интернет), которым соответствуют отдельные сервисы: атрибут со списком сервисов родительского профиля может дополняться значениями одноименного атрибута дочерних профилей. В данном примере рассмотрим только две категории сервисов, аккаунтинг по которым мы хотим обрабатывать раздельно: доступ к сети Интернет и к локальным ресурсам.
Шаблон для сервисов доступа к сети Интернет
В разделе Справочники → Теги создаём тег isg-сервис_интернет и маркируем им соответствующую услугу, входящую в состав промаркированного ранее тегом доступ_через_isg пакета услуг. Например детализированную потоковую услугу Интернет-трафик вх.:
В разделе Оборудование → Шаблоны профилей создаём новый дочерний шаблон:
- В поле Тип оборудования выбираем ту же номенклатурную позицию абонентского оборудования, что и в ранее созданном родительском шаблоне — Оконечное оборудование.
- В поле Теги услуг указываем тег isg-сервис_интернет, которым на предыдущем этапе промаркировали услугу Интернет-трафик вх.
- Заполняем Наименование: IPoE - Доступ к сети Интернет.
- В блоке Состояние услуги отмечаем только Услуга оказывается: доступ к сети Интернет мы хотим предоставлять только при отсутствии на лицевом счете задолженности.
- В поле Родительский шаблон выбираем созданный ранее шаблон IPoE - Базовый доступ.
- Нажимаем на кнопку Добавить — форма создания шаблона сменится формой его редактирования:
С помощью кнопки Добавить на форме редактирования шаблона добавляем в него атрибут:
Подстановка | Наименование | Параметры |
---|---|---|
Состояние услуги | Internet-Service-Status |
|
Шаблон для сервисов доступа к локальным ресурсам
Выполняем все те же действия, что и на предыдущем этапе для сервисов доступа к сети Интернет, только с другими услугами и наименованиями:
- В разделе Справочники → Теги создаём тег isg-сервис_локальные_ресурсы и маркируем им соответствующую услугу, входящую в состав промаркированного ранее тегом доступ_через_isg пакета услуг. Например детализированную потоковую услугу Локальный трафик вх.
- В разделе Оборудование → Шаблоны профилей создаём новый дочерний шаблон:
- В поле Тип оборудования выбираем ту же номенклатурную позицию абонентского оборудования, что и в ранее созданном родительском шаблоне — Оконечное оборудование.
В поле Теги услуг указываем тег isg-сервис_локальные_ресурсы, которым на предыдущем этапе промаркировали услугу Локальный трафик вх.
Заполняем Наименование: IPoE - Доступ к локальным ресурсам.
В блоке Состояние услуги отмечаем только Услуга оказывается: доступ к данному сервису мы также хотим предоставлять только при отсутствии на лицевом счете задолженности.
В поле Родительский шаблон выбираем созданный ранее шаблон IPoE - Базовый доступ.
На форме редактирования нового дочернего шаблона профилей абонентского оборудования добавляем в него атрибут:
Подстановка Наименование Параметры Состояние услуги Local-Service-Status
- Временной интервал — Прочерк.
- Обязательный атрибут — Да.
- Заменять значением атрибута дочернего профиля — Нет.
- Параметры для вычисления:
Возвращаемое значение — Код.
Формирование дочерних профилей
Созданные на предыдущих этапах дочерние шаблоны профилей абонентского оборудования переводим в состояние Активен, после чего переформировываем по ним профили.
Открываем вкладку Профили абонентского оборудования, подписанного на промаркированный тегом доступ_через_isg пакет услуг и убеждаемся к родительскому профилю IPoE - Базовый доступ добавились дочерние профили IPoE - Доступ к сети Интернет и IPoE - Доступ к локальным ресурсам:
Типы сессий
В разделе Оборудование → Типы сессий (необходимо право Провижининг → Редактирование типов сессий) добавляем новый тип:
- Указываем Наименование, например IPoE - Базовый доступ.
- В комбобоксе Шаблон абонентского профиля выбираем добавленный на ранее родительский шаблон IPoE - Базовый доступ.
- В полях Шаблон операторского профиля и Тип привязки оставляем прочерки: в данном случае профили операторского оборудования не используются.
- Устанавливаем флаг Удалять подстановки без значений из команд.
В поле Команды → Прерывание вводим шаблон команды принудительного завершения сессии:
/usr/local/hydra-scripts/isg_session_control.sh --action=disconnect --session-id={SESSION.VC_EXT_ID} --nas-ip={SESSION.NAS-IP-Address}
Как правило, для отправки PoD-запроса прерывания сессии достаточно её идентификатора и IP-адреса сервера доступа. Если в вашем случае необходимы дополнительные данные, скорректируйте шаблон команды.
В поле Команды → Изменение вводим шаблон команды принудительного завершения сессии:
/usr/local/hydra-scripts/isg_session_control.sh --action=change --session-id={SESSION.VC_EXT_ID} --nas-ip={SESSION.NAS-IP-Address} --prev-services={PREV.ISG-Services} --next-services={NEXT.ISG-Services} --prev-serv-status={PREV.Service-Status} --next-serv-status={NEXT.Service-Status}
При использовании шаблона такого вида скрипт
/usr/local/hydra-scripts/isg_session_control.sh
будет вызываться как при изменении набора сервисов ISG (например, оператор добавил новый сервис к тарифу в номенклатуре), так и при изменении биллингом состояния пакета услуг.В качестве аргументов скрипту при таком шаблоне будут переданы старый и новый список сервисов, а также старое и новое состояние оказания пакета услуг. На основании этого полного набора данных о произошедших в биллинге изменениях в скрипте вы можете реализовать нужную логику управления сервисами посредством отправки CoA-запросов на Cisco ISG.
- Нажимаем кнопку Добавить и форма создания сменяется формой редактирования:
- Меняем Состояние на Активен и нажимаем Сохранить.
Далее аналогично добавляем ещё два типа для сервисных сессий: IPoE - Доступ к локальным ресурсам и IPoE - Доступ к сети Интернет, указывая в них одноимённые дочерние шаблоны профилей абонентского оборудования. Отдельные команды для сервисных сессий, как правило не требуются: достаточно команд по базовым сессиям — оставляем поля Прерывание и Изменение в разделе Команды пустыми.
Иерархия типов сессий определяется иерахией шаблонов профилей абонентского оборудования, поэтому созданные типы сервисных сессий должны отображаться как дочерние относительно типа базовых сессий:
Настройка брокера ActiveMQ
Установку и настройку, если этого на настраиваемом сервере ещё не сделано ранее, производим в соответствии со статьёй Настройка брокера ActiveMQ.
Настройка агента HARD
Установку агента, если этого на настраиваемом сервере ещё не сделано ранее, выполняем в соответствии со статьёй Установка агента HARD.
Общие параметры
Редактируем общий конфигурационный файл агента в соответствии с примером:
В данной конфигурации меняем значения параметров с паролями:
- Пароль базовой аутентификации модулей
hard.pm
иhard-dhcp.pm
сервера FreeRADIUS: ключfilters
→agent.basic_auth
→main
→password
. - Пароль пользователя базы данных кэша: ключ
connection_pools
→mongo
→main
→password
. - Пароль пользователя базы данных провижининга: ключ
connection_pools
→database
→main
→password
. - Пароль пользователя Гидры для доступа к приложению RADIUS-сервер: ключ
connection_pools
→database
→main
→hydra
→password
. - Пароль пользователя ActiveMQ: ключ
syncer
→stomp
→password
.
В MongoDB, если этого на настраиваемом сервере ещё не сделано ранее, добавляем БД hard_cache
и пользователя hard
для неё в соответствии с описанным в статье Настройка агента HARD примером.
Экземпляр плагина base
Добавляем конфигурационный файл экземпляра ipoe-isg
плагина base
агента HARD в соответствии с примером:
Загрузчик данных аккаунтинга
В конфигурацию планировщика CRON добавляем настройки для регулярного запуска агента в режиме загрузки данных аккаунтинга в БД провижининга:
# HARD RADIUS accounting loader */3 * * * * hard /opt/hydra/hard/init/hard.sh -f /etc/hydra/hard batch &>/dev/null
Настройка сервера FreeRADIUS
Установку и настройку сервера FreeRADIUS выполняем в соответствии со статьёй Установка и настройка сервера FreeRADIUS. Если FreeRADIUS уже установлен, настраиваем отдельный экземпляр, руководствуясь статьёй Создание дополнительного экземпляра сервера FreeRADIUS. В модуле hard.pm
(файл /etc/freeradius/hard.pm
) указываем следующие параметры взаимодействия с агентом HARD:
# Параметры для связи с HARD my @HARD_API_URLS = ( # Пул API URL для запросов "http://127.0.0.1:11080/base/ipoe-isg" ); use constant HARD_AUTH_USER => "freeradius"; # Логин use constant HARD_AUTH_PASSWORD => "freeradius_password"; # Пароль
Пароль в константе HARD_AUTH_PASSWORD
укажите тот же, что задан в ключе filters
→ agent.basic_auth
→ main
→ password
конфигурации агента HARD.
Настройка агента HEX
Установку агента выполняем в соответствии со статьёй Настройка агента HEX. Конфигурационный файл приводим в соответствие с примером:
Добавляем на сервер указанный ранее в шаблонах команд скрипт /usr/local/hydra-scripts/isg_session_control.sh
для принудительного завершения базовой сессии и управления активированными в рамках неё сервисами.
Агент HEX работает под пользователем hex
(hex-testing
для тестового экземпляра) — данному пользователю выдаём права на исполнение добавленного скрипта.
Результат
Настроенная схема обеспечивает идентификацию абонентского устройства по IP-адресу, который привязан в Гидре к соответствующему Оконечному оборудованию (к компоненту). Если идентификация прошла успешно (профиль абонентского оборудования подобран), то выполняется авторизация: в зависимости от состояния услуг либо выдаются соответствующие тарифному плану сервисы, либо сервисы блокировки и переадресации на страницу оплаты услуг. Соответствие тарифных планов и сервисов ISG хранится в Гидре. Для сервисов доступа к сети Интернет агент HARD обеспечивает динамическое конфигурирование.
Команды формируются провижинингом по каждой базовой сессии отдельно:
- При изменении набора доступных в рамках тарифного плана сервисов или состояния оказания услуг формируется команда на изменение по базовой сессии.
- При изменении привязанного к абонентскому оборудованию IP-адреса или прекращении оказания услуг — команда на прерывание базовой сессии.