Планировщик (Scheduler)

Планировщик управляет механизмом очередей. Под очередью (queue) в концепции EcoRouter понимается программно реализуемая очередь пакетов. Пакеты в такой очереди удерживаются средствами планировщика до тех пор, пока не освободится место в аппаратной очереди (порт не станет доступным) для дальнейшей отправки пакетов.

В EcoRouter есть 8 очередей: queue 0 — queue 7. Приоритет очереди, обозначаемый ее номером, определяет порядок, в котором они обрабатываются (см. рисунок ниже). То есть, после передачи гарантированного объема трафика (CIR) первой будет обрабатываться очередь 0 с наивысшим приоритетом. Далее будет обрабатываться очередь 1, 2 и так далее.

Рисунок


Размер каждой очереди динамически изменяется. Это необходимо для поддержания приемлемых значений полосы пропускания, задержки и дрожании фазы для не приоритетных очередей. Это придаёт гибкость при различных вариантах построения сети и типах передаваемого трафика. Сетевому администратору не придётся задумываться о сохранении приемлемых значений параметров задержки и дрожании фазы, необходимо лишь задать полосу пропускания для конкретного типа трафика.

Очереди соотносятся с классами трафика, при этом возможны настройки, при которых часть трафика конкретного класса имеет больше гарантий по доставке. Это разделение происходит на основании количества трафика конкретного класса, переданного с начала итерации до определенного момента. Для этого вводятся понятия CIR и PIR.

CIR (Committed Information Rate) — это объём передаваемого за дельту времени трафика, который будет передан гарантированно. PIR (Peak Information Rate) — максимальное для очереди значение полосы пропускания. Трафик, превышающий PIR, будет безусловно отброшен. Если в других очередях есть трафик, он может вытеснить трафик, превышающий значение CIR, в соответствии с приоритетом.

Для каждой очереди можно задать параметры CIR и PIR в процентах или в абсолютном значении (Kbps). Также может быть задано значение remainder, отвечающий за выделение оставшейся незанятой части полосы пропускания.

Класс трафика очереди 7 по умолчанию — default. Это служебный класс, в который попадает любой трафик, не указанный остальных классах. Данный класс нельзя настроить, но можно назначить на любую очередь.

На схеме ниже представлен алгоритм обслуживания очередей планировщиком.

Рисунок


Как показано на рисунке, если в приоритетной очереди есть пакет, то планировщик сначала будет пытаться обеспечить указанный CIR для всех очередей и лишь затем распределять пакеты согласно приоритетам. После проверок обеспечения CIR и PIR для очереди пакет передаётся на сетевую карту и отправляется при наличии свободного места в аппаратной очереди. Если приоритетная очередь больше не содержит пакетов на передачу, то планировщик переходит к обработке пакетов из другой очереди. Затем процесс повторяется вновь через приоритетную очередь.

Настройка планировщика и очередей

Для создания планировщика в конфигурационном режиме используется команда: traffic-scheduler pqwrr.<NUM>.

Название планировщика обязательно должно начинаться с префикса “pqwrr.”.

Далее в созданном планировщике задаются очереди.

Синтаксис команды: queue <0-31> class <NAME> cir <CIR> pir <PIR> (wred-min <0-100> wred-max <0-100>) (wred-inv-prob <1-255>)** **(cos <0-7>) (dscp <0-64>), параметры команды описаны в таблице ниже.

Параметры команды queue:

  • 0-31 — номер очереди.
  • NAME — имя созданного класса трафика или “default” (это служебный класс, в который попадает любой трафик, не указанный остальных классах.
  • CIR — Объем передаваемого за dt трафика, который будет передан гарантированно. Суммарное значение CIR в очередях одного планировщика не может превышать 100%. Задаётся одним из следующих способов:
    • в процентах (от 0 до 100);
    • в абсолютных величинах (в Kbps). Для задания значения в абсолютных величинах, после значения параметра должно стоять обозначение kbps, например: 500000 kbps;
    • оставшаяся нераспределённой полоса — remainder.
  • PIR — Трафик, превышающий PIR  (Peak Information Rate), будет безусловно отброшен. Задаётся одним из следующих способов:
    • в процентах (от 0 до 100);
    • в абсолютных величинах (в Kbps). Для задания значения в абсолютных величинах, после значения параметра должно стоять обозначение kbps, например: 500000 kbps;
    • оставшаяся нераспределённой полоса — remainder.
  • wred-min — Минимальная граница диапазона, из которого будут отбрасываться случайные пакеты (min/max threshold). Устанавливается в диапазоне от 0 до 100%. Значение wred-min не должно быть больше значения wred-max. Значение по умолчанию — 0.
  • wred-max — Максимальная граница диапазона, из которого будут отбрасываться случайные пакеты (min/max threshold). Устанавливается в диапазоне от 0 до 100%. Значение по умолчанию — 0.
  • wred-inv-prob — Максимальная вероятность того, что пакет будет отброшен. Задаётся значение знаменателя дроби Probability = 1 / X. Значения устанавливаются в диапазоне (0 - 255). Значение по умолчанию — 10.
  • cos — Перемаркировка поля CoS пакетов при обработке очередей. Допустимые значения от 0 до 7.
  • dscp — Перемаркировка поля DSCP пакетов при обработке очередей. Допустимые значения от 0 до 64.

Параметры wred-min, wred-max и wred-inv-prob устанавливают настройки механизма WRED.

В рамках одного планировщика каждый traffic-class может назначаться только одной очереди.

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

Пример настройки очередей планировщиков:

ecorouter(config)#traffic-scheduler pqwrr.0
ecorouter(config-traffic-scheduler)# queue 2 class IPVOICE cir 60 pir 100 wred-min 45 wred-max 80 wred-inv-prob 100 cos 7 dscp 32
ecorouter(config-traffic-scheduler)# queue 5 class VIDEO cir 80 pir 100 wred-min 40 wred-max 83 wred-inv-prob 250 dscp 40
% Available CIR is 40 percent
ecorouter(config-traffic-scheduler)# queue 5 class VIDEO cir 40 pir 100 wred-min 40 wred-max 83 wred-inv-prob 250 dscp 40
ecorouter(config-traffic-scheduler)# exit
ecorouter(config)#traffic-scheduler pqwrr.1
ecorouter(config-traffic-scheduler)# queue 4 class IPVOICE cir 20000 kbps pir 50000 kbps wred-min 50 wred-max 100
ecorouter(config-traffic-scheduler)# queue 10 class VIDEO cir 100000 kbps pir 500000 kbps wred-min 5 wred-max 20 wred-inv-prob 200
ecorouter(config-traffic-scheduler)# exit