Политика Shaper#

Описание#

Дисциплина очередей: Hierarchical Token Bucket (HTB).
Применяется к: исходящему трафику.

Политика Shaper не гарантирует низкую задержку, но гарантирует определенную полосу пропускания для различных классов трафика, а также позволяет распределить трафик при соблюдении данных гарантий.

Каждый класс предоставляет гарантированную часть полосы пропускания, определенную для политики целиком. Другие классы оперируют оставшейся полосой пропускания, доступной в политике.

Если гарантированная полоса пропускания обеспечена, а загрузка трафиком ее не превышает, то может быть использован параметр ceiling, который определяет выделяемую долю полосы пропускания. Если гарантированная полоса пропускания обеспечена, и несколько классов используют заданный для них параметр ceiling, то можно использовать параметр priority для распределения дополнительного трафика в определенном порядке. Параметр priority представляет собой число от 0 до 7. Чем ниже значение параметра priority, тем выше приоритет.

Политика Shaper может быть встроена в класс другой политики с помощью параметра queue-type.

fakel@fakel# set traffic-policy shaper HTB class 10 queue-type
Possible completions:
   fq-codel       Fair Queue Codel
   fair-queue     Stochastic Fair Queue (SFQ)
   drop-tail      First-In-First-Out (FIFO)
   priority       Priority queueing based on DSCP
   random-detect  Random Early Detection (RED)
fakel@fakel# set traffic-policy shaper HTB class 10
Possible completions:
   bandwidth      Bandwidth used for this class
   burst          Burst size for this class (default: 15kb)
   ceiling        Bandwidth limit for this class
   codel-quantum  fq-codel - Number of bytes used as 'deficit' (default 1514)
   description    Description for this traffic class
   flows          fq-codel - Number of flows (default 1024)
   interval       fq-codel - Interval (milliseconds) used to measure the delay (default 100)
+> match          Class matching rule name
   priority       Priority for usage of excess bandwidth
   queue-limit    Maximum queue size (packets)
   queue-type     Queue type for this class
   set-dscp       Change the Differentiated Services (DiffServ) field in the IP header
   target         fq-codel - Acceptable minimum queue delay (milliseconds)

Примечание

Если сконфигурирован класс для трафика, источником которого является технология VoIP, не рекомендуется задавать для него параметр ceiling. В противном случае новые звонки могут не пройти из-за того, что полоса пропускания уже поделена между остальными классами.

Далее представлен пример использования политики Shaper с приоритетами.

set traffic-policy shaper MY-HTB bandwidth '50mbit'
set traffic-policy shaper MY-HTB class 10 bandwidth '20%'
set traffic-policy shaper MY-HTB class 10 match DSCP ip dscp 'EF'
set traffic-policy shaper MY-HTB class 10 queue-type 'fq-codel'
set traffic-policy shaper MY-HTB class 20 bandwidth '10%'
set traffic-policy shaper MY-HTB class 20 ceiling '50%'
set traffic-policy shaper MY-HTB class 20 match PORT666 ip destination port '666'
set traffic-policy shaper MY-HTB class 20 priority '3'
set traffic-policy shaper MY-HTB class 20 queue-type 'fair-queue'
set traffic-policy shaper MY-HTB class 30 bandwidth '10%'
set traffic-policy shaper MY-HTB class 30 ceiling '50%'
set traffic-policy shaper MY-HTB class 30 match ADDRESS30 ip source address '192.168.30.0/24'
set traffic-policy shaper MY-HTB class 30 priority '5'
set traffic-policy shaper MY-HTB class 30 queue-type 'fair-queue'
set traffic-policy shaper MY-HTB default bandwidth '10%'
set traffic-policy shaper MY-HTB default ceiling '100%'
set traffic-policy shaper MY-HTB default priority '7'
set traffic-policy shaper MY-HTB default queue-type 'fair-queue'

Список команд#

Основные настройки#

# set traffic-policy shaper <policy-name>#

Задает уникальное имя для политики фильтрации трафика типа Shaper.

# set traffic-policy shaper <policy-name> bandwidth <rate>#

Устанавливает гарантированную полосу пропускания для всего трафика без учета классов.

# set traffic-policy shaper <policy-name> class <class-ID>#

Задает числовой идентификатор класса для политики фильтрации трафика типа Shaper.

# set traffic-policy shaper <policy-name> class <class-ID> bandwidth <rate>#

Устанавливает гарантированную полосу пропускания для трафика определенного класса.

# set traffic-policy shaper <policy-name> class <class-ID> burst <bytes>#

Задает размер токен-корзины в байтах (по умолчанию - 15 КБ), которая будет использована при передаче трафика на скорости параметра ceiling.

# set traffic-policy shaper <policy-name> class <class-ID> ceiling <bandwidth>#

Задает максимально возможную скорость для определенного класса.

# set traffic-policy shaper <policy-name> class <class-ID> priority <0-7>#

Устанавливает приоритет (по умолчанию - 0) использования доступной полосы пропускания при условии, что обеспечена гарантированная полоса.