Настройка политики для абонентской сессии

Для фильтрации трафика в рамках абонентской сессии (subscriber-service) применяются политики subscriber-policy. Для одной сессии может быть назначено до 10 таких политик. Трафик последовательно будет обрабатываться в соответствии с каждой политикой в соответствии с её порядковым номером.

Создание subscriber-policy производится в конфигурационном режиме при помощи команды subscriber-policy <NAME>, где NAME — имя создаваемой сущности.

ecorouter(config)#subscriber-policy ?
  SUBSCRIBER_POLICY Subscriber policy name

После создания subscriber-policy автоматически производится переход в контекстный режим редактирования её параметров.

ecorouter(config)#subscriber-policy subspolname
ecorouter(config-sub-policy)#

Таблица — Параметры subscriber-policy

ПараметрОписание
<BANDWIDTH>Ширина полосы пропускания в Мбит/сек от 1 до 200
<DESCRIPTION>Текстовое описание политики

Каждой политике subscriber-policy пользователь может назначить 2 разных правила обработки (filter-map policy): одно для входящего (in) и одно для исходящего (out) трафика. Если filter-map policy не назначен на направление, то трафик соответствующего вида политикой не обрабатывается и не претерпевает никаких изменений. Внимание: без задания filter-map policy с ограничениями и привязки его к тому же направлению для subscriber-policy трафик до заданной полосы пропускания ограничиваться не будет!

Назначение для политики subscriber-policy на выбранное направление трафика (in или out) нужной filter-map policy производится в контекстном режиме редактирования параметров subscriber-policy при помощи команды set filter-map {in | out} <NAME>, где NAME — имя filter-map policy.

Пример настройки subscriber-policy (в данном примере предполагается, что filter-map policy с именем FMPname уже создана и настроена; создание и настройка filter-map policy описаны ниже).

ecorouter(config)#subscriber-policy subspolname
ecorouter(config-sub-policy)#description Testsubscrpolicy
ecorouter(config-sub-policy)#bandwidth in 200
ecorouter(config-sub-policy)#set filter-map in FMPname

Создание и настройка filter-map policy

Создание filter-map policy производится при помощи команды конфигурационного режима filter-map policy ipv4 <NAME>, где NAME — имя создаваемой сущности.

ecorouter(config)#filte
cy ipv4 ?
 FILTER_MAP_POLICY_IPV4 Filter map name

После создания filter-map policy автоматически производится переход в контекстный режим редактирования ее параметров.

ecorouter(config)#filter-map policy ipv4 FMPname
ecorouter(config-filter-map-policy-ipv4)#

Для настройки filter-map policy требуется выполнить следующие действия (в результате внутри filter-map policy будет создано одно правило):

  1. Первая строка. Ввести команду filter-map policy ipv4 <FILTER_MAP_NAME> [<SEQUENCE_NUMBER>], где FILTER_MAP_NAME — имя списка доступа, SEQUENCE_NUMBER — порядковый номер правила в списке доступа. Подробнее параметры описаны в таблице ниже.
  2. Вторая строка. Указать правило, на соответствие которому будут проверяться пакеты, следующего вида: match <PROTOCOL> <SRC_ADDRESS> [<PORT_CONDITION>] <DST_ADDRESS>[<PORT_CONDITION>] [dscp <DSCPVALUE>] [<FLAG>]. Подробнее параметры описаны в таблицах ниже.
  3. Третья строка. Указать действие, которое будет применяться к пакетам, удовлетворяющим условиям правила, следующего вида set <ACTION>. Подробнее параметры описаны в таблице ниже.

Список доступа может содержать несколько правил. Для добавления правила в существующий список доступа следует повторить шаги, описанные выше. В качестве FILTER_MAP_NAME следует указывать имя списка доступа, куда правило должно быть добавлено. Правило должно иметь уникальный номер SEQUENCE в рамках одной filter-map policy.

Таблица — Общие параметры filter-map policy 

ПараметрОписание
DIRECTIONНаправление трафика, in - входящий трафик, out - исходящий трафик
FILTER_MAP_NAMEИмя списка фильтрации, может принимать любое значение
SEQUENCE_NUMBERНомер приоритета выполнения, допустимые значения 0-65535. Если значение не задано, то параметр для созданного filter-map ethernet автоматически получит последующее свободное значение с шагом 10
PROTOCOLЗначение поля protocol. Может быть указано значение поля в диапазоне (0-255) или одно из следующих обозначений:

- ipinip;
- icmp;
- gre;
- igmp;
- pim;
- rsvp;
- ospf;
- vrrp;
- ipcomp;
- any (любой протокол);
- udp (внимание, для данного протокола доступны дополнительные параметры <PORT_CONDITION>);
- tcp (внимание, для данного протокола доступны дополнительные параметры <PORT_CONDITION> и )
SRC_ADDRESSIP-адрес источника, задается в одном из следующих форматов:

- A.B.C.D/M (IP-адрес с маской),
- A.B.C.D K.L.M.N (IP-адрес с инверсной маской),
- host A.B.C.D (если под правило должен подпадать единственный адрес),
- any (если под правило должны попадать все адреса)
DST_ADDRESSIP-адрес назначения, задается в одном из следующих форматов:

