Mikrotik man (offsite). Руководства:Очередь (Queue) - Справочные материалы - Системное администрирование - Каталог статей - Архив документации и мануалов для админов

Воскресенье, 11.12.2016, 13:49
Приветствую Вас Гость | RSS
Мой сайт
Главная
Регистрация
Вход
Форма входа

Меню сайта

Категории раздела
Об ОС Windows [137]
В категории размещаются статьи, касающщиеся операционных систем от Microsoft.
Об ОС *Nix [198]
В данной категории собраны статьи об ОС семейства Unix/Linux/FreeBSD/...
Справочные материалы [351]
Справка по всему разделу.
Виртуализация и Облака [46]
Networks & Routing [86]
DataBases [22]

Наш опрос
Оцените мой сайт
Всего ответов: 193

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Системное администрирование » Справочные материалы

Mikrotik man (offsite). Руководства:Очередь (Queue)

Руководства:Очередь (Queue)

From MikroTik Wiki

Jump to: navigation, search

Данный материал является переводом оригинальной англоязычной статьи с небольшими исправлениями и дополнениями. Изменено исходное форматирование оригинальной статьи.


Version.png

Applies to RouterOS: 2.9, v3, v4

Contents

Подкатегории

Список страниц, ссылающихся на данную статью

Смежные темы

Список примеров

Руководства:Очередь_(Queue) has no subpages to list.


Очереди

Подменю: /queue

Очереди задействуются для ограничения и приоритизации трафика. Они могут быть использованы для:

  • ограничения скорости передачи данных для определённых IP-адресов, подсетей, протоколов, портов и по другим параметрам
  • ограничения пирингового (peer-to-peer, p2p) трафика
  • приоритизации некоторых потоков пакетов над другими
  • настройки "взрывного" (burst) режима прохода трафика для ускорения веб-браузинга
  • применения различных ограничений по времени
  • распределения доступного трафика поровну между пользователями или в зависимости от загрузки канала

Организация очередей в MikroTik RouterOS основана на Hierarchical Token Bucket (HTB, Иерархический Буфер Токенов). HTB позволяет создать иерархическую структуру очередей и задать зависимости между ними.

В RouterOS эти иерархические структуры могут быть размещены в 4 разных местах:

  • global-in: объединяет в себе все входящие интерфейсы в целом (ВХОДЯЩАЯ очередь). Очереди, размещённые в global-in, применяются к полученному маршрутизатором трафику ещё до пакетной фильтрации.
  • global-out: объединяет в себе все исходящие интерфейсы в целом (ИСХОДЯЩАЯ очередь).
  • global-total: объединяет в себе все входящие и исходящие интерфейсы вместе (иными словами, является агрегацией global-in и global-out). Используется в случае, когда пользователям установлено единое ограничение в обоих направлениях: как исходящего, так и входящего трафика.
  • <имя интерфейса>: представляет собой один конкретный исходящий интерфейс. Только предназначенный для выхода через данный интерфейс трафик пройдёт через эту HTB-очередь.

Существует два разных способа настройки очередей в RouterOS:

  • меню /queue simple - предназначено для облегчения конфигурирования в случаях простых повседневных задач с использованием очередей (таких как ограничение исходящей/входящей скорости для одиночного клиента, ограничение p2p-трафика и т.п.).
  • меню /queue tree - для выполнения расширенных задач с применением очередей (таких как глобальная политика приоритетов, установка ограничений для групп пользователей). Требуется предварительная маркировка пакетов в таблице Mangle (/ip firewall mangle).

Простые очереди (Simple Queues)

Подменю: /queue simple

С помощью одного пункта в таблице /queue simple можно создать от 0 до 3 отдельных очередей – одну очередь в global-in, одну в global-out и одну в global-total. Если все параметры очереди имеют значения по умолчанию (не задано ограничений, типом применяемой очереди является default), и очередь не имеет дочерних очередей, то она фактически не создана. Данным способом, например, можно избежать создание очередей в global-total, если задействовано только ограничение исходящей/входящей скорости.

