ISGv2 Intro

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску

Введение в ISG

  • Intelligent Services Gateway (ISG) — это набор функций программного обеспечения Cisco и есть только у Cisco, аналогичный функционал у других вендоров называется иначе.


Шлюз интеллектуальных служб (ISG) представляет собой решение для терминирования абонентов/подписчиков для гибкой настройки услуг (не очень понятное определение с сайта)

ISG занимается следующими ключевыми аспектами управления подписчиками:

  • Идентификация абонента
  • Определение службы и политики
  • Применение политики сеанса
  • Управление жизненным циклом сеанса
  • Учет доступа и использования услуг
  • Мониторинг состояния сеанса
  • CoA (Radius) для изменения состояния "не лету"


ISG 1.png

По картинке немного яснее

  • по первому пакету сходить за авторизацией, потом за политиками и сделать или доступ в интернет или редирект на портал или еще что-то по желанию
  • сервисы (набор правил для абонента) можно при желании хранить и полностью локально в конфигурации устройства

Ключевые термины которые нужно разобрать

  • Subscriber Sessions
  • Subscriber Access
  • Subscriber Identification
  • Subscriber Services
  • Policies
  • Dynamic Policy Updates

Subscriber Sessions

Сессия (иногда переводят как сеанс) ISG — это общий системный контекст, который создается для каждого подписчика, взаимодействующего с пограничным устройством.
По сути - это какой-то объект в памяти устройства который имеет собственный идентификатор и создается при первом взаимодействии абонента с шлюзом - по сути по первому пакету.
И этот программный объект содержит информацию по авторизации, службам (ограничение скорости или файрволл и прочее)

Так как мы живем в мире победившего ethernet то сессия это абстракция, в отличии от PPP где сессия изначально подразумевало наличие телефонного соединения

Subscriber Access

Пока что совершенно непонятный термин

Under ISG, the provisioning and handling of specific access media and protocols is decoupled as far as possible from the functionality that is applicable to all session types. This model has the following benefits:

* A common set of subscriber services may be used on an ISG at which heterogeneous subscriber networks are aggregated.
* A common set of subscriber services may be used for multiple ISGs, even when the access technology differs.
* For a given subscriber, the access method may be altered (through provisioning or roaming) without any need to change the service provisioning.

As new access protocols become available, they can be leveraged by existing edge deployments without requiring changes to the service content; new access protocols plug into the ISG framework.

Subscriber Identification

По событиям (первый пакет как самый частый пример) - сходить с запросом с тем что есть на RADIUS
А есть обычно IP адрес и МАК опционально

Пишут что стартом сессии может быть и DHCP

Для IP-сеанса, когда начало сеанса сигнализируется событием протокола DHCP, может быть активирована политика перенаправления TCP. Эта политика облегчит сбор имени пользователя и учетных данных на внешнем веб-портале.

Subscriber Services

Сервис (или услуга) - это набор политик которые применяются к абонентской сессии
Сервис сожет быть активирован в 3 случаях

  • As a result of control policy execution - самый интересный и важный, подводит к понятию control policy
  • By receipt of a CoA service-logon command - понятно что по CoA пакету можно что-то триггернуть
  • By reference in a user profile, where the service is flagged for automatic activation - что написано понятно, как это написать в конфиге - пока нет

Policies

ISG introduces support for two basic policy types:

  • Traffic policies
  • Control policies

Traffic policies

Traffic policy определяют обработку пакетов данных и состоят из

  • traffic class который определяет критерии на основе пакетов для которых применима политика, и
  • одного или нескольких traffic actions, которые являются функциональными экземплярами, которые выполняют определенные операции с потоком данных и часто называют функциями.

Действия над трафиком, настроенные в политике трафика, вызываются для пакетов данных, которые соответствуют критериям, определенным классом трафика.
Тут пример не помешает (TODO)

Network-forwarding policies — это особый тип traffic policy, для которого действие представляет собой действие пересылки по сети,
например маршрутизация пакетов с использованием определенного VRF или пересылка пакетов через L2.

Network-forwarding policies являются «бесклассовыми» в том смысле, что невозможно уточнить критерии, для которых применимо действие переадресации.

Control policies

Control policies определяют обработку системных событий (handling) и состоят из одного или нескольких

  • control policy rules (правил политики управления)
  • decision strategy ( и стратегии принятия решений)

decision strategy определяет, как оцениваются составляющие правила политики.

Правило политики управления состоит из класса управления (предложения с гибким условием), события, для которого оценивается условие, и одного или нескольких управляющих действий. Управляющие действия — это общие системные функции, такие как «аутентификация» или «активация службы».

Тут конечно без примера никуда. Для начала -эта та самая важная политика которая настраивается на интерфейсе и полностью определяет все поведение
например
policy-map type control ISG-CUSTOMERS-POLICY

class type control ISG-IP-UNAUTH event timed-policy-expiry
 1 service disconnect
!
class type control always event session-start
 10 authorize aaa list AAA-LIST-ISG-AUTH password secret identifier source-ip-address
 20 set-timer UNAUTH-TIMER 5
 30 service-policy type service name POLICY_MAP_SERVICE_ON_SESSION_START_
!
class type control always event session-restart
 10 authorize aaa list AAA-LIST-ISG-AUTH password secret identifier source-ip-address
 20 set-timer UNAUTH-TIMER 5
 30 service-policy type service name POLICY_MAP_SERVICE_ON_SESSION_RESTART_
!
class type control always event service-stop
 1 service-policy type service unapply identifier service-name
 10 service-policy type service unapply identifier service-name
 20 log-session-state
