Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/admin/etcnet/qos ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/admin/etcnet/qos за 2005-11-23 12:33:46..

Настройка QoS в /etc/net? (редакция 2)

Общая теория

QoS — quality of service (качество обслуживания) — общий термин, обозначающий технологии управления скоростными и временными характеристиками пропускаемого трафика.
Конфигурация выполняется для каждого интерфейса отдельно. Для этого создаётся древовидная структура, состоящая из дисциплин очередей и классов. Корень этой структура — так называемая корневая дисциплина очереди, которая является обязательным атрибутом интерфейса. Увидеть её можно так:

В данном случае корневая дисциплина очереди — pfifo_fast (она назначается по умолчанию). Иерархия очередей и классов определяет, как именно будут обрабатываться исходящие с интерфейса пакеты: номинальная скорость, параметры допустимых кратковременных всплесков, правила переупорядочивания пакетов внутри очередей, условия взаимного заимствования полосы пропускания между объектами на одном уровне иерархии и прочие параметры, зависящие от конкретной используемой структуры. «Перпендикулярно» этому дереву существует набор фильтров, которые описывают прохождение пакетов по структуре. Наиболее популярными являются дисциплины очередей CBQ (class based queueing) и HTB (hierarchical token bucket).
Дерево CBQ формируется по довольно простым принципам:

Дерево HTB строится ещё проще:

Описание реализации

Общая идея реализации в /etc/net заключается в том, что иерархия объектов QoS представляется в виде дерева каталогов и файлов. Конфигурация начинается с каталога qos, располагающегося в каталоге конфигурации интерфейса. Далее в нём могут содержаться другие каталоги, которые представляют либо дисциплины очереди, либо классы. В каталогах дисциплин присутствуют файлы с названием qdisc, а в каталогах с классами — файлы class. Эти файлы содержат параметры дисциплин и классов. Фильтры располагаются в файлах с названием filter.

Пример 1

Рассмотрим пример конфигурации HTB, поставляемый с /etc/net: http://etcnet.org/examples/qos-htb/
Так как дерево начинается с корневой дисциплины, то в каталоге qos будет содержаться только один каталог qos/1, а в нём будет содержаться файл qdisc:

Корневая дисциплина здесь имеет номер 1. Параметры корневой дисциплины простые: htb default 12. Корневая дисциплина кроме своих параметров содержит один класс в каталоге qos/1/1. Полным именем объекта будет 1:1. Левое число отсутствует в названии каталога, так как оно всегда равно идентификатору очереди. В файле qos/1/1/class содержатся параметры класса: htb rate 100kbps ceil 100kbps. Кроме этого, в каталогах qos/1/1/2 и qos/1/1/12 определено ещё два класса: 1:2 и 1:12. В файле qos/1/1/extra содержатся параметры, общие для классов 1:2 и 1:12: htb ceil 100kbps. Это необязательный файл, можно было бы поместить эти параметры в файлы qos/1/1/2/class и qos/1/1/12/class. Если у вас много классов на одном уровне, то файл extra поможет вынести общую часть «за скобки».
Класс 1:12 пуст, а класс 1:2 содержит 1:10 и 1:11. В файлах qos/1/1/2/10/filter и qos/1/1/2/11/filter содержатся описания фильтров по одному в каждой строке. Местоположение файла filter определяет, куда будут направлены пакеты, которые ему удовлетворяют. Для класса 1:10 будет использован один фильтр protocol ip prio 1 u32 match ip src 1.2.3.4 match ip dport 80 0xffff, что соответствует исходящему HTTP-трафику с адреса 1.2.3.4, а для класса 1:11 будет использован фильтр protocol ip prio 1 u32 match ip src 1.2.3.4, что соответствует всему исходящему трафику с адреса 1.2.3.4. Файлы class классов 1:10 и 1:11 содержат соответственно rate 30kbps и rate 10kbps.


 
Файлов нет. [Показать файлы/форму]
Много комментариев (6). [Показать комментарии/форму]