Простые очереди имеют строгий порядок – каждый пакет должен пройти через каждую очередь до тех пор, пока он не станет удовлетворять условиям. В случае наличия 1000 очередей, пакету, соответствующему условиям последней очереди, необходимо будет пройти через 999 очередей, прежде чем он достигнет своего назначения. Иными словами, к простым очередям применяется тот же самый алгоритм, что и при пакетной фильтрации: с первого правила до последнего, сверху вниз до первого соответствия.

Идентификаторы потока

Параметр Описание
target-addresses (IP-адрес/сетевая маска; Default: ) Список диапазонов IP-адресов, которые будут ограничены данной очередью.
interface (имя интерфейса или all (все возможные интерфейсы); Default: ) Задаёт интерфейс, за которым находится целевая аудитория. Полезно в случае, когда нет возможности указать целевые адреса.

Каждая из этих двух опций может быть использована для определения, какое направление является для цели исходящим, а какое входящим.

Будьте осторожны при использовании сразу обеих этих опций в одной и той же очереди – в случае, если они будут указывать разные направления, очередь не будет работать.

Если не задано значение ни для target-addresses, ни для interface, очередь будет неспособна определить разницу между исходящим и входящим направлениями, и ограничит весь трафик дважды.

Другие параметры

Параметр Описание
name (текст; Default: ) Уникальный идентификатор очереди, который может быть использован в качестве значения опции parent для других очередей.
direction (направление (возможные варианты: both (оба) | upload (исходящее) | download (входящее) | не выбрано ни одно); Default: both) Позволяет включить для простых очередей ограничение в одном направлении (отключить в другом)
  • both – ограничение как исходящего, так и входящего трафика
  • upload – ограничение только исходящего от целевой аудитории трафика
  • download – ограничение только направляющегося к целевой аудитории трафика
time (ВРЕМЯ-ВРЕМЯ,sun,mon,tue,wed,thu,fri,sat; ВРЕМЯ – локальное значение времени, указание дней недели – опционально; Default: параметр не активен) Позволяет задать время, в течение которого отдельно взятая очередь будет активна. В маршрутизаторе должны быть выставлены корректные настройки времени.
dst-address (IP-адрес/сетевая маска; Default: ) Позволяет выделить только определённый поток (идущий от целевого адреса до данного адреса назначения), к которому необходимо применить ограничения, разъясняет, что есть цель, а что есть назначение и что является исходящим потоком, а что нет.
p2p (доступные варианты: all-p2p | bit-torrent | blubster | direct-connect | edonkey | fasttrack | gnutella | soulseek | winmx; Default: параметр не активен) Позволяет отфильтровать для последующего применения ограничений нешифрованные пакеты отдельных p2p-протоколов.
packet-marks (разделённый запятыми список имён промаркированных пакетов; Default: ) Позволяет использовать пакеты, промаркированные в таблице Mangle (/ip firewall mangle). Взгляните на блок-схему похождения пакетов в RouterOS. Необходимо промаркировать пакеты до того, как они достигнут места расположения простых очередей (до HTB-очереди в global-in) иначе, ограничение входящего потока целевой аудитории не будет работать. Единственной цепочкой в таблице Mangle, стоящей до global-in, является цепочка prerouting.

Параметры HTB

