Интерактивная система просмотра системных руководств (man-ов)
tc-htb (8)
>> tc-htb (8) ( Русские man: Команды системного администрирования )
tc-htb (8) ( Linux man: Команды системного администрирования )
ИМЯ
HTB - иерархический буфер токенов
СИНТАКСИС
tc qdisc ... dev
УСТРОЙСТВО
( parent
classid
| root) [ handle
major:
] htb [ default
minor-id
]
tc class ... dev
УСТРОЙСТВО
parent
major:[minor]
[ classid
major:minor
] htb rate
скорость
[ ceil
скорость
] burst
размер
[ cburst
размер
] [ prio
приоритет
]
ОПИСАНИЕ
Очередь HTB является более понятной и интуитивной заменой очереди CBQ в Linux. И
CBQ и HTB помогают контролировать полосу пропускания исходящего трафика. Оба
позволяют разделить физическую полосу на несколько полос. В обоих случаях вы
указываете как распределить трафик по полосам и определить, из какой полосы
пакет будет отправлен на физическое устройство.
В отличие от CBQ, HTB распределяет трафик по алгоритму иерархического буфера
токенов (Token Bucket Filter), который не зависит от характеристик
сетевого интерфейса и канала.
АЛГОРИТМ РАЗДЕЛЕНИЯ
Алгоритм описан в
tc-tbf (8).
КЛАССИФИКАЦИЯ
В каждой очереди HTB могут быть несколько классов. Каждый из этих классов
содержит собственную очередь, по умолчанию
tc-pfifo(8).
При помещении пакета в очередь HTB начинает проверку с корневой очереди и
использует различные методы для определения класса, который получит данные.
В случает, если не указываются необязательные параметры, процесс достаточно
прост. На каждом узле проверяются условия и при совпадении проверка
продолжается в классе, удовлетворяющем условиям. Если класс не содержит
дочерних элементов, пакет помещается в очередь этого класса. Если класс
содержит дочерние элементы, проверка продолжается среди элементов этого
класса.
Следующие действия осуществляются на каждом посещённом узле до тех пор, пока не
будет достигнут окончательный класс или процесс не будет прерван.
(i)
Проверка фильтров класса. При отправке конечному классу, обработка
заканчивается. В противном случае проверка перезапускается.
(ii)
Если инструкции от фильтров не получены, поместить в очередь этого класса.
Этот алгоритм гарантированно помещает пакет в какую-либо очередь, даже если
конфигурация содержит ошибки.
АЛГОРИТМ РАЗДЕЛЕНИЯ ТРАФИКА
Ещё не написано.
ОЧЕРЕДЬ
Корневая очередь HTB имеет три параметра:
parent major:minor | root
Обязательный параметр определяющий место расположения HTB:
в корне
интерфейса или в одном из существующих классов.
handle major:
Как и все другие очереди для HTB может быть назначен идентификатор. Он состоит
только из основного (major) числа и двоеточия после него. Необязательный
параметр, но очень удобный, если вы хотите назначить классы для этой очереди.
default minor-id
Нераспределённый трафик попадает в указанный класс по его дополнительному
(minor) номеру.
КЛАССЫ
Поддерживаются следующие параметры классов:
parent major:minor
Место класса в иерархии. При создании под корневой очередью может быть
не указано. Обязательный параметр.
classid major:minor
Как и очереди, классы могут быть поименованы. Основной номер должен совпадать с
основным номером вышестоящей очереди. Необязательный параметр, но требуется,
если этот класс будет иметь дочерние классы.
prio приоритет
При отправке пакетов, классы с низким значением поля приоритета оправляют
первыми. Обязательный параметр.
rate скорость
Максимальная гарантированная скорость для этого класса и всех его
дочерних классов. Обязательный параметр.
ceil скорость
Максимальная скорость, с которой класс может отправлять пакеты, если
родительский элемент позволяет отправлять данные. По умолчанию такой же как в
параметре 'rate'
burst размер
Количество байтов, отдаваемых
за раз
Должно быть как минимум таким же высоким, как максимальный размер среди
всех дочерних классов.
cburst размер
Количество байтов, отдаваемых при максимальной скорости. Другими словами,
так же быстро, как интерфейс может отправлять. Наилучшее значение - размер
среднего пакета. Должно быть как минимум таким же высоким, как максимальный
размер среди всех дочерних классов.
ПРИМЕЧАНИЕ
В связи с ограничениями планировщика Unix, максимальная скорость не бесконечна
и на практике может быть достаточно низкой. На архитектуре Intel таймер выдаёт
100 событий в секунду, поэтому максимальная скорость - это скорость, при
которой отдаётся указанное количество байтов за один тик таймера. Исходя их
этого можно получить минимальный размер данных, отдаваемых за раз. На i386,
канал 10 Мбит требует отдачу за раз 12 кб, так как 100*12кб*8 соответствует 10
Мбит.