Глава 2. Packet classification: различия между версиями

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску
м
 
(не показано 25 промежуточных версий этого же участника)
Строка 1: Строка 1:
=About=
{{#description2:Основы классификации пакетов. Дефолтные классы. Packet loss priority (PLP). Типы классификации: fixed (interface based), MF (multifield), BA (behavior aggregate), mixed. Классификаторы. Информация для подготовки к экзаменам Juniper.}}
'''Цель классификации пакетов''': исследовать трафик, разделить трафик по разным классам и разместить его в разные очереди. Далее назначить forwardin class и packet loss priority.
=Основы классификации пакетов=
'''Цель классификации пакетов''': исследовать трафик и ассоциировать пакеты с конкретным cos service level (c forwarding class и loss priority). И уже на основании forw class пакет обрабатывается по правилам конкретной очереди (queue).


Т.е.: определение и назначение forwarding class = помещение пакта в нужную очередь.
Т.е.: определение и назначение forwarding class = помещение пакета в нужную очередь.


'''Forwarding class''' - не возникает из вне сети. Но при назначении FW class конкретному типу трафика на начальном узле, может быть опознан и обработай корректно на других узлах сети.
Ассоциирование трафика происходит по code-point меткам любого типа: DSCP (ip) / EXP (mpls) и другим.
 
'''Forwarding class''' - не возникает извне сети. Но при назначении FW class конкретному типу трафика на начальном узле, может быть опознан и обработай корректно на других узлах сети.


Пакеты определенного класса могут быть перекласифицированы дальше в сети.
Пакеты определенного класса могут быть перекласифицированы дальше в сети.
==4 дефолтных класса: ==
==Дефолтные классы==
* BF (Best effort) = 0 queue - default for PHB.
На всех роутерах есть уже предустановленные F-classes и queues для них:
* EF (Expedited forwarding) = 1 - low loss, low delay, low jitter - voice.
* BF (Best effort) = 0 queue - default for PHB -  по умолчанию пакеты в этой очереди при заторах - дропаются.
* AF (assured forwarding) = 2 - концентрация в основном на packet loss.
* EF (Expedited forwarding) = 1 - гарантированная полоса, low loss, low delay, low jitter - хорош для voice. Избыточный трафик принимается но при отправке его дальше часть трафика может быть дроппнута, часть переслана в неверном порядке.
* NC (network control) = 3
* AF (assured forwarding) = 2 - концентрация в основном на packet loss - хорошо для типа трафика, чувствительного к потерям. Избыточный трафик принимается, но к нему применяется: RED drop profile. 4 drop probabilities для этого класса: low, medium-low, medium-high, and high.
* NC (network control) = 3 - low priority. Но в условиях заторов - трафик не дропается, т.к. передает служебную инфу для протоколов.


Можно создавать свои:
Можно создавать свои или менять для существующих классов названия, например:
  blair> show class-of-service forwarding-class   
  blair> show class-of-service forwarding-class   
  Forwarding class ID Queue Policing priority
  Forwarding class ID Queue Policing priority
Строка 21: Строка 25:
   tv-data 3 3 normal
   tv-data 3 3 normal


config
  blair# show class-of-service forwarding-classes  
  blair# show class-of-service forwarding-classes  
  class be queue-num 0;
  class be queue-num 0;
Строка 29: Строка 32:


MX, T, M7i/M10i с CFEB-E: до 16 классов, до 8 очередей.
MX, T, M7i/M10i с CFEB-E: до 16 классов, до 8 очередей.
Назначение очереди происходит по следующим правилам:
*Если классификатор не занес пакет в какой-то класс, то умолчанию ему назначают BE forwardong-class, queue 0.
*Конфигурация CoS по умолчанию основана на номере очереди. Имя класса пересылки, которое появляется при отображении конфигурации по умолчанию - это класс пересылки, связанный в данный момент с этой очередью.
*Конфиг, где в QoS определено больше очередей, чем поддерживает роутер - не сможет быть закоммичен.
Только для BE и NC по дефолту определены и forwarding classes и schedulers. Для EF, AF требуется их (schedulers) настраивать.
Только IP precedence classifiers работают на интерфейсах.


==Packet loss priority (PLP)==
==Packet loss priority (PLP)==
Строка 57: Строка 69:


=Виды классификаций=
=Виды классификаций=
== Fixed classification (Interface based)==
Каждый Ingress interface должен выбрать для себя способ классификации.
 
== Fixed classification (interface based)==
Один forwarding class назначается на unit (vlan) и применяется ко всем входящим пакетам.
Один forwarding class назначается на unit (vlan) и применяется ко всем входящим пакетам.


Строка 66: Строка 80:
Или если upstream узел ненадежный и нужно ''перекрасить'' весь трафик, приходящий на этот порт (обычно BE в подобных ситуациях).
Или если upstream узел ненадежный и нужно ''перекрасить'' весь трафик, приходящий на этот порт (обычно BE в подобных ситуациях).


Config
При использовании такого метода нельзя сделать исключения для какого-то трафика, поэтому такой метод считается не очень "гибким" для использования.
 
'''Config'''
  blair# show class-of-service interfaces  
  blair# show class-of-service interfaces  
  ge-0/0/0 {
  ge-0/0/0 {
Строка 76: Строка 92:
Классификация основана на 1 или более полей в заголовке пакета: port, IP, prefix, mac.
Классификация основана на 1 или более полей в заголовке пакета: port, IP, prefix, mac.
   
   
Для выделения нужного трафика по определенным полям используется обычный firewall-filter.
Для выделения нужного трафика по определенным полям используется обычный '''stateless''' firewall-filter. (использует не только source/dest ip).


MF лучше применять на ingress (в самом начале попадания пакета в сеть).
MF лучше применять на ingress (в самом начале попадания пакета в сеть).
Можно использовать MF для переклассификации пакетов, классифицированных ранее BA.


Config (можно писать несколько term, определяя по разным параметрам трафик и запихивая его в разные очереди)
Config (можно писать несколько term, определяя по разным параметрам трафик и запихивая его в разные очереди)
  [edit interfaces ge-0/0/0 unit 80 family inet]
  set interfaces ge-0/0/0 unit 80 family inet filter input qos-tv-data
      filter {
          input qos-tv-data;}
[edit]
  firewall {
      family inet {
          filter qos-tv-data {
              term 1 {
                  from {
                      source-address {
                          239.30.30.0/24;}}
                  then {
                      forwarding-class tv-data;
                      accept;}}
              term all-accept {
                  then accept; }}}}


== BA classification ==
set firewall family inet filter qos-tv-data term 1 from source-address 239.30.30.0/24
BA классификация основана на уже заданном у пакета значении QoS, т.е. пакет уже был ранее классифицирован другим устройством и присвоил конкретную QoS метку. На основании этой метки пакет будет обработан устройством.
set firewall family inet filter qos-tv-data term 1 then '''forwarding-class tv-data'''
set firewall family inet filter qos-tv-data term 1 then '''accept'''
set firewall family inet filter qos-tv-data term all-accept '''then accept'''
 
== BA (behavior aggregate) classification ==
BA классификация основана по уже заданному у пакета значении QoS, т.е. пакет уже был ранее классифицирован другим устройством и присвоил конкретную QoS метку. На основании этой метки пакет будет обработан устройством.


Здесь напрямую приводится соответствие: CoS <> Forwarding class + PLP => более эффективный способ по сравнению с MF (не нужно тратить ресурсы на классификацию).
Здесь напрямую приводится соответствие: CoS <> Forwarding class + PLP => более эффективный способ по сравнению с MF (не нужно тратить ресурсы на классификацию).
Строка 111: Строка 119:
Хорош для core device.
Хорош для core device.


Может работать по: IPv4 DSCP, IPv6 DSCP, IP precedence bits, MPLS EXP bits, IEEE 802.1p CoS bits, IEEE 802.1ad drop eligible indicator (DEI).
Может работать по: IPv4 DSCP, IPv6 DSCP, IP precedence bits, MPLS EXP bits (experimental), IEEE 802.1p CoS bits, IEEE 802.1ad drop eligible indicator (DEI).


Все логические интерфейсы по умолчанию используют ipprec-compatibility => если включить MPLS на интерфейсе - он будет использовать exp-default классификатор.
Все логические интерфейсы по умолчанию используют ipprec-compatibility => если включить MPLS на интерфейсе - он будет использовать exp-default классификатор.


BA классификатор лучше применять внутри сети (не на входе в сеть).
set class-of-service interfaces ge-0/0/0 unit * classifiers dscp dscp-classifier
set class-of-service interfaces ge-0/0/0 unit * classifiers exp exp-classifier
set class-of-service classifiers dscp dscp-classifier forwarding-class best-effort loss-priority low code-points be
set class-of-service classifiers dscp dscp-classifier forwarding-class vpn loss-priority low code-points vpn-low
set class-of-service classifiers dscp dscp-classifier forwarding-class vpn loss-priority high code-points vpn-high
set class-of-service classifiers dscp dscp-classifier forwarding-class vpn-priority loss-priority low code-points vpn-priority
set class-of-service classifiers dscp dscp-classifier forwarding-class nc loss-priority low code-points nc
set class-of-service classifiers exp exp-classifier forwarding-class best-effort loss-priority low code-points be
set class-of-service classifiers exp exp-classifier forwarding-class vpn loss-priority low code-points vpn-low
set class-of-service classifiers exp exp-classifier forwarding-class vpn loss-priority high code-points vpn-high
set class-of-service classifiers exp exp-classifier forwarding-class vpn-priority loss-priority low code-points vpn-priority
set class-of-service code-point-aliases dscp be 000000
set class-of-service code-point-aliases dscp vpn-low 001010
set class-of-service code-point-aliases dscp vpn-high 001100
set class-of-service code-point-aliases dscp vpn-priority 101110
set class-of-service code-point-aliases dscp nc 110000
set class-of-service code-point-aliases exp be 000
set class-of-service code-point-aliases exp vpn-low 010
set class-of-service code-point-aliases exp vpn-high 011
set class-of-service code-point-aliases exp vpn-priority 101
p.s. code-points можно использовать и дефолтные, а можно прописать свои user-friendly. Посмотреть существующие: ''show class-of-service code-point-aliases''
==Mixed classification==
На интерфейс можно применить как MF, так и BA классификатор.
*Сначала производится классификация по BA, потом по MF.
*При этом если трафик подойдет под оба классификатора, то так как последним будет MF, то и трафик классифицируется по его правилам.
=Classifiers=
  blair> show class-of-service interface     
  blair> show class-of-service interface     
   Logical interface: ge-0/0/0.100, Index: 72 ('''IPv4 + MPLS interface''')
   Logical interface: ge-0/0/0.100, Index: 72 ('''IPv4 + MPLS interface''')
     Object                  Name                  Type                    Index
     Object                  Name                  Type                    Index
     Rewrite                exp-default            exp (mpls-any)            33
     Rewrite                '''exp-default'''           exp (mpls-any)            33
     Classifier              exp-default            exp                        10
     Classifier              '''exp-default'''           exp                        10
     Classifier              ipprec-compatibility  ip                        13
     Classifier              '''ipprec-compatibility'''   ip                        13
   Logical interface: ge-0/0/1.0, Index: 75 ('''only IPv4 interface''')
   Logical interface: ge-0/0/1.0, Index: 75 ('''only IPv4 interface''')
     Object                  Name                  Type                    Index
     Object                  Name                  Type                    Index
     Classifier              ipprec-compatibility  ip                        13
     Classifier              '''ipprec-compatibility'''   ip                        13


Остальные дефолтные классификаторы:
Остальные дефолтные классификаторы:
Строка 149: Строка 190:
   classifiers {
   classifiers {
       dscp voice {
       dscp voice {
           import default;
           '''import default''';
           forwarding-class assured-forwarding {
           forwarding-class assured-forwarding {
               loss-priority high code-points 001000; }}}
               '''loss-priority high code-points 001000'''; }}}
  [edit class-of-service interfaces ge-0/0/0]
  [edit class-of-service interfaces ge-0/0/0]
   unit 100 {
   unit 100 {
         classifiers {
         classifiers {
             dscp voice;}}
             dscp voice;}}
 
=Дополнительная информация=
BA классификатор лучше применять внутри сети (не на входе в сеть).
*[[Глава 1. QoS]]
 
*[[Глава 4. Scheduling]]
На интерфейс можно применять 2 BA классификатора.
*[[Глава 6. Rewrite rules]]
 
На интерфейс можно применить как MF, так и BA классификатор.  
*Сначала производится классификация по BA, потом по MF.
*При этом если трафик подойдет под оба классификатора, то так как последним будет MF, то и трафик классифицируется по его правилам.

Текущая версия на 18:18, 15 июля 2021

Основы классификации пакетов

Цель классификации пакетов: исследовать трафик и ассоциировать пакеты с конкретным cos service level (c forwarding class и loss priority). И уже на основании forw class пакет обрабатывается по правилам конкретной очереди (queue).

Т.е.: определение и назначение forwarding class = помещение пакета в нужную очередь.

Ассоциирование трафика происходит по code-point меткам любого типа: DSCP (ip) / EXP (mpls) и другим.

Forwarding class - не возникает извне сети. Но при назначении FW class конкретному типу трафика на начальном узле, может быть опознан и обработай корректно на других узлах сети.

Пакеты определенного класса могут быть перекласифицированы дальше в сети.

Дефолтные классы

На всех роутерах есть уже предустановленные F-classes и queues для них:

  • BF (Best effort) = 0 queue - default for PHB - по умолчанию пакеты в этой очереди при заторах - дропаются.
  • EF (Expedited forwarding) = 1 - гарантированная полоса, low loss, low delay, low jitter - хорош для voice. Избыточный трафик принимается но при отправке его дальше часть трафика может быть дроппнута, часть переслана в неверном порядке.
  • AF (assured forwarding) = 2 - концентрация в основном на packet loss - хорошо для типа трафика, чувствительного к потерям. Избыточный трафик принимается, но к нему применяется: RED drop profile. 4 drop probabilities для этого класса: low, medium-low, medium-high, and high.
  • NC (network control) = 3 - low priority. Но в условиях заторов - трафик не дропается, т.к. передает служебную инфу для протоколов.

Можно создавать свои или менять для существующих классов названия, например:

blair> show class-of-service forwarding-class   
Forwarding class	ID	Queue	Policing priority
 be			0	0	normal   
 ef			1	1	normal  
 voice			2	2	normal 
 tv-data		3	3	normal
blair# show class-of-service forwarding-classes 
class be queue-num 0;
class ef queue-num 1;
class voice queue-num 2;
class tv-data queue-num 3;

MX, T, M7i/M10i с CFEB-E: до 16 классов, до 8 очередей.

Назначение очереди происходит по следующим правилам:

  • Если классификатор не занес пакет в какой-то класс, то умолчанию ему назначают BE forwardong-class, queue 0.
  • Конфигурация CoS по умолчанию основана на номере очереди. Имя класса пересылки, которое появляется при отображении конфигурации по умолчанию - это класс пересылки, связанный в данный момент с этой очередью.
  • Конфиг, где в QoS определено больше очередей, чем поддерживает роутер - не сможет быть закоммичен.

Только для BE и NC по дефолту определены и forwarding classes и schedulers. Для EF, AF требуется их (schedulers) настраивать.

Только IP precedence classifiers работают на интерфейсах.

Packet loss priority (PLP)

Определяет вероятность отбрасывания при заторах. Пакет с наибольшим PLP будет отброшен первым.

PLP назначается на ingress, когда используем классификаторы. Однако, PLP также можно назначить и позднее с помощью policer.

PLP может принимать 4 значения: low, medium-low, medium-high, high. По умолчанию JunoOS использует 2: low, high.

Если смотреть на default classifier, можно менять их в конфигурации:

000 - best-effor (low)

001 - best effort (high)

010 - exp-forwarding (low)

011 - exp-forwarding (high)

...

110 - network-control (low)

111 - network-control (high)

lower-priority = high drop eligibility

Виды классификаций

Каждый Ingress interface должен выбрать для себя способ классификации.

Fixed classification (interface based)

Один forwarding class назначается на unit (vlan) и применяется ко всем входящим пакетам.

Классификация очень грубая.

Такую схему хорошо использовать, если нужно особым способом обработать весь трафик клиента на одном интерфейсе.

Или если upstream узел ненадежный и нужно перекрасить весь трафик, приходящий на этот порт (обычно BE в подобных ситуациях).

При использовании такого метода нельзя сделать исключения для какого-то трафика, поэтому такой метод считается не очень "гибким" для использования.

Config

blair# show class-of-service interfaces 
ge-0/0/0 {
    unit 60 {
        forwarding-class voice;}}

MF (multifield) classification

Классификация основана на 1 или более полей в заголовке пакета: port, IP, prefix, mac.

Для выделения нужного трафика по определенным полям используется обычный stateless firewall-filter. (использует не только source/dest ip).

MF лучше применять на ingress (в самом начале попадания пакета в сеть).

Можно использовать MF для переклассификации пакетов, классифицированных ранее BA.

Config (можно писать несколько term, определяя по разным параметрам трафик и запихивая его в разные очереди)

set interfaces ge-0/0/0 unit 80 family inet filter input qos-tv-data
set firewall family inet filter qos-tv-data term 1 from source-address 239.30.30.0/24
set firewall family inet filter qos-tv-data term 1 then forwarding-class tv-data
set firewall family inet filter qos-tv-data term 1 then accept
set firewall family inet filter qos-tv-data term all-accept then accept

BA (behavior aggregate) classification

BA классификация основана по уже заданному у пакета значении QoS, т.е. пакет уже был ранее классифицирован другим устройством и присвоил конкретную QoS метку. На основании этой метки пакет будет обработан устройством.

Здесь напрямую приводится соответствие: CoS <> Forwarding class + PLP => более эффективный способ по сравнению с MF (не нужно тратить ресурсы на классификацию).

Применяется к unit (vlan).

Обрабатывает все пакеты с одинаковой CoS меткой - одинаково.

Обеспечивает одинаковый приоритет трафика на всей сети.

Хорош для core device.

Может работать по: IPv4 DSCP, IPv6 DSCP, IP precedence bits, MPLS EXP bits (experimental), IEEE 802.1p CoS bits, IEEE 802.1ad drop eligible indicator (DEI).

Все логические интерфейсы по умолчанию используют ipprec-compatibility => если включить MPLS на интерфейсе - он будет использовать exp-default классификатор.

BA классификатор лучше применять внутри сети (не на входе в сеть).

set class-of-service interfaces ge-0/0/0 unit * classifiers dscp dscp-classifier
set class-of-service interfaces ge-0/0/0 unit * classifiers exp exp-classifier
set class-of-service classifiers dscp dscp-classifier forwarding-class best-effort loss-priority low code-points be
set class-of-service classifiers dscp dscp-classifier forwarding-class vpn loss-priority low code-points vpn-low
set class-of-service classifiers dscp dscp-classifier forwarding-class vpn loss-priority high code-points vpn-high
set class-of-service classifiers dscp dscp-classifier forwarding-class vpn-priority loss-priority low code-points vpn-priority
set class-of-service classifiers dscp dscp-classifier forwarding-class nc loss-priority low code-points nc
set class-of-service classifiers exp exp-classifier forwarding-class best-effort loss-priority low code-points be
set class-of-service classifiers exp exp-classifier forwarding-class vpn loss-priority low code-points vpn-low
set class-of-service classifiers exp exp-classifier forwarding-class vpn loss-priority high code-points vpn-high
set class-of-service classifiers exp exp-classifier forwarding-class vpn-priority loss-priority low code-points vpn-priority
set class-of-service code-point-aliases dscp be 000000
set class-of-service code-point-aliases dscp vpn-low 001010
set class-of-service code-point-aliases dscp vpn-high 001100
set class-of-service code-point-aliases dscp vpn-priority 101110
set class-of-service code-point-aliases dscp nc 110000
set class-of-service code-point-aliases exp be 000
set class-of-service code-point-aliases exp vpn-low 010
set class-of-service code-point-aliases exp vpn-high 011
set class-of-service code-point-aliases exp vpn-priority 101

p.s. code-points можно использовать и дефолтные, а можно прописать свои user-friendly. Посмотреть существующие: show class-of-service code-point-aliases

Mixed classification

На интерфейс можно применить как MF, так и BA классификатор.

  • Сначала производится классификация по BA, потом по MF.
  • При этом если трафик подойдет под оба классификатора, то так как последним будет MF, то и трафик классифицируется по его правилам.

Classifiers

blair> show class-of-service interface    
 Logical interface: ge-0/0/0.100, Index: 72 (IPv4 + MPLS interface)
   Object                  Name                   Type                    Index
   Rewrite                 exp-default            exp (mpls-any)             33
   Classifier              exp-default            exp                        10
   Classifier              ipprec-compatibility   ip                         13
 Logical interface: ge-0/0/1.0, Index: 75 (only IPv4 interface)
   Object                  Name                   Type                    Index
   Classifier              ipprec-compatibility   ip                         13

Остальные дефолтные классификаторы:

blair> show class-of-service classifier | match Classifier 
Classifier: dscp-default, Code point type: dscp, Index: 7
Classifier: dscp-ipv6-default, Code point type: dscp-ipv6, Index: 8
Classifier: dscp-ipv6-compatibility, Code point type: dscp-ipv6, Index: 9
Classifier: exp-default, Code point type: exp, Index: 10
Classifier: ieee8021p-default, Code point type: ieee-802.1, Index: 11
Classifier: ipprec-default, Code point type: inet-precedence, Index: 12
Classifier: ipprec-compatibility, Code point type: inet-precedence, Index: 13
Classifier: ieee8021ad-default, Code point type: ieee-802.1ad, Index: 41

Если хотите использовать другой (или несколько других), то в class-of-service interfaces нужно их применить к интерфейсу.

blair# set class-of-service interfaces ge-0/0/0 unit 100 classifiers ?                                   
> dscp                 Differentiated Services code point classifier
> dscp-ipv6            Differentiated Services code point classifier IPv6
> exp                  EXP classifier
> ieee-802.1           IEEE-802.1 classifier
> ieee-802.1ad         IEEE-802.1ad (DEI) classifier
> inet-precedence      IPv4 precedence classifier

При создании собственных классификаторов, для простоты можно использовать дефолтные классификаторы как шаблон и заменить некоторые правила на свои. (в режиме конфигурации классификатора: import <default classifier>)

[edit class-of-service]
  classifiers {
      dscp voice {
          import default;
          forwarding-class assured-forwarding {
              loss-priority high code-points 001000; }}}
[edit class-of-service interfaces ge-0/0/0]
  unit 100 {
        classifiers {
           dscp voice;}}

Дополнительная информация