Для перемещения по дереву справки используйте строки заголовка.

Справка по NSG Linux 2.1.6
Дерево команд: _common-nodes.link.qdisc.htb.…далее…

Что это такое?

Это настройка дисциплины HTB.

Зачем это нужно?

Для управления трафиком согласно данной дисциплине.

Как это настроить?

Hierarchical Token Bucket — классовая дисциплина формирования трафика, представляющая собой расширение TBF. На интерфейсе формируется дерево классов, в которые помещается трафик, например, с помощью iptables:

ip
: mangle
: : POSTROUTING
: : : 1
: : : : критерии фильтрации
: : : : target = "CLASSIFY"
: : : : set-class = "10:1"

или средствами управления приоритетом VLAN (IEEE 802.1p):

port
: eth0
: : vlan
: : : eth0.101
: : : : in-CoS2Class-map
: : : : : 1 = "10:1"
: : : : : 2 = "20:1"
: : : : : 4 = "10:3"

Для каждого класса создаются два "ведра" — токены и c-токены — и устанавливается промежуточный "потолок" (ceiling) скорости передачи. Класс имеет гарантированную информационную скорость rate; сверх этой скорости он может отправить не более чем burst байт на скорости ceil и cburst байт на максимальной физической скорости линии.

Непосредственно формирование трафика происходит только в конечных классах ("листьях" дерева). Если классу требуется передать данные на скорости выше rate, он "одалживает" (borrow) токены и/или с-токены у родительских классов. (Строго говоря, вместо "одалживает" более уместным было бы слово "использует", поскольку использованные дочерним классом токены, естественно, не могут вернуться в "ведро" родительского класса. Но это не большая ошибка — именно так обычно и складываются отношения между родителями и детьми.) Родительский класс, если не имеет в этот момент своих собственных токенов, пытается одолжить их у своего родителя, и так далее до Адама, т.е. до корневого класса.

Таким образом, свободные токены перераспределяются от корня к "листьям" дерева. Промежуточные и корневой классы никакого формирования трафика не производят, они нужны только для управления раздачей токенов. Все использованные токены и c-токены относятся на счёт как конечного класса, так и его родителя и прародителей вплоть до того класса, у которого они были "одолжены".

По умолчанию, ceil = rate, т.е. перераспределение полосы пропускания от родительского класса к данному дочернему не производится. Для корректной и эффективной работы алгоритма следует соблюдать следующие правила:

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

Помимо указанных, алгоритм предусматривает ещё некоторые параметры для тонкой настройки, но на практике эти параметры настраиваются автоматически и не требуют вмешательства пользователя.

Особая ситуация возникает в случае, если поступивший пакет не помещён явным образом ни в один из классов данной дисциплины. На этот случай в дисциплине HTB имеется глобальный параметр default — идентификатор класса, в который следует помещать такие пакеты. По умолчанию default = 0, т.е. указывает на саму корневую политику. В этом случае пакет передаётся с максимальной физической скоростью линии, минуя какие бы то ни было ограничения для дочерних классов.


© Network Systems Group 2015–2024 Отдел документации