Классовая дисциплина HTB

Дисциплина HTB позволяет отдать предпочтение определенным пользователям или типам трафика, определяя их на основании IP-адресов или портов отправителя/получателя в разные классы трафика.

В первую очередь следует отметить, что управлять скоростью можно только исходящего трафика (что, в общем, вполне разумно), поэтому при добавлении правил шейпинга необходимо определить интерфейс, на котором этот трафик будет исходящим.

Реализация QoS на основе классовой дисциплины HTB состоит из двух этапов - создания класса и распределения трафика по классам в соответствии с определенными критериями с помощью фильтров. Классы, определяющие скорость трафика, могут добавляться как в корень, так и в другие подклассы, образуя иерархию классов. Фильтры добавляются в корень иерархии.

Подсказка

Особенность подклассов в том, что скорость одного подкласса может быть увеличена (в пределах скорости родительского класса) за счет неиспользуемой скорости другого подкласса.

Рисунок 5.17. Классы трафика

Классы трафика

Рисунок 5.18. Фильтры, направляющие трафик в классы

Фильтры, направляющие трафик в классы

Рассмотрим в качестве примера простую сеть, схема которой представленна ниже:

Рисунок 5.19. Пример сети

Пример сети

К примеру, если мы хотим ограничить пропускную способность канала для входящего трафика к хосту PC2, то нам необходимо работать с интерфейсом eth1 маршрутизатора, поскольку через него проходит исходящий трафик к хосту PC2. В качестве примера ограничим весь трафик, поступающий на PC2, для этого нам необходимо создать класс, в который будет поступать трафик, идущий к хосту PC2:

Рисунок 5.20. Добавление класса

Добавление класса

Чтобы избежать путаницы, заранее рассмотрим принятые сокращения, описывающие скорость:

Теперь нам необходимо классифицировать трафик, идущий к хосту PC2. Для этого нам необходимо создать фильтр:

Рисунок 5.21. Добавление фильтра

Добавление фильтра

В приведенным ваше примере мы ограничили входящую скорость для хоста PC2. Но исходящая осталась неограниченной. Чтобы исправить положение, необходимо определить, какой интерфейс является исходящем для трафика с PC2. Это зависит от того, кто запрашивает трафик с PC2, в нашем случае это может быть только PC1, следовательно интерфейс, через который пойдет трафик к PC1, будет eth0. Поэтому для ограничения исходящего трафика необходимо создать класс с требуемой скоростью и добавить фильтр, который будет отправлять трафик, идущий от хоста PC2 (src 192.168.90.2) направлять в нужный класс.