- Как это работает?
- Команды скрипта событий, вызываемые биллингом при изменении состояния абонента
- Основные команды
- Рекомендумые дополнительные команды
- Дополнительные команды, для специфичных действий
- Список ключевых параметров учетной записи и оборудования выбранного в учётной записи
- Какие команды будут отправлены в разных случаях
Как это работает?
При изменении состояний услуг абонента или изменении его данных ядро отправляет команды на оборудование доступа к услугам (NAS, BRAS) через механизм OSS системы.
OSS система вызывает функции скрипта управления оборудованием при тех или иных событиях: подключилась услуга, абонента заблокировало или разблокировало, изменились параметры его учетной записи и тд.
При вызове функций скрипта, в него передаются некие "переменные": данные конкретного абонента, услуги, его учетной записи, параметры NAS-сервера и тд - все что может быть важно для управления состоянием сервиса и удаленного управления.
В зависимости от текущего события за раз может быть отправлено несколько команд. Например, при удалении в корзину отправляются команды деактивации услуг и удаления абонентской "сессии".
Команды скрипта событий, вызываемые биллингом при изменении состояния абонента
Основные команды
OSS команда синхронизации | Для чего нужна команда | Что происходит в биллинге |
Состояние на оборудовании | ||
---|---|---|---|---|---|
user_add | Добавить абонента на NAS | Учетная запись создана и ей назначен NAS или абонент восстановлен из корзины | Обычно используется для IP Static авторизации, если требуется создать на оборудовании какие-то постоянные: VLAN, ACL, static clips и т.п. | ||
user_del | Полностью удалить абонента с NAS | Абонент удален в корзину, или изменён ключевой параметр учетной записи (например, изменили NAS)
|
На оборудовании нужно удалить все записи о пользователе, так как он болеене привязан к 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 | Сброс сессии на оборудовании | Используется в двух случаях:
|
Сессии нет на оборудовании и 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_negbal | Установка финансовой блокировки | Абонент был заблокирован по балансу. | На оборудовании должна быть сессия(subscriber) пользователя. Используйте эту команду, если при финансовой блокировке требуется выполнить какие-то специфичные действия, недостаточные в общей команде user_redirect |
u_b_negbal | Снятие финансовой блокировки | Абонент пополнил баланс, или у него был изменен порог отключения, или включена опция "Не отключать при превышении порога". | На оборудовании должна быть сессия(subscriber) пользователя. Используйте эту команду, если при снятии финансовой блокировки требуется выполнить какие-то специфичные действия, недостаточные в общей команде user_redirect_cancel |
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(){ 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 для отправки политики по каждой услууге трафика: ограничение шейпера на ресурсы интернет и отсутствие органичения на локальные ресурсы.