Атрибуты авторизации абонента [Документация VAS Experts]

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
dpi:bras_bng:radius_integration:radius_auth_server_integration:radius_auth_response [2023/10/13 11:44] – ↷ Страница перемещена из dpi:bras_bng:opt_bras_l3:bras_steps:radius_auth_server_integration:radius_auth_response в dpi:bras_bng:radius_integration:radius_auth_server_integration:radius_auth_response elena.krasnobryzhdpi:bras_bng:radius_integration:radius_auth_server_integration:radius_auth_response [2026/03/25 11:44] (текущий) – [2. Полисинг с передачей абсолютных значений (упрощённый формат)] elena.krasnobryzh
Строка 1: Строка 1:
 ====== Атрибуты авторизации абонента ====== ====== Атрибуты авторизации абонента ======
 +{{indexmenu_n>1}}
 +Помимо информации о том, авторизован или нет пользователь, fastPCRF необходимы следующие данные в ответ на Access-Request:
 +  * IP-адрес абонента.
 +  * Профиль полисинга пользователя.
 +  * Профили пользователя по услугам fastDPI. 
 +  * Услуги, подключенные пользователю.
 +  * Тип пользователя: количество IP-адресов, связанных с пользователем. 
 +  * Логин пользователя — атрибут ''User-Name'' или ''VasExperts-UserName''
 +
 +{{anchor:ip-addr-attr}}
 +СКАТ поддерживает IPv4 и IPv6-адресацию абонентов. Для IPv4-абонентов в ответе должен быть атрибут ''Framed-IP-Address'', задающий IPv4-адрес, причем этот адрес должен совпадать с тем, который был указан в Access-Request. Если значения ''Framed-IP-Address'' в запросе и ответе различаются, это считается ошибкой.
 +
 +<note tip>Некоторые биллинговые системы не могут отдать в ''Access-Accept'' атрибут ''Framed-IP-Address'' в режиме L3-авторизации. Для таких случаев предусмотрена fastpcrf.conf-опция ''radius_framed_ip_from_request=1'': при таком значении в случае отсутствия в ответе атрибута ''Framed-IP-Address'' fastPCRF берет его из запроса авторизации.</note>
 +
 +Для IPv6-абонентов в Access-Accept/Reject поддерживаются атрибуты:
 +  * ''Framed-IPv6-Address'' — задает IPv6-адрес абонента. Значение данного атрибута в ответе должно совпадать со значением в запросе.
 +  * ''Framed-IPv6-Prefix'' — задает IPv6-префикс подсети абонента. Размер префикса и его значение в ответе должен совпадать с запросом.
 +  * ''Framed-IPv6-Pool'' — имя пула. Необязательный атрибут. Если этот атрибут указан в ответе, то он будет передаваться во всех Accounting-Request.
 +
 +Для IPv6 ответ обязательно должен содержать один из атрибутов ''Framed-IPv6-Address'' или ''Framed-IPv6-Prefix'' (или оба сразу). При этом СКАТ интерпретирует атрибут ''Framed-IPv6-Address'' как префикс подсети, не учитывая младшие биты адреса (напомним, что пока СКАТ умеет работать только с префиксами одинакового размера, задаваемым параметром ''[[dpi:dpi_components:platform:dpi_ipv6|ipv6_subnetwork]]'').
 +
 +<note warning>В СКАТ IPv6-адреса **обязательно** должны быть связаны с логином абонента, поэтому в ответе должен быть один из атрибутов, задающий логин абонента.</note>
 +
 +Также поддерживаются Dual Stack абоненты: запрос Access-Request всегда идет либо по IPv4, либо по IPv6-адресу, но ответ может содержать оба адреса в атрибутах ''Framed-IP-Address'' и ''Framed-IPv6-Address''/''Framed-IPv6-Prefix''. Это значит, что абоненту назначен как IPv4-адрес, так и IPv6-префикс. При этом такой абонент не считается по умолчанию multi-bind абонентом: в СКАТ с каждым абонентом, даже single-bind, может быть связана пара: IPv4-адрес и IPv6-префикс.
 +
 +Профиль полисинга и список подключенных услуг передаются в Vendor-Specific атрибуте [26] ответов.
 +<code bash>
 +VENDOR          VasExperts                   43823
 +BEGIN-VENDOR    VasExperts
 +ATTRIBUTE       VasExperts-Policing-Profile  1  string
 +ATTRIBUTE       VasExperts-Service-Profile    string
 +ATTRIBUTE VasExperts-Enable-Service    3  string
 +ATTRIBUTE VasExperts-Multi-IP-User      integer
 +ATTRIBUTE VasExperts-UserName       string
 +ATTRIBUTE       VasExperts-Restrict-User      byte или integer
 +END-VENDOR      VasExperts
 +</code>
 +
 +<note important>Необходимо создать услуги и полисинг, которые в дальнейшем будут передавать с помощью Radius атрибутов от биллинга.
 +[[dpi:dpi_options:use_cases:qs_rateplans|Пример настройки полисинга (тарифный план) и Captive Portal, которые минимально необходимы для старта.]]</note>
 +
 +===== VasExperts-Policing-Profile =====
 +
 +Атрибут ''VasExperts-Policing-Profile'' передается в ответе Access-Accept и отвечает за применение правил полисинга.
 +
 +<note important>В ответе Access-Accept должно присутствовать **не более одного** атрибута ''VasExperts-Policing-Profile''.</note>
 +
 +Варианты задания профиля:
 +
 +==== 1. Предконфигурированный профиль====
 +Строковый атрибут, задающий имя [[dpi:dpi_components:platform:subscriber_management:subsman_profiles|профиля полисинга]]:
 +<code>VasExperts-Policing-Profile = "50Mbps"</code>
 +
 +====2. Полисинг с передачей абсолютных значений (упрощённый формат)====
 +<code>VasExperts-Policing-Profile = "BV##100000#100000#+++-++++"</code> 
 +где:
 +  * ''BV'' — By Value, применяется HTB алгоритм, где ceil для каждого класса будет равен root rate
 +  * ''##100000'' — лимит от Интернета к абоненту (download), кбит/с
 +  * ''#100000'' — лимит от абонента к Интернету (upload), кбит/с
 +  * ''#+++-++++'' — разрешение классов cs0 … cs7, rate(cs3)=0 — класс cs3 заблокирован, остальные классы используют root-скорость с возможностью заимствования (HTB)
 +
 +
 +====3. Полисинг с передачей абсолютных значений (расширенный формат HTB)====
 +В СКАТ DPI используются [[dpi:dpi_options:opt_bandwidth_mgmt:bandwidth_conf|два типа полисинга]] — HTB (Hierarchical Token Bucket) и TBF (Token Bucket Filter). В приведённых ниже примерах используется алгоритм **HTB** с ограничением минимальной (rate) и максимальной скорости по каждому классу (ceil).
 +
 +Профиль полисинга определяет общую скорость (root) и скорость для каждого класса трафика (cs0 … cs7)
 +
 +Позволяет задать параметры rate и ceil для каждого класса отдельно, содержит 36 параметров.
 +
 +<note important>Нулевые значения не передаются</note>
 +
 +Формат (передается одной строкой без переносов):
 +<code>VasExperts-Policing-Profile = "BR##4#<RIN><ROUT><CIN><COUT><RIN0><ROUT0><CIN0><COUT0><RIN1><ROUT1><CIN1><COUT1><RIN2><ROUT2><CIN2><COUT2><RIN3><ROUT3><CIN3><COUT3><RIN4><ROUT4><CIN4><COUT4><RIN5><ROUT5><CIN5><COUT5><RIN6><ROUT6><CIN6><COUT6><RIN7><ROUT7><CIN7><COUT7>
 +</code> 
 +где:
 +    * ''BR'' — By Rates
 +    * ''##4#'' — используется HTB, передаются rate и ceil для inbound и outbound
 +    * ''<RIN>'' — kbps root rate (#8192к), общая скорость для всех классов для трафика Inbound (download)
 +    * ''<ROUT>'' — kbps root rate (#8192к), общая скорость для всех классов для трафика Outbound (upload)
 +    * ''<RIN0> … <RIN7>'' — kbps class rate, минимальная скорость по классам для трафика Inbound (download)
 +    * ''<CIN0> … <CIN7>'' — kbps ceil rate, максимальная скорость по классам для трафика Inbound (download)
 +    * ''<ROUT0> … <ROUT7>'' — kbps class rate, минимальная скорость по классам для трафика Outbound (upload)
 +    * ''<COUT0> … <COUT7>'' — kbps ceil rate, максимальная скорость (ceil) по классам для трафика Outbound (upload)
 +
 +<note important>Сумма rate по классам должна быть ≤ root rate\\ Ceil каждого класса должен быть ≤ root rate</note>
 +
 +===Пример===
 +Для удобства разделен на строки, но нужно передавать одной строкой.
 +
 +<code>
 +VasExperts-Policing-Profile = "BR##4#
 +8192k8192k65M65M
 +1024k1024k8192k8192k
 +1024k1024k8192k8192k
 +1024k1024k8192k8192k
 +1024k1024k8192k8192k
 +1024k1024k8192k8192k
 +1024k1024k8192k8192k
 +1024k1024k8192k8192k
 +1024k1024k8192k8192k"
 +</code>
 +
 +=== Проверка на DPI ===
 +
 +<code>sudo fdpi_ctrl list --policing --ip <ip> | sed 's/\s/\n/g'</code>
 +
 +Пример вывода:
 +
 +<code>
 +htb_inbound_root=rate 8192kbit
 +htb_inbound_class0=rate 1024kbit ceil 8192kbit
 +htb_inbound_class1=rate 1024kbit ceil 8192kbit
 +htb_inbound_class2=rate 1024kbit ceil 8192kbit
 +htb_inbound_class3=rate 1024kbit ceil 8192kbit
 +htb_inbound_class4=rate 1024kbit ceil 8192kbit
 +htb_inbound_class5=rate 1024kbit ceil 8192kbit
 +htb_inbound_class6=rate 1024kbit ceil 8192kbit
 +htb_inbound_class7=rate 1024kbit ceil 8192kbit
 +
 +htb_root=rate 8192kbit
 +htb_class0=rate 1024kbit ceil 8192kbit
 +htb_class1=rate 1024kbit ceil 8192kbit
 +htb_class2=rate 1024kbit ceil 8192kbit
 +htb_class3=rate 1024kbit ceil 8192kbit
 +htb_class4=rate 1024kbit ceil 8192kbit
 +htb_class5=rate 1024kbit ceil 8192kbit
 +htb_class6=rate 1024kbit ceil 8192kbit
 +htb_class7=rate 1024kbit ceil 8192kbit
 +</code>
 +
 +===== VasExperts-Service-Profile =====
 +
 +Cтроковый параметр, задающий имя профиля для конкретной услуги fastDPI.\\ Формат строки:
 +<code bash>
 +service_id:profile_name
 +</code>
 +Где:  
 +  - ''service_id'' — число, [[dpi:dpi_components:platform:subscriber_management:subsman_cmd|идентификатор услуги fastDPI]];
 +  - ''profile_name'' — строка, [[dpi:dpi_components:platform:subscriber_management:subsman_profiles|имя профиля по услуге]].
 +
 +<note tip>Ответ на авторизацию может содержать ноль или более атрибутов ''VasExperts-Service-Profile'' — по одному атрибуту для каждой услуги.</note>
 +
 +====Пример 1. Подключение NAT====
 +Подключение NAT (11 услуга) с профилем "cgnat".
 +
 +<code bash>
 +VasExperts-Service-Profile="11:cgnat"
 +</code>  
 +
 +====Пример 2. Подключение белого списка====
 +Подключение [[dpi:dpi_options:opt_capture|Белого списка и Captive Portal, HTTP redirect]] (16 услуга) с указанием параметров страницы для редиректа "http://info.com" и разрешенного списка IP адресов "''/var/lib/dpi/ip_list.bin''".
 +
 +<code bash>
 +VasExperts-Service-Profile = "16:BV##/var/lib/dpi/ip_list.bin#http://info.com"
 +</code>
 +
 +====Пример 3. Переопределение классов трафика и полисинг====
 +
 +[[dpi:dpi_options:opt_shaping:shaping_session|Услуга 18 (Полисинг по сессии)]] используется для переопределения классов трафика (cs0 … cs7) и задания сессионного полисинга для конкретного абонента.
 +
 +Профиль определяет распределение протоколов DPI по классам трафика.\\ Классы назначаются индивидуально для каждого абонента.
 +
 +Формат:
 +<code>VasExperts-Service-Profile = "18:BP##profile_name#/share/#IMSI_number.dscp#IMSI_number.tbf"</code>
 +
 +где:
 +  * ''18'' — переопределение классов трафика и полисинг по сессии
 +  * ''BP'' — By Parameters
 +  * ''##profile_name'' — имя профиля, создаётся динамически, отображается в GUI и CLI
 +  * ''#/share/'' — директория на fastPCEF. Доступна по сети, передается только имя файла, а сам файл считывается из оригинальной директории. Содержит исходные (несконвертированные в бинарные) файлы .txt для удобства проверки
 +  * ''#IMSI_number.dscp'' — файл соответствия протоколов и классов трафика. Определяет, в какой класс (cs0 … cs7) помещается трафик. Поддерживает флаг **drop** для блокировки
 +  * ''#IMSI_number.tbf'' — файл с параметрами сессионного полисинга. Задает правила полисинга для отдельных протоколов. Используется для ограничения скорости на уровне сессии
 +
 +Пример:
 +<code>VasExperts-Service-Profile =18:BP##250019500475292#/share/#250019500475292.dscp#250019500475292.tbf</code>
 +===== VasExperts-Enable-Service =====
 +Cтроковый параметр, задающий включение/отключение конкретной услуги, для которой не требуется профиль.
 +Формат строки:
 +<code bash>
 +service_id:flag
 +</code>
 +где:
 +  * ''service_id'' – число, идентификатор услуги fastDPI
 +  * ''flag'' – признак включения/отключения услуги. Допустимые значения:
 +      *   1, ''on'', ''enabled'' – услуга включена
 +      *   0, ''off'', ''disabled'' – услуга отключена
 +Пример подключенной услуги: ''5:on''
 +
 +Пример отключенной услуги: ''5:off''
 +
 +В CoA для отключения услуги следует использовать данный атрибут. Например, отключение услуги 5 выглядит так:
 +''VasExperts-Enable-Service="5:off"''
 +Тогда как включение услуги 5 с профилем my_white_list - так: ''VasExperts-Service-Profile="5:my_white_list"''
 +
 +:!: __Важное замечание__: для услуг действует правило “что явно не подключается в ответе, то будет отключено”, то есть если услуга явно не помечена как enabled (или не задан профиль услуги), то услуга считается отключенной. Но для услуги 4 ([[dpi:dpi_options:opt_filtration:filtration_ctrl|black list]], фильтрация запрещенного трафика) действует более строгое правило: эту услугу нужно явно отключать для пользователя, если требуется, то есть для отключения услуги 4 “black-list” в ответе Radius-сервера должен явно присутствовать атрибут  ''VasExperts-Enable-Service="4:off"''.
 +
 +По умолчанию подключение услуги 4 “black-list” регулируется [[dpi:dpi_options:opt_filtration:filtration_ctrl|глобальными настройками fastDPI]]. Услуга 4 обычно глобально включена, чтобы не нарушать федеральное законодательство.
 +
 +===== VasExperts-Multi-IP-User =====
 +{{anchor:VasExperts-Multi-IP-User}}
 +Признак, связано ли с данным абонентом множество IP-адресов или только один. Данный атрибут может быть либо байтом, либо 32-битовым числом. Значение 1 говорит о том, что данному абоненту может быть сопоставлено несколько IP-адресов (корпоративный клиент), значение 0 – только один IP-адрес. Если в PDU отсуствует атрибут VasExperts-Multi-IP-User, считается, что абоненту сопоставлен только один 
 +IP-адрес.
 +
 +Если абоненту проставлен признак ''VasExperts-Multi-IP-User=1'', то свойства (подключенные услуги и полисинг) применяются ко всем IP-адресам абонента, ключом выступает логин абонента. Следует учитывать, что СКАТ авторизует **каждый** IP-адрес абонента: например, если с абонентом связано 10 IP-адресов, то для **каждого** адреса будет послан запрос авторизации Access-Request. Ожидается, что ответ для каждого IP-адреса multi-IP-абонента будет содержать один и тот же набор подключенных услуг и одни и те же профили. Ответ на авторизацию каждого из 10 IP-адресов будет применен к **логину** абонента, то есть все IP-адреса данного логина получают один и тот же набор услуг и один и тот же полисинг.
 +
 +===== VasExperts-UserName =====
 +Имя (логин) абонента. 
 +
 +Этот атрибут введен для некоторых биллинговых систем, которые физически не могут отдать в ответе Access-Accept/Reject атрибут ''User-Name'', но могут отдать любой VSA-атрибут. <note important>Если в ответе присутствуют оба атрибута - ''User-Name'' и ''VasExperts-UserName'', — то предпочтение отдается значению ''VasExperts-UserName''.</note>
 +
 +{{anchor:VasExperts-Restrict-User}}
 +===== VasExperts-Restrict-User =====
 +Признак блокировки абонента.
 +
 +Для СКАТ ответ Access-Accept означает, что абонент не заблокирован, а для заблокированных абонентов должно возвращаться Access-Reject со специальными атрибутами абонента, задающими ограничения. Но некоторые реализации радиус-клиентов не имеют возможности вернуть в Access-Reject атрибуты абонента. Для таких реализаций предусмотрен атрибут VasExperts-Restrict-User: 
 +  * значение 0 - абонент не заблокирован
 +  * значение 1 - абонент заблокирован
 +В случае VasExperts-Restrict-User=1 СКАТ обрабатывает Access-Accept как Accept-Reject.
 +
 +{{anchor:VasExperts-Enable-Interconnect}}
 +===== VasExperts-Enable-Interconnect =====
 +Признак разрешения/запрета замыкания локального трафика для абонента.
 +
 +Данный атрибут относится к [[dpi:bras_bng:bras_l2_options:bras_l2_vlan_local|L2 BRAS]]. Если включен режим замыкания локального трафика (local interconnect) '' bras_terminate_local=1'', L2 BRAS замыкает любых двух локальных абонентов. С помощью данного атрибута можно запретить интерконнект: ''VasExperts-Enable-Interconnect=0''
 +Пакет от одного локального абонента к другому будет дропнут, если хотя бы для одного из абонентов интерконнект запрещен.
 +
 +По умолчанию ''VasExperts-Enable-Interconnect=1'' и если в fastdpi.conf задано '' bras_terminate_local=1'', то интерконнект разрешен. Данным атрибутом можно запретить интерконнект для конкретного абонента, указав ''VasExperts-Enable-Interconnect=0''.
 +
 +
 +====== Опциональные Radius-атрибуты ======
 +Помимо перечисленных выше VSA, СКАТ поддерживает в Access-Accept/Access-Reject следующие стандартные Radius-атрибуты. Все они являются опциональными.
 +
 +===== Session-Timeout =====
 +Задает продолжительность действия авторизации абонента в секундах. По истечении данного времени СКАТ пошлет повторный запрос Access-Request авторизации.
 +
 +По умолчанию длительность сессии задается в fastdpi.conf, параметр ''auth_expired_timeout'' (в **минутах**).
 +
 +===== Acct-Interim-Interval =====
 +Задает интервал времени обновления Accounting-статистики в секундах для данного абонента.
 +
 +Interim interval по умолчанию задается в fastpcrf.conf, параметр ''radius_acct_interim_interval''.
 +
 +<note important>Явное задание ''Acct-Interim-Interval = 0'' в ответе RADIUS отключает отправку Interim-Update.</note>
 +===== Idle-Timeout =====
 +Задает интервал неизменности данных аккаунтинга, по истечении которого accounting-сессия считается закрытой из-за неактивности абонента. Idle timeout по умолчанию задается fastpcrf.conf-параметром ''radius_acct_idle_timeout''
 +Как определять неактивность абонента, задается fastpcrf.conf-параметром ''acct_check_idle_mode''. Описание параметров находится в разделе [[dpi:bras_bng:radius_integration:radius_accounting:setup]].
 +
 +===== Class =====
 +При наличии этого атрибута, он будет копироваться во все Accounting-Request PDU.
 +СКАТ не анализирует значение этого атрибута.
 +
 +
 +[[dpi:bras_bng:radius_integration:radius_auth_server_integration:radius_auth_response:radius_auth_access_reject|Особенности Access-Reject]]
 +