LINUX.ORG.RU

История изменений

Исправление Pinkbyte, (текущая версия) :

class htb 1:2 root rate 50Mbit ceil 50Mbit 
class htb 1:10 parent 1:2 leaf 10: prio 1 rate 30Mbit ceil 40Mbit 
class htb 1:20 parent 1:2 rate 20Mbit ceil 40Mbit 

40+40 != 50, htb подстроит гарантированную скорость как ему будет удобнее(с учетом prio, но это не абсолют, большое количество трафика для 1:20 засрет тебе канал невзирая на prio).

Например, если трафика в классе 10 нет, то и 201 и 202 могут получить все 50 Мбит канала (по 25 каждый). А не определенные в их «родительском» классе максимальные 40.

Только что проверил - в отсутствии трафика в классе 10 суммарная загрузка канала у меня составила именно 40, а не 50. Кури что не так у тебя в системе

Вот выхлоп iperf(2 потока на разные IP):

на IP 172.30.13.64:

[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  25.8 MBytes  21.7 Mbits/sec    5             sender
[  4]   0.00-10.00  sec  25.6 MBytes  21.5 Mbits/sec                  receiver

на IP 172.30.13.254:

[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  20.7 MBytes  17.3 Mbits/sec    3             sender
[  4]   0.00-10.00  sec  20.6 MBytes  17.2 Mbits/sec                  receiver

Адаптированный скрипт для tc, используемый мною в тестах:

#!/bin/sh
IFACE=eth1

tc qdisc del dev ${IFACE} root 2>/dev/null

tc qdisc add dev ${IFACE} root handle 1: htb
tc class add dev ${IFACE} parent 1:0 classid 1:2 htb rate 50Mbit quantum 1500
tc class add dev ${IFACE} parent 1:2 classid 1:10 htb prio 1 rate 30Mbit ceil 40Mbit quantum 1500
tc class add dev ${IFACE} parent 1:2 classid 1:20 htb rate 20Mbit ceil 40Mbit quantum 1500
tc class add dev ${IFACE} parent 1:20 classid 1:201 htb prio 2 rate 10Mbit ceil 25Mbit quantum 1500
tc class add dev ${IFACE} parent 1:20 classid 1:202 htb prio 2 rate 10Mbit ceil 25Mbit quantum 1500

tc qdisc add dev ${IFACE} parent 1:201 handle 201: pfifo limit 127
tc qdisc add dev ${IFACE} parent 1:202 handle 202: pfifo limit 127

tc filter add dev ${IFACE} parent 1:0 protocol ip u32 match ip dst 172.30.13.64/32 flowid 1:201
tc filter add dev ${IFACE} parent 1:0 protocol ip u32 match ip dst 172.30.13.254/32 flowid 1:202

Update: прогнал тест с sfq вместо pfifo(ибо ты используешь именно его как leaf-класс) - картина не изменилась

Исходная версия Pinkbyte, :

class htb 1:2 root rate 50Mbit ceil 50Mbit 
class htb 1:10 parent 1:2 leaf 10: prio 1 rate 30Mbit ceil 40Mbit 
class htb 1:20 parent 1:2 rate 20Mbit ceil 40Mbit 

40+40 != 50, htb подстроит гарантированную скорость как ему будет удобнее(с учетом prio, но это не абсолют, большое количество трафика для 1:20 засрет тебе канал невзирая на prio).

Например, если трафика в классе 10 нет, то и 201 и 202 могут получить все 50 Мбит канала (по 25 каждый). А не определенные в их «родительском» классе максимальные 40.

Только что проверил - в отсутствии трафика в классе 10 суммарная загрузка канала у меня составила именно 40, а не 50. Кури что не так у тебя в системе

Вот выхлоп iperf(2 потока на разные IP):

на IP 172.30.13.64:

[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  25.8 MBytes  21.7 Mbits/sec    5             sender
[  4]   0.00-10.00  sec  25.6 MBytes  21.5 Mbits/sec                  receiver

на IP 172.30.13.254:

[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  20.7 MBytes  17.3 Mbits/sec    3             sender
[  4]   0.00-10.00  sec  20.6 MBytes  17.2 Mbits/sec                  receiver

Адаптированный скрипт для tc, используемый мною в тестах:

#!/bin/sh
IFACE=eth1

tc qdisc del dev ${IFACE} root 2>/dev/null

tc qdisc add dev ${IFACE} root handle 1: htb
tc class add dev ${IFACE} parent 1:0 classid 1:2 htb rate 50Mbit quantum 1500
tc class add dev ${IFACE} parent 1:2 classid 1:10 htb prio 1 rate 30Mbit ceil 40Mbit quantum 1500
tc class add dev ${IFACE} parent 1:2 classid 1:20 htb rate 20Mbit ceil 40Mbit quantum 1500
tc class add dev ${IFACE} parent 1:20 classid 1:201 htb prio 2 rate 10Mbit ceil 25Mbit quantum 1500
tc class add dev ${IFACE} parent 1:20 classid 1:202 htb prio 2 rate 10Mbit ceil 25Mbit quantum 1500

tc qdisc add dev ${IFACE} parent 1:201 handle 201: pfifo limit 127
tc qdisc add dev ${IFACE} parent 1:202 handle 202: pfifo limit 127

tc filter add dev ${IFACE} parent 1:0 protocol ip u32 match ip dst 172.30.13.64/32 flowid 1:201
tc filter add dev ${IFACE} parent 1:0 protocol ip u32 match ip dst 172.30.13.254/32 flowid 1:202