Параметр Описание
parent (имя родителя простой очереди или "none" (текущая очередь не имеет родительской очереди); Default: ) Назначает текущую очередь в качестве дочерней (зависимой) для указанной в данном параметре очереди. Указываемая очередь может быть либо HTB-очередью, либо любой другой ранее созданной простой очередью. Для того чтобы трафик достиг дочерних очередей, в родительские очереди должен быт направлен весь необходимый трафик.
priority (1..8; Default: ) Устанавливает приоритет одной дочерней очереди над другой. Не работает с родительскими очередями (если очередь имеет хотя бы одну дочернюю очередь). 1 – наивысший приоритет, 8 – самый низкий приоритет. Дочерняя очередь с более высоким приоритетом будет иметь возможность достичь своего limit-at раньше дочерней очереди с более низким приоритетом и далее, дочерняя очередь с более высоким приоритетом будет иметь возможность достичь своего max-limit раньше дочерней очереди с более низким приоритетом. Приоритет ни как не влияет при "взрывном" (burst) режиме прохождении трафика.
queue (имя типа очереди/имя типа очереди; Default: ) Определяет тип исходящей/входящей очереди. Необходимый тип очереди может быть создан в /queue type.
limit-at (скорость/скорость; Default: ) Исходящая/входящая скорость передачи данных, которая гарантируется целевой аудитории.
max-limit (скорость/скорость; Default: ) Максимальная исходящая/входящая скорость передачи данных, которая позволена данной целевой аудитории.
burst-limit (скорость/скорость; Default: ) Максимальная исходящая/входящая скорость передачи данных, которая может быть достигнута пока активен "взрывной" (burst) режим прохождения трафика.
burst-time (время/время; Default: ) Период времени в секундах, для которого будет рассчитываться среднее значение исходящей/входящей скорости передачи данных (это НЕ продолжительность фактического периода "взрывного" (burst) режима прохождения трафика).
burst-threshold (скорость/скорость; Default: ) Когда средняя скорость передачи данных ниже этого значения, "взрывной" (burst) режим прохождения трафика разрешён, как только среднее значение скорости передачи данных достигнет данного значения, "взрывной" режим будет отменён (иными словами, является своего рода переключателем вкл./выкл. для "взрывного" режима). Для оптимального функционирования "взрывного" режима это значение должно быть выше значения limit-at, но ниже значения max-limit.


И соответствующие параметры для HTB-очереди в global-total:

Параметр Описание
total-queue (имя типа очереди; Default: ) То же самое что и для queue
total-limit-at (скорость; Default: ) То же самое что и для limit-at
total-max-limit (скорость; Default: ) То же самое что и для max-limit
total-burst-limit (скорость; Default: ) То же самое что и для burst-limit
total-burst-time (время; Default: ) То же самое что и для burst-time
total-burst-threshold (скорость; Default: ) То же самое что и для burst-threshold


Правильным решением является следующее:

Сумма значений limit-at всех дочерних очередей должна быть меньше или равна значению max-limit родительской очереди.
Значение max-limit каждой дочерней очереди должен быть меньше значения max-limit родительской очереди. Тем самым вы оставите место для трафика других дочерних очередей, и им не придётся бороться за трафик между собой.
Icon-note.png

Note: Последнее утверждение не совсем верно, т.к. вполне допустимо указать для дочерних очередей значение max-limit равное значению max-limit родительской очереди, а чтобы избежать конкуренции за трафик между очередями достаточно задать гарантированную полосу пропускания для каждой дочерней очереди с помощью limit-at согласно первой половине данной рекомендации.


Статистика

Параметр Описание
rate (только для чтения/только для чтения; Default: ) Среднее значение скорости передачи данных очереди в битах в секунду.
packet-rate (только для чтения/только для чтения; Default: ) Среднее значение скорости передачи данных очереди в пакетах в секунду.
bytes (только для чтения/только для чтения; Default: ) Количество байтов, обработанных данной очередью.
packets (только для чтения/только для чтения; Default: ) Количество пакетов, обработанных данной очередью.
queued-bytes (только для чтения/только для чтения; Default: ) Количество байтов, ожидающих в очереди (помещённых в буфер).
queued-packets (только для чтения/только для чтения; Default: ) Количество пакетов, ожидающих в очереди (помещённых в буфер).
dropped (только для чтения/только для чтения; Default: ) Количество отброшенных пакетов.
borrows (только для чтения/только для чтения; Default: ) Пакеты прошедшие, через очередь сверх её значения limit-at (необработанные другими очередями пакеты, отправленные из них в текущую очередь).
lends (только для чтения/только для чтения; Default: ) Количество пакетов, прошедших через очередь, не превышая её значения limit-at, ИЛИ, если очередь является родительской, сумма всех пакетов, "одолженных" всем её дочерним очередям (иными словами, сумма значений borrows всех её дочерних очередей).
pcq-queues (только для чтения/только для чтения; Default: ) Количество PCQ-подпотоков если в качестве типа очереди выбрана PCQ-очередь.


