Глава 3. Policing: различия между версиями
Строка 121: | Строка 121: | ||
=== Policing using a firewall filter === | === Policing using a firewall filter === | ||
*Можно применять полисеры внутри ff: тогда в ''then'' нужно указать не терминирующее действие. | |||
*Могут применяться только к ''family'' | |||
*Могут применяться на in/out | |||
====Configuration==== | |||
''hard'': | ''hard'': | ||
[edit firewall family inet] | |||
filter hard { | |||
term 1 { | |||
from { | |||
source-address { | |||
10.200.86.3/32 except; }} | |||
then { | |||
policer hard-100m; | |||
accept; }} | |||
term all-accept { | |||
then accept; }} | |||
[edit firewall] | |||
policer hard-100m { | |||
if-exceeding { | |||
bandwidth-limit 100m; | |||
burst-size-limit 250k;} | |||
then '''discard''';} | |||
''soft'': | ''soft'': | ||
[edit firewall family inet] | |||
filter soft { | |||
term 1 { | |||
from { | |||
source-address { | |||
10.200.86.3/32 except; }} | |||
then { | |||
policer soft-100m; | |||
forwarding-class expedited-forwarding; | |||
accept; }} | |||
term all-accept { | |||
then accept; }} | |||
[edit firewall] | |||
policer soft-100m { | |||
if-exceeding { | |||
bandwidth-limit 100m; | |||
burst-size-limit 250k; } | |||
then forwarding-class best-effort; } | |||
В этом случае трафику, in-of-profile будет назначен fw-class expedited-forwarding, а трафику попадающему в out-of-profile - best-effort. | |||
В этом случае трафику, in-of-profile будет назначен fw-class | |||
'''Filter-specific policer''': применяется к ''term'', на все термы суммарно будет одно общее ограничение. | '''Filter-specific policer''': применяется к ''term'', на все термы суммарно будет одно общее ограничение. | ||
set firewall policer hard '''filter-specific''' | |||
set firewall policer hard if-exceeding bandwidth-limit 100m | |||
set firewall policer hard if-exceeding burst-size-limit 250k | |||
set firewall policer hard then discard | |||
set firewall family inet filter hard-f term A from source-address | set firewall family inet filter hard-f term A from source-address 10.200.86.5/32 | ||
set firewall family inet filter hard-f term A then policer hard | set firewall family inet filter hard-f term A then policer hard | ||
set firewall family inet filter hard-f term A then accept | set firewall family inet filter hard-f term A then accept | ||
set firewall family inet filter hard-f term B from source-address | set firewall family inet filter hard-f term B from source-address 10.200.86.3/32 | ||
set firewall family inet filter hard-f term B then policer hard | set firewall family inet filter hard-f term B then policer hard | ||
set firewall family inet filter hard-f term B then accept | set firewall family inet filter hard-f term B then accept | ||
set firewall family inet filter hard-f term all-other then accept | set firewall family inet filter hard-f term all-other then accept | ||
set interfaces ge- | set interfaces ge-0/0/0 unit 110 family inet filter hard-f | ||
В случае с '''single-rate/two-rate tricolor marking''' полисеры и фильтры выглядят по-другому: | В случае с '''single-rate/two-rate tricolor marking''' полисеры и фильтры выглядят по-другому: | ||
Строка 179: | Строка 193: | ||
set firewall family inet filter TCM-fil term A then three-color-policer single-rate srTCM-A | set firewall family inet filter TCM-fil term A then three-color-policer single-rate srTCM-A | ||
set interfaces ge-0/0/0 unit 110 family int filter TCM-fil | |||
====Physical interface policer==== | |||
ну и для '''two-rate''' не сложно догадаться как будет выглядеть. | ну и для '''two-rate''' не сложно догадаться как будет выглядеть. |
Версия 22:26, 15 января 2017
В общем
- Первая ступень управления трафиком при заторах. Использует bandwidth threshold and max burst size. Может управлять трафиком, который превысил оба порога (не только шейпить).
- Применяются ограничения bandwidth для вх и исх трафика.
- Обеспечивает соблюдение SLA.
- Определяет трафик как: in-profile (трафик не превысивший threshold) и out-profile (трафик, превысивший threshold).
Особенности
- Для создания policer:
- -bandwidth threshold + max burst size
- -действие: reject, discard, ...
- Применяется:
- - на интерфейс.
- - в качестве действия внутри firewall filter, firewall filter вешается на интерфейс.
- Использует token-bucket алгоритм: есть некий burst, до того, как начать влиять на трафик.
Hard/Soft
Hard: Все что выходит за рамки ограничения - дропается.
Soft: Трафик который превышает лимит:
- Он "поступает" на устройство, но направляется в определенный forwarding class.
- Он попадает на устройство, но ему присваивается определенное значение PLP, по которому в случае заторов он будет отброшен шедулерами.
Параметры
CIR, CBS: commited information rate (бит/с) / burst size (байт): зеленый - кол-во трафика < CBS - точняк пройдет.
PIR, PBS/EBS: peak information rate (бит/с), peak/exceed burst size (байт): то, что < PBS - пройдет, но в случае заторов пакеты могут быть дропнуты. То что больше - будет дропаться.
Single-rate two-color policer
- One rate threshold (CIR)
- One burst size threshold, creates 2 colors. (CBS)
- Traffic exceed CIR + CBS => discard / set forwarding class / set PLP
Config
blair> show configuration firewall policer 100m if-exceeding { bandwidth-limit 100m; burst-size-limit 2500000; } then discard;
Tricolor marking policers
Single-rate tricolor marking policy
Policing основан на двух burst thresholds.
- One rate threshold (CIR)
- Two burst size threshold (CBS, EBS). Creates 3 colors.
- Markings:
- < CBS - green = low PLP
- CBS < x < EBS - yellow = medium-high PLP
- > EBS - red - high PLP
Two-rate tricolor marking policy
Policing основан на bandwidth thresholds.
- Two rates (CIR, PIR). Creating 3 colors.
- Two burst size threshold (CBS, PBS).
- Markings:
- < CIR+CBS - green = low PLP
- CIR+CBS < x < PIR+PBS - yellow = medium-low PLP
- > PIR+PBS - red = high PLP
Color-blind mode
Policer не рассматривает предыдущее окрашивание пакета. Любые прежние настройки - игнорируются. PLP назначайся в соответствии с настройками policer.
Color-aware mode
Policer учитывает предыдущую окраску пакета.
При обработке single-rate tricolor и two-rate tricolor на выходе получается пакет с результирующей меткой + учитывается текущее прохождение пакета.
PLP может увеличиваться, оставаться прежним, но не уменьшаться.
По умолчанию tricolor mode включён только на М120 и МХ серии.
Для остальных включается руками:
[edit class-of-service] tri-color;
Config
blair# top show | compare [edit firewall] three-color-policer 50m { logical-interface-policer; action { loss-priority high then discard; } single-rate { color-blind; committed-information-rate 50m; committed-burst-size 1500; excess-burst-size 6k; }} three-color-policer 50-60m { two-rate { committed-information-rate 50m; committed-burst-size 1500; peak-information-rate 60m; peak-burst-size 1500; }}
Application
Interface policers
- Не часть firewall filter.
- Можно применить к: protocol family, logical int, physical int.
- Можно применить на input и output.
Configuration
Для protocol family:
blair# top show | compare [edit interfaces ge-0/0/0 unit 110 family inet] policer { input 100m; output 100m; } [edit firewall] policer 100m { if-exceeding { bandwidth-limit 100m; burst-size-limit 250k; } then discard | forwarding-class | loss-priority; }
В таком случае threshold по трафику на каждую family будет 100 Мбит.
Для Logical interface policers: полисер применяется к family на интерфейсе, но threshold теперь применяется ко всем family в unit сразу. То есть в нашем случае в общем на ge-0/0/0.110 будет ограничение 100m.
[edit firewall policer 100m] + logical-interface-policer;
Policing using a firewall filter
- Можно применять полисеры внутри ff: тогда в then нужно указать не терминирующее действие.
- Могут применяться только к family
- Могут применяться на in/out
Configuration
hard:
[edit firewall family inet] filter hard { term 1 { from { source-address { 10.200.86.3/32 except; }} then { policer hard-100m; accept; }} term all-accept { then accept; }} [edit firewall] policer hard-100m { if-exceeding { bandwidth-limit 100m; burst-size-limit 250k;} then discard;}
soft:
[edit firewall family inet] filter soft { term 1 { from { source-address { 10.200.86.3/32 except; }} then { policer soft-100m; forwarding-class expedited-forwarding; accept; }} term all-accept { then accept; }} [edit firewall] policer soft-100m { if-exceeding { bandwidth-limit 100m; burst-size-limit 250k; } then forwarding-class best-effort; }
В этом случае трафику, in-of-profile будет назначен fw-class expedited-forwarding, а трафику попадающему в out-of-profile - best-effort.
Filter-specific policer: применяется к term, на все термы суммарно будет одно общее ограничение.
set firewall policer hard filter-specific set firewall policer hard if-exceeding bandwidth-limit 100m set firewall policer hard if-exceeding burst-size-limit 250k set firewall policer hard then discard
set firewall family inet filter hard-f term A from source-address 10.200.86.5/32 set firewall family inet filter hard-f term A then policer hard set firewall family inet filter hard-f term A then accept set firewall family inet filter hard-f term B from source-address 10.200.86.3/32 set firewall family inet filter hard-f term B then policer hard set firewall family inet filter hard-f term B then accept set firewall family inet filter hard-f term all-other then accept
set interfaces ge-0/0/0 unit 110 family inet filter hard-f
В случае с single-rate/two-rate tricolor marking полисеры и фильтры выглядят по-другому:
set firewall three-color-policer srTCM-A single-rate color-blind set firewall three-color-policer srTCM-A single-rate committed-information-rate 500m set firewall three-color-policer srTCM-A single-rate committed-burst-size 1m set firewall three-color-policer srTCM-A single-rate excess-burst-size 5m set firewall family inet filter TCM-fil term A then three-color-policer single-rate srTCM-A
set interfaces ge-0/0/0 unit 110 family int filter TCM-fil
Physical interface policer
ну и для two-rate не сложно догадаться как будет выглядеть.
Physical interface policer
Physical interface policing: дает возможность создать аггрегированный полисер для одного физического интерфейса. Может быть полезным, если хочется создать общий полисер для разных family и разных unit на одном физическом интерфейсе.
set firewall policer int-poli physical-interface-policer set firewall policer int-poli if-exceeding bandwidth-limit 100m set firewall policer int-poli if-exceeding burst-size-limit 200k set firewall policer int-poli then forwarding-class best-effort
set firewall family inet filter phys-int physical-interface-filter set firewall family inet filter phys-int term A then policer int-poli set firewall family inet filter phys-int term A then accept
set interfaces ge-1/0/5 unit 0 family inet filter input phys-int set interfaces ge-1/0/5 unit 0 family inet6 filter input phys-int set interfaces ge-1/0/5 unit 2 family inet filter input phys-int set interfaces ge-1/0/5 unit 2 family inet6 filter input phys-int
В этом случае полисер 100 Мбит будет общим для всего физического интерфейса.
Policiers + Firewalls
Можно одновременно повесить на интерфейс и policer и filter.
Вх. трафик будет обрабатываться: 1.policer => 2.filter
Исх. трафик будет обрабатываться: 1.filter => 1.policer