схема шейпера:+---------+
| root 1: |
+---------+
|
| +---------------------------------------------+
+--| class 1:1 (нетранзитный трафик) |
| +---------------------------------------------+
|
| +---------------------------------------------+
+--| class 1:2 (транзитный трафик) | rate 100%
+---------------------------------------------+
|
| +-----------------------------------------+
+--| class 1:5 (hi-prio) | ceil 95% rate 100% prio 5
| +-----------------------------------------+
| | | | | |
| +----+ +----+ +----+ +----+ +----+
| |1:10| |1:20| |1:30| |1:40| |1:50|
| +----+ +----+ +----+ +----+ +----+
|
| +-----------------------------------------+
+--| class 1:90 (low-prio) | ceil 5% rate 100% prio 90
+-----------------------------------------+вот реализация:
#!/bin/bashIPT="/sbin/iptables"
TC="/sbin/tc"
IP="/bin/ip"DEV_IN="eth0"
RATE_IN="2750" # 90% от гарантированной провайдеромRATE_LOCAL="1gbit"
IP_LOCAL="192.168.0.254"$TC qdisc del dev $DEV_IN root >/dev/null 2>&1
$TC qdisc del dev $DEV_IN ingress >/dev/null 2>&1$IP link set dev $DEV_IN qlen 32
$TC qdisc add dev $DEV_IN root handle 1: htb r2q 3# Нетранзитный трафик
$TC class add dev $DEV_IN parent 1: classid 1:1 htb rate $RATE_LOCAL quantum 60000 prio 99
$TC qdisc add dev $DEV_IN parent 1:1 pfifo
$TC filter add dev $DEV_IN parent 1: prio 1 protocol ip u32 match ip src $IP_LOCAL1 flowid 1:1# Транзитный трафик
$TC class add dev $DEV_IN parent 1: classid 1:2 htb rate ${RATE_IN}kbit prio 2# high-prio
$TC class add dev $DEV_IN parent 1:2 classid 1:5 htb rate $[95*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 5
$TC class add dev $DEV_IN parent 1:5 classid 1:10 htb rate $[5*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 10
$TC class add dev $DEV_IN parent 1:5 classid 1:20 htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 20
$TC class add dev $DEV_IN parent 1:5 classid 1:30 htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 30
$TC class add dev $DEV_IN parent 1:5 classid 1:40 htb rate $[45*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 40
$TC class add dev $DEV_IN parent 1:5 classid 1:50 htb rate $[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 50$TC qdisc add dev $DEV_IN parent 1:10 handle 10: sfq perturb 10
$TC qdisc add dev $DEV_IN parent 1:20 handle 20: sfq perturb 10
$TC qdisc add dev $DEV_IN parent 1:30 handle 30: sfq perturb 10
$TC qdisc add dev $DEV_IN parent 1:40 handle 40: sfq perturb 10
$TC qdisc add dev $DEV_IN parent 1:50 handle 50: sfq perturb 10$TC filter add dev $DEV_IN parent 10: prio 10 protocol ip handle 10 flow hash keys dst divisor 512
$TC filter add dev $DEV_IN parent 20: prio 20 protocol ip handle 20 flow hash keys dst divisor 512
$TC filter add dev $DEV_IN parent 30: prio 30 protocol ip handle 30 flow hash keys dst divisor 512
$TC filter add dev $DEV_IN parent 40: prio 40 protocol ip handle 40 flow hash keys dst divisor 512
$TC filter add dev $DEV_IN parent 50: prio 50 protocol ip handle 50 flow hash keys dst divisor 512# low-prio
$TC class add dev $DEV_IN parent 1:2 classid 1:90 htb rate $[5*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 10 prio 90
$TC qdisc add dev $DEV_IN parent 1:90 handle 90: sfq perturb 30
$TC filter add dev $DEV_IN parent 90: prio 90 protocol ip handle 90 flow hash keys dst divisor 512$IPT -t mangle -D POSTROUTING -o $DEV_IN -j SHAPER-IN >/dev/null 2>&1
$IPT -t mangle -F SHAPER-IN >/dev/null 2>&1
$IPT -t mangle -X SHAPER-IN >/dev/null 2>&1$IPT -t mangle -N SHAPER-IN
$IPT -t mangle -I POSTROUTING -o $DEV_IN -j SHAPER-IN# icmp, dns
$IPT -t mangle -A SHAPER-IN -p icmp -j CLASSIFY --set-class 1:10
$IPT -t mangle -A SHAPER-IN -p icmp -j RETURN
$IPT -t mangle -A SHAPER-IN -p udp --sport 53 -j CLASSIFY --set-class 1:10
$IPT -t mangle -A SHAPER-IN -p udp --sport 53 -j RETURN# icecast
$IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 7000,8000 -j CLASSIFY --set-class 1:20
$IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 7000,8000 -j RETURN# ssh, rdp
$IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 22,11122,3389 -j CLASSIFY --set-class 1:30
$IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 22,11122,3389 -j RETURN# imap, imaps, pop3, pop3s
$IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 143,993,110,995 -j CLASSIFY --set-class 1:40
$IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 143,993,110,995 -j RETURN# http, https; ftp(20,21) < 512KB
$IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 80,8080,443,20,21 -m connbytes --connbytes :524288 \n
--connbytes-dir both --connbytes-mode bytes -j CLASSIFY --set-class 1:40
$IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 80,8080,443,20,21 -m connbytes --connbytes :524288 \n
--connbytes-dir both --connbytes-mode bytes -j RETURN# http, https; ftp(20,21)
$IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 80,8080,443,20,21,1935 -j CLASSIFY --set-class 1:50
$IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 80,8080,443,20,21,1935 -j RETURN# low priority
$IPT -t mangle -A SHAPER-IN -j CLASSIFY --set-class 1:90но в выводе # tc -s class show dev eth0 у классов абсолютно другие prio:
class htb 1:10 parent 1:5 leaf 10: prio 7 rate 137000bit ceil 2750Kbit burst 1599b cburst 1599b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 1459843 ctokens: 72718class htb 1:1 root leaf 8014: prio 7 rate 1000Mbit ceil 1000Mbit burst 1375b cburst 1375b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 187 ctokens: 187class htb 1:2 root rate 2750Kbit ceil 2750Kbit burst 1599b cburst 1599b
Sent 618 bytes 5 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 68000 ctokens: 68000class htb 1:20 parent 1:5 leaf 20: prio 7 rate 275000bit ceil 2750Kbit burst 1599b cburst 1599b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 727265 ctokens: 72718class htb 1:30 parent 1:5 leaf 30: prio 7 rate 275000bit ceil 2750Kbit burst 1599b cburst 1599b
Sent 618 bytes 5 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 5 borrowed: 0 giants: 0
tokens: 680000 ctokens: 68000class htb 1:40 parent 1:5 leaf 40: prio 7 rate 1237Kbit ceil 2750Kbit burst 1599b cburst 1599b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 161671 ctokens: 72718class htb 1:50 parent 1:5 leaf 50: prio 7 rate 687000bit ceil 2750Kbit burst 1599b cburst 1599b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 291109 ctokens: 72718class htb 1:5 parent 1:2 rate 2612Kbit ceil 2750Kbit burst 1599b cburst 1599b
Sent 618 bytes 5 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 71594 ctokens: 68000class htb 1:90 parent 1:2 leaf 90: prio 7 rate 137000bit ceil 2750Kbit burst 1599b cburst 1599b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 1459843 ctokens: 72718подскажите, пожалйуста, ЧЯДНТ?
>[оверквотинг удален]
> 20
> $TC class add dev
> $DEV_IN parent 1:5 classid 1:30 htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio
> 30
> $TC class add dev
> $DEV_IN parent 1:5 classid 1:40 htb rate $[45*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio
> 40
> $TC class add dev
> $DEV_IN parent 1:5 classid 1:50 htb rate $[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio
> 50в классах prio от 0 до 7 вроде должно быть или я ошибаюсь.
>[оверквотинг удален]
> rate 0bit 0pps backlog 0b 0p requeues 0
> lended: 0 borrowed: 0 giants: 0
> tokens: 71594 ctokens: 68000
> class htb 1:90 parent 1:2 leaf 90: prio 7 rate 137000bit ceil
> 2750Kbit burst 1599b cburst 1599b
> Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
> rate 0bit 0pps backlog 0b 0p requeues 0
> lended: 0 borrowed: 0 giants: 0
> tokens: 1459843 ctokens: 72718
> в классах prio от 0 до 7 вроде должно быть или я ошибаюсь.упростил скрипт практически до нЕльзя + поменял prio (проблема с семёрками заключалась в том, чта на prio выделен только один бит со всеми вытекающими):
#!/bin/bashIPT="/sbin/iptables"
TC="/sbin/tc"
IP="/bin/ip"DEV_IN="eth0"
RATE_IN="2750"RATE_LOCAL="1gbit"
IP_LOCAL="192.168.0.100"$TC qdisc del dev $DEV_IN root
$IP link set dev $DEV_IN qlen 32
$TC qdisc add dev $DEV_IN root handle 1: htb r2q 3
# Главный класс
$TC class add dev $DEV_IN parent 1: classid 1:1 htb rate $RATE_LOCAL# Транзитный трафик
$TC class add dev $DEV_IN parent 1:1 classid 1:2 htb rate ${RATE_IN}kbit prio 0# high-prio
$TC class add dev $DEV_IN parent 1:2 classid 1:5 htb rate $[95[quot]$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 0# low-prio
$TC class add dev $DEV_IN parent 1:2 classid 1:90 htb rate $[5[/quot]$RATE_IN/100]kbit ceil $[75*$RATE_IN/100]kbit prio 1# Нетранзитный трафик
$TC class add dev $DEV_IN parent 1:1 classid 1:99 htb rate $RATE_LOCAL quantum 60000 prio 1ситуация изменилась, но все же есть косяки. вывод tc -s class show dev eth0 (упорядочил + сделал отступы для более удобного сравнения с добавлением классов в скрипте):
class htb 1:1 root rate 1000Mbit ceil 1000Mbit burst 1375b cburst 1375b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 187 ctokens: 187class htb 1:2 parent 1:1 rate 2750Kbit ceil 2750Kbit burst 1599b cburst 1599b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 72718 ctokens: 72718class htb 1:5 parent 1:2 prio 0 rate 2612Kbit ceil 2750Kbit burst 1599b cburst 1599b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 76562 ctokens: 72718class htb 1:90 parent 1:2 prio 1 rate 137000bit ceil 2062Kbit burst 1599b cburst 1599b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 1459843 ctokens: 96984class htb 1:99 parent 1:1 prio 1 rate 1000Mbit ceil 1000Mbit burst 1375b cburst 1375b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 187 ctokens: 187приоритеты стали нормальными, НО у 1:2 prio нет! (пробовал менять prio на 1,2,...) - ситуация не поменялась. почему так?
>[оверквотинг удален]
> class htb 1:99 parent 1:1 prio 1 rate
> 1000Mbit ceil 1000Mbit burst 1375b cburst 1375b
> Sent 0 bytes 0 pkt (dropped 0,
> overlimits 0 requeues 0)
> rate 0bit 0pps backlog 0b 0p requeues
> 0
> lended: 0 borrowed: 0 giants: 0
> tokens: 187 ctokens: 187
> приоритеты стали нормальными, НО у 1:2 prio нет! (пробовал менять prio на
> 1,2,...) - ситуация не поменялась. почему так?похоже prio перестает показывать после добавления дочернего класс.
попробуйте вводить руками и после каждой команды смотрите tc -s class show dev eth0
> попробуйте вводить руками и после каждой команды смотрите tc -s class show dev eth0да. действительно. набросал небольшой скрипт:
#!/bin/bash
IPT="/sbin/iptables"
TC="/sbin/tc"
IP="/bin/ip"
DEV_IN="eth0"
RATE_IN="2750"$TC qdisc del dev $DEV_IN root
$IP link set dev $DEV_IN qlen 32
$TC qdisc add dev $DEV_IN root handle 1: htb r2q 3$TC class add dev $DEV_IN parent 1: classid 1:1 htb rate ${RATE_IN}kbit
echo 1:1; $TC -d class show dev eth0; echo$TC class add dev $DEV_IN parent 1:1 classid 1:10 htb rate $[50*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 60000 prio 0
echo 1:10; $TC -d class show dev eth0; echo$TC class add dev $DEV_IN parent 1:10 classid 1:11 htb rate $[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 30000 prio 0
echo 1:11; $TC -d class show dev eth0; echo
$TC class add dev $DEV_IN parent 1:10 classid 1:12 htb rate $[25*$RATE_IN/100]kbit ceil $[50*$RATE_IN/100]kbit quantum 30000 prio 1
echo 1:12; $TC -d class show dev eth0; echo$TC class add dev $DEV_IN parent 1:1 classid 1:20 htb rate $[50*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 25000 prio 1
echo 1:20; $TC -d class show dev eth0; echo
$TC class add dev $DEV_IN parent 1:20 classid 1:21 htb rate $[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 25000 prio 0
echo 1:21; $TC -d class show dev eth0
вот его выхлоп:
1:1
class htb 1:1 root prio 0 quantum 114583 rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 01:10
class htb 1:10 parent 1:1 prio 0 quantum 60000 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0
class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 71:11
class htb 1:11 parent 1:10 prio 0 quantum 30000 rate 687000bit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0
class htb 1:10 parent 1:1 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6
class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 71:12
class htb 1:11 parent 1:10 prio 0 quantum 30000 rate 687000bit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0
class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7
class htb 1:10 parent 1:1 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6
class htb 1:12 parent 1:10 prio 1 quantum 30000 rate 687000bit ceil 1375Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 01:20
class htb 1:11 parent 1:10 prio 0 quantum 30000 rate 687000bit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0
class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7
class htb 1:10 parent 1:1 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6
class htb 1:20 parent 1:1 prio 1 quantum 25000 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0
class htb 1:12 parent 1:10 prio 1 quantum 30000 rate 687000bit ceil 1375Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 01:21
class htb 1:11 parent 1:10 prio 0 quantum 30000 rate 687000bit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0
class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7
class htb 1:10 parent 1:1 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6
class htb 1:20 parent 1:1 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6
class htb 1:21 parent 1:20 prio 0 quantum 25000 rate 687000bit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0
class htb 1:12 parent 1:10 prio 1 quantum 30000 rate 687000bit ceil 1375Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0странно... очень странно... интересно, так и должно быть или баг?
> странно... очень странно... интересно, так и должно быть или баг?всё. разобрался. только краевые классы могут иметь prio и quantum
>> странно... очень странно... интересно, так и должно быть или баг?
> всё. разобрался. только краевые классы могут иметь prio и quantumПриходится заниматься некропостингом, но возник вопрос. В выводе информации по классам явно видно, что quantum задан для краевых классов, для их родителей он не указан, но в то же время, если при создании родительского класса явно не указать quantum, то можно получить в syslog сообщение о слишком большом кванте родительского класса. Так где же истина?
Почему выходит, что кванты нужно задавать и родительским классам тоже (иначе будет предупреждение об огромной размере кванта), но они не отображаются в выводе информации по классу?
> Приходится заниматься некропостингом, но возник вопрос. В выводе информации по классам
> явно видно, что quantum задан для краевых классов, для их родителей
> он не указан, но в то же время, если при создании
> родительского класса явно не указать quantum, то можно получить в syslog
> сообщение о слишком большом кванте родительского класса. Так где же истина?
> Почему выходит, что кванты нужно задавать и родительским классам тоже (иначе будет
> предупреждение об огромной размере кванта), но они не отображаются в выводе
> информации по классу?квантум — это количество байт, передаваемых классом за одно обращение к нему (зелёный свет" на передачу порции накопившихся пакетов в очереди этого класса. эта порция как раз и задаётся квантумом)
соответственно, у классов, имеющих дочерние классы, значение квантума не должно быть меньше суммы дочерних квантумов (так же как и rate, и ceil)
почему не отображаются в выхлопе, если их не задать явно — не знаю, да и не ставил задачи понять почему так.
з.ы.: когда занимался этим вопросом, отписАл письмо автору htb=======================
вопрос:Hello Martin.
Can you explain me some strange situation?
For what reasons and why some classes has no prio and quantum value but I set it in command?
Test script for example:
#!/bin/bash
IPT="/sbin/iptables"
TC="/sbin/tc"
IP="/bin/ip"
DEV_IN="eth0"
RATE_IN="2750"$TC qdisc del dev $DEV_IN root
$IP link set dev $DEV_IN qlen 32
$TC qdisc add dev $DEV_IN root handle 1: htb r2q 3$TC class add dev $DEV_IN parent 1: classid 1:1 htb rate ${RATE_IN}kbit
$TC class add dev $DEV_IN parent 1:1 *classid 1:10* htb rate
$[50*$RATE_IN/100]kbit ceil ${RATE_IN}kbit *quantum 60000 prio 0*$TC class add dev $DEV_IN parent 1:10 classid 1:11 htb rate
$[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 30000 prio 0
$TC class add dev $DEV_IN parent 1:10 classid 1:12 htb rate
$[25*$RATE_IN/100]kbit ceil $[50*$RATE_IN/100]kbit quantum 30000 prio 1$TC class add dev $DEV_IN parent 1:1 classid 1:20 htb rate
$[50*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 25000 prio 1
and then outpu of command /#tc -d class show dev eth0/:class htb 1:11 parent 1:10 prio 0 quantum 30000 rate 687000bit ceil
2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b
overhead 0b level 0
class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b
overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7
*class htb 1:10* parent 1:1 rate 1375Kbit ceil 2750Kbit burst
1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6
class htb 1:20 parent 1:1 prio 1 quantum 25000 rate 1375Kbit ceil
2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b
overhead 0b level 0
class htb 1:12 parent 1:10 prio 1 quantum 30000 rate 687000bit ceil
1375Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b
overhead 0b level 0
As you can see class 1:10 has no prio and has quantum.Is it bug or my mistake?
P.S.: Sorry for my English :)
=======================
ответ:only leaves has quantum & prios..
=======================
т.е. Мартин утверждает, что квантум не может быть у родительского класса, но как видно из выхлопа скрипта, он выводится, если задан