!
class type control always event radius-timeout
 20 set-timer UNAUTH-TIMER 60
 30 service-policy type service name POLICY_MAP_SERVICE_ON_SESSION_RADIUS_TIMEOUT_
!
class type control always event access-reject
 20 set-timer UNAUTH-TIMER 60
 30 service-policy type service name ALLOW_172_31_100_2
 40 service-policy type service name ALLOW_172_31_100_3_SPEED_8k
 50 service-policy type service name NO_SERVICE
!


Пока без пояснений - это просто пример

Dynamic Policy Updates

События

Полный список такой, однако по описаниям далеко не все понятно

  • access-reject Radius authentication failed - если Radius прислал Acсess-Reject
  • account-logoff Upon an account logoff - насколько я могу судить, это возможно только с CoA, если пришел внешний пакет
  • account-logon Upon an account logon - Radius прислал Acсess-Accept
  • acct-notification Upon an Accounting Notification event
  • credit-exhausted Upon the billing server returning qt=0 qv=0 it>0
  • dummy-event Dummy event to test suspendable actions
  • flow-timeout Upon flow timeout of a service
  • quota-depleted Upon the depletion of allocated quota
  • radius-timeout RADIUS server timed out during authentication - Radius не ответил за определнный тайм-аут
  • service-failed Upon failure of a service
  • service-start Upon a request to start a service
  • service-stop Upon a request to stop a service
  • session-default-service Upon providing default service
  • session-restart Upon a session being restarted
  • session-service-found Upon network plumbing service determined
  • session-start Upon a session being created
  • timed-policy-expiry Upon a timed policy expiry - Событие возникает когда на сессии был установлен таймер и он истек



timed-policy-expiry

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

class-map type control match-all ISG-IP-UNAUTH
 match authen-status unauthenticated
 match timer UNAUTH-TIMER



policy-map type control ISG-CUSTOMERS-POLICY
 class type control ISG-IP-UNAUTH event timed-policy-expiry
  1 service disconnect
 !
...
 class type control always event radius-timeout
  20 set-timer UNAUTH-TIMER 60
  30 service-policy type service name POLICY_MAP_SERVICE_ON_SESSION_RADIUS_TIMEOUT_

В этом случае (если радиус не работает) произойдет событие radius-timeout, взведется таймер с именем UNAUTH-TIMER ( на 60 минут)
и по его истечении будет сгенерировано событие timed-policy-expiry
Это событие будет обработано строкой class type control ISG-IP-UNAUTH event timed-policy-expiry по-тому что:

  • event timed-policy-expiry - совпадает со сгенерированным событием
  • ISG-IP-UNAUTH - имя class-map type control который проверяется на соответстие
    • match-all - должны сработать все условия
    • match authen-status unauthenticated - сабскрайбер не аутентифицирован (так как радиус не ответил), условие совпадает
    • match timer UNAUTH-TIMER - имя таймера который истек, совпадает (20 set-timer UNAUTH-TIMER 60

В целом эта конструкция реализует логику "если радиус не ответил, назначить сервис POLICY_MAP_SERVICE_ON_SESSION_RADIUS_TIMEOUT_", и через 60 митут сбросить сессию,
Что при активности со стороны сабскрайбера тут же вызовет новую попытку авторизации, и соответвенно новый запрос в радиус. Если радиус заработал - то результат зависит от ответа со
стороны радиуса, если радиус не заработал (опять тайм-айт), то опять следующая попытка через 60 минут.

В современных реалиях логично давать доступ в интернет при неработающем радиусе.

session-start

policy-map type control IPOE_CUSTOMERS
 class type control COND_LAST event timed-policy-expiry
  10 service disconnect
 !
 class type control always event session-start
  10 authorize aaa list ISG_AUTH_LIST password radiuspassword identifier source-ip-address 
  20 set-timer 2MIN 2
...

Или

policy-map type control ISG-CUSTOMERS-POLICY
 class type control ISG-IP-UNAUTH event timed-policy-expiry
  1 service disconnect
 !
 class type control always event session-start
  10 authorize aaa list AAA-LIST-ISG-AUTH password secret identifier source-ip-address
  20 set-timer UNAUTH-TIMER 5
  30 service-policy type service name POLICY_MAP_SERVICE_ON_SESSION_START_
Политика IPOE_CUSTOMERS управляет всем циклом жизни сесcии. 
И является ключевым элементом, который описывает что, когда и как делать с абонентской сессией. 
В приведенном ниже примере она достаточна проста. 
По событию session-start на биллинг( метод ISG_AUTH_LIST) пошлется access-request ,
где в качестве username будет указан ip адрес клиента.Если авторизация не удастся, тогда на сессию повесится 2х-минутный таймер и она завершится по его истечению(event timed-policy-expiry).

Обращаю внимание ,что во всех мануалах рекомендуется на данном этапе (event session-start) третьим и четвертым действием разрешить клиенту 
временный доступ к ресурсам в OPENGARDEN и заблокировать/заредиректить все остальное. 

А при событии account-logon(по приходу access-accept от биллинга) снять эти сервисы. В виду того,что фантазия системного администратора безгранична, 
предлагается самостоятельно под себя настроить сценарий того что надо делать с клиентом в эти две минуты. 
Как правило до этого шага могут дойти абоненты если лег радиус и от него нет ответов. В приведенном примере если абонента не 
удается авторизовать он все равно будет иметь доступ в интернет(пока Вы чините radius).
И в большинстве случаев это будут вполне легитимные клиенты , если на доступе настроен dhcp snooping/ip source guard и прочие фичи.


session-restart

service-stop

radius-timeout

access-reject

account-logon

account-logon(по приходу access-accept от биллинга)

Ссылки