Я пытаюсь протестировать 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.