Состояния пользователей, услуг и команды управления интернет

Skip to end of metadata
Go to start of metadata

Как это работает?

При изменении состояний услуг абонента или изменении его данных ядро отправляет команды на оборудование доступа к услугам (NAS, BRAS) через механизм OSS системы.
OSS система вызывает функции скрипта управления оборудованием при тех или иных событиях: подключилась услуга, абонента заблокировало или разблокировало, изменились параметры его учетной записи и тд.
При вызове функций скрипта, в него передаются некие "переменные": данные конкретного абонента, услуги, его учетной записи, параметры NAS-сервера и тд - все что может быть важно для управления состоянием сервиса и удаленного управления.

В зависимости от текущего события за раз может быть отправлено несколько команд. Например, при удалении в корзину отправляются команды деактивации услуг и удаления абонентской "сессии".

Команды скрипта событий, вызываемые биллингом при изменении состояния абонента

Основные команды

OSS команда синхронизации Для чего нужна команда Что происходит в биллинге
Состояние на оборудовании
user_add Добавить абонента на NAS Учетная запись создана и ей назначен NAS или абонент восстановлен из корзины Обычно используется для IP Static авторизации, если требуется создать на оборудовании какие-то постоянные: VLAN, ACL, static clips и т.п.
user_del Полностью удалить абонента с NAS Абонент удален в корзину, или изменён ключевой параметр учетной записи (например, изменили NAS)
При изменении любых ключевых параметров учетной записи будет вызвано событие user_del 2 раза: Сначала со старыми данными учетной записи а после с измененными.

На оборудовании нужно удалить все записи о пользователе, так как он болеене привязан к NAS.
Должна использоваться для ВСЕХ видов авторизации. Для RADIUS допустимо из этой функции просто вызывать user_disconnect.
user_drop Максимально ограничить доступ к сети Все услуги интернет (типы "трафик", "пакет мегабайт", "турбокнопка", "форса") заблокированы администратором (кнопка "Отключить" в карточке абонента) или добровольной блокировкой.
На оборудовании должна быть сессия(subscriber) пользователя.
Команда создаёт пользователю(subscriber) redirect на страницу блокировки администратором. 
user_accept Разрешить доступ к сети Абонент авторизовался по RADIUS и с его сессией нужно сделать что-то, что нельзя было отправить в Access-Accept, или ему назначили NAS (для IP Static) и у него есть хотя бы одна услуга трафика, активная и не заблокированная. Последний вариант - он вышел из блокировки, в таком случае это "обратная" команда для user_drop. На оборудовании должна быть сессия(subscriber) пользователя.
Команда снимает redirect на страницу блокировки администратором.
Если оборудование без сессий, то добавлено правило в ACL.
user_redirect Перенаправлять абонента на страницу блокировки Деактивированы услуги трафика по причине блокировки по балансу.
На оборудовании должна быть сессия(subscriber) пользователя.
Команда добавляет к сессии политику перенаправления на страницу отрицательного баланса.
Если оборудование без сессий, то удаляются блокировки по ACL.
user_redirect_cancel Отменить перенаправление на страницу блокировки
Событие вызывается во всех случаях, когда абоненту нужно снять блокировку. Основное назначение - снять блокировку по балансу, то есть команда обратная user_redirect На оборудовании должна быть сессия(subscriber) пользователя.
Команда убирает с сессии политику перенаправления на страницу отрицательного баланса.
Если оборудование без сессий, то удаляются блокировка по ACL.
user_disconnect Сброс сессии на оборудовании Используется в двух случаях:
  • для сброса авторизации - кнопка "Отключить" в карточке абонента;
  • чтобы убедиться, что сессия сброшена: когда RADIUS-сервер получил от NAS Accounting-Stop (это можно отключить, включив в настройках NAS опцию "Не посылать user_disconnect при получении Radius Stop")
Сессии нет на оборудовании и NAS отправил RADIUS-серверу информации о завершении сессии (Accounting-Stop), биллинг выполняет команду чтобы убедиться что сессия не зависла.
Может использоваться для ручного сброса сессии при необходимости, если сессия на оборудовани есть.

Рекомендумые дополнительные команды