- A.B.C.D/M (IP-адрес с маской),
- A.B.C.D K.L.M.N (IP-адрес с инверсной маской),
- host A.B.C.D (если под правило должен подпадать единственный адрес),
- any (если под правило должны подпадать все адреса)
DSCPVALUEЗначение DSCP (Differentiated Services Code Point) для проверки пакета, целое число от 0 до 63
set
set acceptРазрешить. Если в subsriber-policy, где используется данная filter-map policy, задана полоса пропускания (параметр bandidwth), то для этого типа трафика будет применено ограничение скорости до указанных в bandwidth значений
set discardЗапретить без отправки ICMP-уведомления
set nexthop <A.B.C.D>Указать IP-адрес next hop. Пакеты, попавшие под действие правила, отсылаются на адрес next-hop c учётом существующих маршрутов в RIB
set redirect Перенаправить HTTP GET на указанный <REDIRECTNAME>, где <REDIRECTNAME> — имя заранее заданного URL (адрес для перенаправления должен начинаться с http://). Пример настройки перенаправления приведён ниже.
set rejectЗапретить с отправкой ICMP-уведомления
set vrf <VRF_NAME> [<A.B.C.D>]Для пакетов, попавших под действие правила, будет использоваться таблица маршрутизации vrf, где VRF_NAME — имя необходимого vrf. Для данного vrf можно при необходимости указать IP-адрес next hop

При указании протокола udp вторая строка команды создания filter-map policy будет иметь следующий вид: match udp <SRC_ADDRESS> [<PORT_CONDITION>] <DST_ADDRESS> [<PORT_CONDITION>] [dscp <DSCPVALUE>].

Таблица — Дополнительные параметры при указании udp

ПараметрОписание
PORT_CONDITIONУсловие для значения порта. Может быть указано одно из следующих значений:
{{eq │ gt │ lt} {tftp │ bootp │ <0-65535>} │ range <0-65535> <0-65535>}
Значения PORT_CONDITION
eqНомер порта равен
gtНомер порта больше, чем
ltНомер порта меньше, чем
tftpUDP(69)
bootpUDP(67)
<0-65535>Точный номер порта, любое значение из указанного диапазона
range <0-65535> <0-65535>Номер порта входит в диапазон

При указании протокола tcp вторая строка команды создания filter-map policy будет иметь следующий вид: match tcp <SRC_ADDRESS> [<PORT_CONDITION>] <DST_ADDRESS> [<PORT_CONDITION>] [dscp <DSCPVALUE>] [<FLAG>].

Таблица — Дополнительные параметры при указании tcp

ПараметрОписание
PORT_CONDITIONУсловие для значения порта. Может быть указано одно из следующих значений: {{eq │ gt │ lt} {ftp │ ssh │ telnet │ www │ <0-65535>} │ range <0-65535> <0-65535>}
FLAGЗначения флага, по которым может производиться обработка пакетов. Может быть указано одно из следующих значений (префикс not- означает, что указанный флаг не установлен): ack | not-ack | fin | not-fin | psh | not-psh | rst | not-rst | syn | not-syn | urg | not-urg
- ack — установлен флаг ACK (номер подтверждения),
- fin — установлен флаг FIN (завершение соединения),
- psh — установлен флаг PSH (инструктирует получателя протолкнуть данные, накопившиеся в приёмном буфере, в приложение пользователя),
- rst — установлен флаг RST (оборвать соединение, очистить буфер),
- syn — установлен флаг SYN (синхронизация номеров последовательности),
- urg — установлен флаг URG (указатель важности),
- not-ack — не установлен флаг ACK,
- not-fin — не установлен флаг FIN,
- not-psh — не установлен флаг PSH,
- not-rst — не установлен флаг RST,
- not-syn — не установлен флаг SYN,
- not-urg — не установлен флаг URG.

Можно перечислить несколько флагов через пробел. При этом правило сработает, если в пакете будут установлены все перечисленные флаги. Например, правило not-rst syn ack сработает, если пакет содержит флаги SYN и ACK, но не содержит RST
Значения PORT_CONDITION
eqНомер порта равен
gtНомер порта больше, чем
ltНомер порта меньше, чем
ftpTCP(21)
sshTCP(22)
telnetTCP(23)
wwwTCP(HTTP-80)
<0-65535>Точный номер порта, любое значение из указанного диапазона
range <0-65535> <0-65535>Номер порта входит в диапазон

Задание адреса для перенаправления

ecorouter(config)#redirect-url SITEREDIRECT
ecorouter(config-redirect-url)#url http://forredirect.org

Пример настроек для обработки трафика в абонентской сессии

В данном примере настроен статический IPoE.

В результате выполнения приведённых ниже настроек на вход (применяется filter-map policy NAME1) будет отбрасываться весь icmp-трафик, udp-трафик будет ограничен до 20 Мбит/сек, tcp-трафик будет пропускаться без изменений.

Трафик на выход (применяется filter-map policy NAME2) будет ограничен до 5 Мбит/сек, tcp-трафик порта 80 будет перенаправлен на адрес http://forredirect.org.

!
filter-map policy ipv4 NAME1 10
 match icmp any any
 set discard
filter-map policy ipv4 NAME1 20
 match udp any any
 set accept
filter-map policy ipv4 NAME2 10
 match tcp any any eq 80
 set redirect SITEREDIRECT
filter-map policy ipv4 NAME2 20
 match any any any
 set accept
!
subscriber-policy NAME
 bandwith in 20
 set filter-map in NAME1 10
 bandwith out 5
 set filter-map out NAME2 10
!
subscriber-service NAME
 set policy NAME
!
ip prefix-list NAME seq 5 permit 10.10.10.100/32 eq 32
!
subscriber-map NAME 10
 match static prefix-list NAME
 set service NAME
!
interface ipoe.1
 ip mtu 1500
 ip address 10.10.10.1/24
 ```