И соответствующие параметры для HTB-очереди в global-total:

Параметр Описание
total-rate (только для чтения; Default: ) То же самое что и для rate
total-packet-rate (только для чтения; Default: ) То же самое что и для packet-rate
total-bytes (только для чтения; Default: ) То же самое что и для bytes
total-packets (только для чтения; Default: ) То же самое что и для packets
total-queued-bytes (только для чтения; Default: ) То же самое что и для queued-bytes
total-queued-packets (только для чтения; Default: ) То же самое что и для queued-packets
total-dropped (только для чтения; Default: ) То же самое что и для dropped
total-borrows (только для чтения; Default: ) То же самое что и для borrows
total-lends (только для чтения; Default: ) То же самое что и для lends
total-pcq-queues (только для чтения; Default: ) То же самое что и для pcq-queues

Дерево очередей (Queue Tree)

Подменю: /queue tree

Дерево очередей представляет собой исключительно однонаправленную HTB-очередь. Использование дерева очередей также является единственным способом поместить очередь на отдельном интерфейсе. Это в свою очередь делает возможным упростить настройку в таблице Mangle – у вас отпадает необходимость отдельно маркировать исходящие и входящие потоки трафика – только исходящий поток попадёт на внешний (Public) интерфейс, а на локальный (Private) интерфейс попадёт только входящий поток.

Также возможно направить последовательно один и тот же трафик в две очереди (например, чтобы сначала присвоить трафику приоритеты в зависимости от его типа в global-in или global-out, а затем задать ограничение для каждого отдельного клиента на исходящем интерфейсе). Если у вас в одной HTB-очереди задействованы как простые очереди, так и дерево очередей, имейте в виду, что трафик сперва пройдёт через простые очереди.

В дереве очередей отсутствует строгая последовательность обработки трафика как в простых очередях – весь трафик попадает в необходимые очереди сразу, одновременно.

Icon-warn.png

Warning: Пытаясь освоить QoS в MikroTik RouterOS, используя в качестве руководства презентацию по QoS от Мегиса (Janis Megis) PDF – будьте осторожны – в данной презентации содержится грубая ошибка: при наличии SRC-NAT/Masquerading нельзя размещать PCQ-очереди на внешнем (Public) HTB-интерфейсе для исходящего с данного интерфейса трафика. HTB-интерфейс расположен уже после SRC-NAT, поэтому у всех пакетов в качестве исходящего адреса в заголовке будет прописан один и тот же адрес – адрес внешнего интерфейса. В подобных случаях (наличие SRC-NAT/Masquerading) PCQ-очереди для исходящего трафика необходимо размещать в total-out.



Идентификаторы потока

Параметр Описание
name (текст; Default: ) Уникальный идентификатор очереди, который может быть использован в качестве значения опции parent для других очередей.
packet-marks (разделённый запятыми список имён промаркированных пакетов; Default: ) Позволяет использовать пакеты промаркированные в таблице Mangle (/ip firewall mangle). Взгляните на блок-схему похождения пакетов в RouterOS. Вам необходимо убедиться, что пакеты промаркированы до того, как они достигнут места расположения простых очередей (до HTB-очереди в global-in).


Параметры HTB