OSS команда синхронизации Для чего нужна команда Что происходит в биллинге
Состояние на оборудовании
user_info Узнать состояние абонента на оборудовании В учётной записи нажали соответствующую кнопку получения информации по сессии с оборудования.
Подробней можно узнать из статьи Комады диагностики пользователей
Команда служит для получения информации с оборудования: есть сесси, или нет, и возможную статистическую информацию.
user_test Проверить наличие связи у абонента В учётной записи нажали соответствующую кнопку тестирования абонентской сессии.
Подробней можно узнать из статьи Комады диагностики пользователей
Команда служит для проверки соеденияния с пользователем средствами, доступными на NAS или коммутаторе: командами ping, tracert или подобными.
Если NAS не предоставляет таких инструментов, лучше команду не использовать.
users_from_nas Синхронизация состояний сессий на оборудовании Служба синхроиназции в автоматическом режиме исправляет возможные проблемы в состоянии сессии - политики доступа и, в перспективе, скорость доступа.
Подробней этот механизм описан в статье Синхронизация абонентов на оборудовании
Сессии абонентов должны существовать. Механизм исправляет возможные ошибки - если не дошла команда по причине временного отсутствия связи или по другой причине

Дополнительные команды, для специфичных действий

OSS команда синхронизации Для чего нужна команда Что происходит в биллинге
Состояние на оборудовании
user_auth
Авторизовать сессию в сети
Пользователь HotSpot авторизован через радиус или веб-авторизацию
Убирается правило редиректа noauth для схем HotSpot
own_disabled Применить правила добровольной блокировки
Абонент активировал добровольную блокировку, вызывается при любом стостоянии авторизации и прочих блокировках На оборудовании должна быть сессия(subscriber) пользователя.
Используйте это событие, если в Вашей схеме при добровольной бловкировке нужно выполнить какие-то особые действия и user_drop (тоже вызывается при добровольной блокировке) недостаточно.
own_disabled_cancel Снять ограничения добровольной блокировки
Абонент снял добровольную блокировку, вызывается при любом стостоянии авторизации и прочих блокировках На оборудовании должна быть сессия(subscriber) пользователя.
Отменяет действие own_disabled, используйте только если user_accept недостаточно.
user_rate_set Обновить параметры шейпера
Изменилась скорость доступа к сети интернет: например, поменяли тариф или включили турбокнопку.
Команда так же вызывается при снятии любого вида блокировки.
На оборудовании должна быть сессия(subscriber) пользователя.
Команда отправит нужную политику по скорости.
Если оборудование не использует политики. например Mikrotik с очередям Queue Simple, установленными не по RADIUS, то предварительное наличие сессии необязательно.
usluga_activated Изменить состояние сессии, вызванные активацией услуги
Одна из услуг подключенных абоненту была активирована.
Если одновременно было активировано несколько услуг, по каждой будет создано отдельно событие.
Вызывается при снятии любой блокировки.
На оборудовании должна быть сессия(subscriber) пользователя.
Используйте если нужно настроить сессию абонента в зависимости от параметров конкретной услуги.
Изначально событие содано для схем IPTV, поэтому дополнительные параметры нужно указывать в параметре "Дополнительная срока параметров активации" из настроек услуги (переменная activate_string)
usluga_deactivated Изменить состояние сессии, вызванные деактивацией услуги Одна из услуг подключенных абоненту была деактивирована.
Если одновременно было деактивировано несколько услуг, по каждой будет создано отдельно событие
Вызывается при назначении любой блокировки.
На оборудовании должна быть сессия(subscriber) пользователя.
Используйте если нужно настроить сессию абонента в зависимости от параметров конкретной услуги.
Изначально событие содано для схем IPTV, поэтому дополнительные параметры нужно указывать в параметре Дополнительная срока параметров дективации" из настроек услуги (переменная deactivate_string)
b_admin Установка блокировки администратором Абонента заблокировлик кнопкой "Заблокировать" в интерфейсе администратора. На оборудовании должна быть сессия(subscriber) пользователя.
Используйте эту команду, если при блокировке администратором требуется выполнить какие-то специфичные действия, недостаточные в общей команде user_drop
u_b_admin Снятие блокировки администратором Абоненту сняли блокировку кнопкой "Разблокировать" в интерфейсе администратора. На оборудовании должна быть сессия(subscriber) пользователя.
Опишите действия обратные команде b_admin, если общей команды user_accept в Вашей схеме недостаточно.
b_sys Установка бессрочной добровольной блокировки Абонент включил в ЛК бессрочную блокировку или по просьте абонента её установил администратор в интерфейсе, поле "Отключить начиная с даты"

На оборудовании должна быть сессия(subscriber) пользователя.
Используйте эту команду, если при такой блокировке требуется выполнить какие-то специфичные действия, недостаточные в общей команде user_drop
u_b_sys Снятие бессрочной добровольной блокировки Абонент отколчючил бессрочную блокировку в ЛК или администратор установил текущую дату в поле "Отключен до даты (отпуск)" карточки абонента.
На оборудовании должна быть сессия(subscriber) пользователя.
Используйте чтобы отменить действия user_drop, в случае если в Вашей схеме недостаточно отпрпавить только user_accept
rad_acc_stop Завершилась RADIUS-сессия
RADIUS-сервер в составе биллинга получил от маршрутизатора RADIUS-пакет Accounting-Stop
На оборудовании завершилась сессия(subscriber) пользователя.
Используйте в случае если на BRASмогут быть зависания сессий абонентов и нужно убедиться что они сброшены, или после завершения сессии необходимо произвести какие-то дополнительные действия.

