Назад | Перейти на главную страницу

Тестирование Linux HTB не оправдало ожиданий

Я пытаюсь протестировать Linux HTB, сделаем простейший пример, чтобы убедиться, что он действительно работает.
Создаю рут и даю ему 200 кбит / с, затем я создаю 3 класса, каждому из которых назначается часть 200 кбит / с.

              - Root -
             /   |    \
            /    |     \
           /     |      \
          /      |       \
         /       |        \
        /        |         \
    100kbps    60kbps     40kbps

В конце я хочу увидеть, что, когда они работают в течение 60 секунд, я получаю, что первый класс использует половину полосы пропускания, второй - 30% полосы пропускания, а последний класс - 20% полосы пропускания.


Теперь приступим к настройке для теста.
Я создал указанное выше дерево и применил фильтры.

tc qdisc add dev eno2 root handle 1: htb default 30
tc class add dev eno2 parent 1: classid 1:1 htb rate 200kbps ceil 200kbps
tc class add dev eno2 parent 1:1 classid 1:10 htb rate 100kbps ceil 200kbps
tc class add dev eno2 parent 1:1 classid 1:20 htb rate 60kbps ceil 200kbps
tc class add dev eno2 parent 1:1 classid 1:30 htb rate 40kbps ceil 200kbps
tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:10
tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 25 0xffff flowid 1:20
tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 36 0xffff flowid 1:30

Для тестирования я использовал iperf.
Я открыл 3 терминала для серверов:

sudo iperf -s -p 25 -i 1
sudo iperf -s -p 36 -i 1
sudo iperf -s -p 80 -i 1

Затем подключил 3 клиента с параметром сколько времени запускать (60 секунд).

iperf -c 132.74.120.45 -p 25 -t 60
iperf -c 132.74.120.45 -p 36 -t 60
iperf -c 132.74.120.45 -p 80 -t 60

Результаты немного странные ... кажется, что каждый из них использовал одинаковую полосу пропускания независимо от исходного распределения?


Кроме того, я проверил, что дисциплина очереди - HTB, используя bmon как показано на рисунке ниже.


Что я делаю не так ?

Формирование трафика HTB работает только на исходящих устройствах. Поэтому, если вы хотите протестировать функциональность, вы должны протестировать ее по назначению, которое может быть достигнуто через сформированный интерфейс. Смотрите рисунок:

PC---\
PC----switch----(eno1)router with HTB shaping(eno2)----Internet
PC---/                                        ^^^^ 
                               Shaping is done on the ougtoing device

Таким образом, трафик во внутренней сети не ограничен. Только трафик, который выходит за пределы сети (в данном случае через eno2), ограничен дисциплиной HTB.