Параметр Описание
parent (имя родителя простой очереди или "none" (текущая очередь не имеет родительской очереди); Default: ) Назначает текущую очередь в качестве дочерней (зависимой) для указанной в данном параметре очереди. Указываемая очередь может быть либо HTB-очередью, либо любой другой ранее созданной очередью.
priority (1..8; Default: ) Устанавливает приоритет одной дочерней очереди над другой. Не работает с родительскими очередями (если очередь имеет хотя бы одну дочернюю очередь). 1 – наивысший приоритет, 8 – самый низкий приоритет. Дочерняя очередь с более высоким приоритетом будет иметь возможность достичь своего limit-at раньше дочерней очереди с более низким приоритетом и далее, дочерняя очередь с более высоким приоритетом будет иметь возможность достичь своего max-limit раньше дочерней очереди с более низким приоритетом. Приоритет ни как не влияет при "взрывном" (burst) режиме прохождении трафика.
queue (имя типа очереди; Default: ) Определяет тип очереди. Необходимый тип очереди может быть создан в /queue type.
limit-at (скорость; Default: ) Скорость передачи данных, которая гарантируется целевой аудитории.
max-limit (скорость; Default: ) Максимальная скорость передачи данных, которая позволена данной целевой аудитории.
burst-limit (скорость; Default: ) Максимальная скорость передачи данных, которая может быть достигнута пока активен "взрывной" (burst) режим прохождения трафика.
burst-time (время; Default: ) Период времени в секундах, для которого будет рассчитываться среднее значение скорости передачи данных (это НЕ продолжительность фактического периода "взрывного" (burst) режима прохождения трафика).
burst-threshold (скорость; Default: ) Когда средняя скорость передачи данных ниже этого значения, "взрывной" (burst) режим прохождения трафика разрешён, как только среднее значение скорости передачи данных достигнет данного значения, "взрывной" режим будет отменён (иными словами, является своего рода переключателем вкл./выкл. для "взрывного" режима). Для оптимального функционирования "взрывного" режима это значение должно быть выше значения limit-at, но ниже значения max-limit.

Статистика

Параметр Описание
rate (только для чтения; Default: ) Среднее значение скорости передачи данных очереди в битах в секунду.
packet-rate (только для чтения; Default: ) Среднее значение скорости передачи данных очереди в пакетах в секунду.
bytes (только для чтения; Default: ) Количество байтов, обработанных данной очередью.
packets (только для чтения; Default: ) Количество пакетов, обработанных данной очередью.
queued-bytes (только для чтения; Default: ) Количество байтов, ожидающих в очереди (помещённых в буфер).
queued-packets (только для чтения; Default: ) Количество пакетов, ожидающих в очереди (помещённых в буфер).
dropped (только для чтения; Default: ) Количество отброшенных пакетов.
borrows (только для чтения; Default: ) Пакеты прошедшие, через очередь сверх её значения limit-at (необработанные другими очередями пакеты, отправленные из них в текущую очередь).
lends (только для чтения; Default: ) Количество пакетов, прошедших через очередь, не превышая её значения limit-at, ИЛИ, если очередь является родительской, сумма всех пакетов, "одолженных" всем её дочерним очередям (иными словами, сумма значений borrows всех её дочерних очередей).
pcq-queues (только для чтения; Default: ) Количество PCQ-подпотоков если в качестве типа очереди выбрана PCQ-очередь.

Типы очередей

Подменю: /queue type

Параметр Описание
name (текст; Default: ) Уникальный идентификатор очереди, который может быть использован как в простых очередях так и в дереве очередей в качестве значения параметра queue.
kind (bfifo | pcq | pfifo | red | sfq; Default: ) Вид отдельного типа очереди.


PFIFO и BFIFO

Эти дисциплины управления очередью базируются на FIFO-алгоритме (First-In First-Out; первый пришёл – первый вышел). Различием между PFIFO и BFIFO является то, что первая измеряется в пакетах, а вторая в байтах.


Параметр Описание
pfifo-limit (количество; Default: ) Максимальное количество пакетов, которое может содержать PFIFO-очередь (её длина, размер буфера).
bfifo-limit (количество; Default: ) Максимальное количество байтов, которое может содержать BFIFO -очередь (её длина, размер буфера).


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


RED