Список ключевых параметров учетной записи и оборудования выбранного в учётной записи

Если поменять настройки оборудования, например IP коммутатора или его VLAN, или IP NAS-сервера - это повлияет на все учетные записи, в которых оно выбрано
  • ip - IPv4
  • ipv6 - IPv6
  • login - логин
  • mac - MAC-адрес
  • server - опция "У пользователя белый IP-адрес"
  • snatip - SNAT IP
  • deleted - служебное поле, по-умолчанию = 0, при удалении абонента в корзину = 1
  • auth_type - Тип авторизации
  • nas_ip - IP NAS-сервера
  • opt82 - опция "по OPT82"
  • switch_port - выбранный порт коммутатора
  • user_vlan - VLAN
  • switch_ip - IP коммутатора
  • nas_id - ID NAS-сервера
  • psw - Пароль
  • gpon_modem_port - GPON-порт на приставке

Какие команды будут отправлены в разных случаях

Смена тарифа

user_rate_set

При смене тарифа интернет отключается активная услуга интернет и подключается/активируется новая. При этом скорость доступа реально изменится только при поступлении в биллинг трафика по новой услуге или при переавторизации в сети (если используется подключение с использованием протокола RADIUS)

Таким образом, user_rate_set будет вызвана три раза:

  • Первая отправка со старой скоростью при деактивации старой услуги
  • Вторая отправка со старой скоростью при активации новой услуги
  • Третья отправка с новой скоростью при поступлении трафика

Здесь нужно обратить внимание еще на один момент: ID услуги будет передан только в первой и второй отправке. При третьей отправке переменная usluga_id будет пустой.

Изменение учетной записи

user_edit

При редактировании любых полей в учетной записи отправляется событие user_edit.

user_del и user_add

В случае когда меняется IP либо NAS обязательно будет уходить user_del со старыми параметрами и user_add с новыми.

Удаление абонента или учетной записи

При удалении в биллинге абонента или учетной записи на NAS передается команда user_del, описанная в файле session, который находится внутри управляющего каталога каждого NAS в биллинге, по адресу chroot /app/asr_billing /var/oss/core/[Название NAS]/bin(ubin).
В команде перечислены действия, которые необходимо выполнить NAS с сессией абонента.

Пример команды user_del из скрипта session схемы mikrotik-simple
user_del(){
        if [ "$auth_type" == "0" -o "$auth_type" == "6" ]; then
                while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=[find address =${ip}]; do :; done
                echo "User-Name=\"${login}\"" | radclient -x ${nas_ip}:${coa_port} disconnect "${radius_secret}"
        else
                while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_auth; do :; done
                while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_negbal; do :; done
                while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_blocked; do :; done
        fi
        while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /queue simple remove numbers=crb_${ip}; do :; done
}

Необходимо обязательно описать команду user_del,если самостоятельно внедряете пользовательскую схему, или, если используете подключения по RADIUS - убедитесь, что оборудование отправляет биллингу Accounting-Stop пакеты. Удаление сессии с оборудования важно для правильной работы подсистем биллинга - это необходимо для того чтобы биллинг мог освободить занятый абонентом IP-адрес, а так же закрыть период, если абонент был удалён.

Авторизация по RADIUS

Отправляется полный набор команд, отражающих состояние абонента + одна команда rad_acc_start

Если Вы не хотите выполнять какие-либо команды при авторизации, добавьте в session условие в каждую функцию, например:

user_rate_set(){
    if [[ owner_script != events.py ]] && [[ owner_function != check_services ]]; then
        ...
        ...команды отправляемые на оборудование
        ...
    fi
}

rad_acc_start

Если точно, то это команда говорящая о том что с оборудование получе RADIUS-пакет Accounting-Start. Команду можно использовать если нужно выполнить какие-то действия только при авторизации.

user_accept

Состояние абонента разрешающее доступ к сети.

user_rate_set

Отправка скорости. Это используется во всех стандартных схемах Mikrotik.

user_redirect_cancel или user_redirect

В зависимости от состояния абонента, может отправиться либо user_redirect_cancel, если у него нет ни каких блокировок (администратором, по-балансу или добровольной) или user_redirect - если блокировки есть.

usluga_activated по каждой активной услуге интернет

Это используется в стандартной схеме Cisco-ISG-Noshape для отправки политики по каждой услууге трафика: ограничение шейпера на ресурсы интернет и отсутствие органичения на локальные ресурсы.

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.