URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 91185
[ Назад ]

Исходное сообщение
" игнорируются? явно указанные prio классов"

Отправлено cac2s , 17-Мрт-11 19:25 
схема шейпера:
+---------+
| 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/bash

IPT="/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: 72718

class 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: 187

class 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: 68000

class 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: 72718

class 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: 68000

class 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: 72718

class 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: 72718

class 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: 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 классов"
Отправлено reader , 17-Мрт-11 22:13 
>[оверквотинг удален]
> 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 классов"
Отправлено cac2s , 18-Мрт-11 12:52 
> в классах prio от 0 до 7 вроде должно быть или я ошибаюсь.

упростил скрипт практически до нЕльзя + поменял prio (проблема с семёрками заключалась в том, чта на prio выделен только один бит со всеми вытекающими):

#!/bin/bash

IPT="/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: 187

    class 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: 72718

        class 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: 72718

        class 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: 96984

    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 классов"
Отправлено reader , 18-Мрт-11 15:43 
>[оверквотинг удален]
>     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


" игнорируются? явно указанные prio классов"
Отправлено cac2s , 18-Мрт-11 16:20 
> попробуйте вводить руками и после каждой команды смотрите 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 0

1: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 7

1: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 7

1: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 0

1: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 0

1: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 классов"
Отправлено cac2s , 19-Мрт-11 19:06 
> странно... очень странно... интересно, так и должно быть или баг?

всё. разобрался. только краевые классы могут иметь prio и quantum


" игнорируются? явно указанные prio классов"
Отправлено gard , 29-Янв-14 08:07 
>> странно... очень странно... интересно, так и должно быть или баг?
> всё. разобрался. только краевые классы могут иметь prio и quantum

Приходится заниматься некропостингом, но возник вопрос. В выводе информации по классам явно видно, что quantum задан для краевых классов, для их родителей он не указан, но в то же время, если при создании родительского класса явно не указать quantum, то можно получить в syslog сообщение о слишком большом кванте родительского класса. Так где же истина?

Почему выходит, что кванты нужно задавать и родительским классам тоже (иначе будет предупреждение об огромной размере кванта), но они не отображаются в выводе информации по классу?


" игнорируются? явно указанные prio классов"
Отправлено cac2s , 29-Янв-14 13:07 
> Приходится заниматься некропостингом, но возник вопрос. В выводе информации по классам
> явно видно, что quantum задан для краевых классов, для их родителей
> он не указан, но в то же время, если при создании
> родительского класса явно не указать quantum, то можно получить в syslog
> сообщение о слишком большом кванте родительского класса. Так где же истина?
> Почему выходит, что кванты нужно задавать и родительским классам тоже (иначе будет
> предупреждение об огромной размере кванта), но они не отображаются в выводе
> информации по классу?

квантум — это количество байт, передаваемых классом за одно обращение к нему (зелёный свет" на передачу порции накопившихся пакетов в очереди этого класса. эта порция как раз и задаётся квантумом)

соответственно, у классов, имеющих дочерние классы, значение квантума не должно быть меньше суммы дочерних квантумов (так же как и rate, и ceil)

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


" игнорируются? явно указанные prio классов"
Отправлено cac2s , 29-Янв-14 13:08 

з.ы.: когда занимался этим вопросом, отписАл письмо автору 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..

=======================

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