Random Early Detection (RED, Произвольное Раннее Обнаружение) – это механизм управления очередью, который пытается избежать сетевых перегрузок, контролируя средний размер очереди. Когда средний размер очереди достигает значения red-min-threshold, RED начинает отбрасывать пакеты в случайном порядке с линейно увеличивающейся вероятностью вплоть до тех пор, пока средний размер очереди не достигнет значения red-max-threshold. Фактический размер очереди мог бы быть выше значения red-max-threshold, поскольку вероятность увеличивается не очень быстро, поэтому можно задать жёсткое ограничение на размер очереди. Как только средний размер очереди достигает значения red-max-threshold или начинает его превышать, все остальные приходящие пакеты начинают отбрасываться до тех пор, пока средний размер очереди не опустится ниже этого значения (в этот момент вероятностные вычисления будут вновь активированы).

Параметр Описание
red-avg-packet (количество; Default: ) Используется RED для вычисления среднего размера очереди (для перевода количества пакетов в байты).
red-burst (количество; Default: ) Количество пакетов допустимое при "взрывных” прохождениях пакетов в моменты, когда очередь пуста.
red-limit (количество; Default: ) Ограничение RED-очереди в пакетах.
red-max-threshold (количество; Default: ) Средний размер очереди, при котором вероятность того, что пакет будет отброшен, наивысшая.
red-min-threshold (количество; Default: ) Средний размер очереди в байтах.


SFQ

Stochastic Fairness Queuing (SFQ) обеспечивается алгоритмами хеширования и циклического перебора. Поток трафика может быть точно идентифицирован по четырём параметрам (src-address, dst-address, src-port и dst-port), поэтому данные параметры используются алгоритмом хеширования SFQ для классификации пакетов в одном из 1024 возможных подпотоков. Затем алгоритм циклического перебора начнёт распределять доступную полосу пропускания между всеми подпотоками, выдавая за каждый цикл то количество байт трафика, которое задано с помощью параметра sfq-allot. SFQ-очередь в целом может содержать 128 пакетов и поддерживает 1024 подпотока.

Параметр Описание
sfq-allot (количество; Default: ) Количество данных в байтах, которое может быть отправлено за один цикл циклического перебора.
sfq-perturb (время; Default: ) Как часто должен перезапускаться хеширующий алгоритм для обновления своих данных.


PCQ

Per Connection Queuing (PCQ) является частным случаем SFQ, но имеет дополнительные особенности.

Можно выбрать идентификаторы потоков (из dst-address | dst-port | src-address | src-port). Например, если вы классифицируете потоки по исходящему адресу на локальном интерфейсе (интерфейс, за которым находятся ваши клиенты), каждый PCQ-подпоток будет являться исходящим трафиком отдельного клиента.
С помощью параметра pcq-rate можно назначить ограничение скорости подпотокам. Если pcq-rate=0, доступный трафик будет распределяться равномерно между подпотоками.


Параметры PCQ:

Параметр Описание
pcq-classifier (dst-address | dst-port | src-address | src-port; Default: ) Выбор идентификаторов подпотоков.
pcq-rate (скорость; Default: ) Максимально допустимая величина скорости передачи данных для каждого подпотока.
pcq-limit (количество; Default: ) Размер очереди для одного подпотока в пакетах.
pcq-total-limit (количество; Default: ) Размер всей PCQ-очереди в целом (сумма размеров очередей всех FIFO-подпотоков не сможет превысить данное значение) в байтах.


Очередь интерфейса (Interface Queue)

Подменю: /queue interface

Параметр Описание
interface (имя интерфейса; Default: ) Имя интерфейса.
queue (имя типа очереди; Default: ) Тип очереди, присвоенный отдельному интерфейсу.


--korsakoff 15:35, 30 October 2010 (UTC)



Источник: http://wiki.mikrotik.com/wiki/%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%B0:%D0%9E%D1%87%D0%B5%D1%8
Категория: Справочные материалы | Добавил: admin (26.09.2011)
Просмотров: 2376 | Комментарии: 2 | Теги: mikrotik, очередь, Queue, router | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2016