Jump to content
Калькуляторы

[tc][htb] два варианта реализации, но ни одного корректно работающего

нужно: зажать входящий p2p-трафик. для этого выделил ему 5% гарантированной ширины с возможностью заимствовать до 100%.

 

hi-prio пакеты выделяю посредством анализа source port, всё остальное - low-prio

 

первый вариант:

 

+---------+
| root 1: |
+---------+
|
|  +-----------------------------------------+
+--| class 1:1 нетранзитный трафик           |
|  +-----------------------------------------+
|
|  +-----------------------------------------+
+--| class 1:2 транзитный трафик (hi-prio)   |
|  +-----------------------------------------+
|       |       |       |       |       |
|    +-----+ +-----+ +-----+ +-----+ +-----+
|    | 1:5 | | 1:8 | |1:10 | |1:20 | |1:30 |
|    +-----+ +-----+ +-----+ +-----+ +-----+
|
|  +-----------------------------------------+
+--| class 1:90 транзитный трафик (low-prio) |
   +-----------------------------------------+

 

$TC qdisc add dev $DEV_IN root handle 1:0 htb r2q 3
    $TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL1 classid 1:1
    $TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL2 classid 1:1
    $TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL3 classid 1:1

    $TC filter add dev $DEV_IN parent 1:0 prio 5 handle 5  protocol ip fw flowid 1:5
    $TC filter add dev $DEV_IN parent 1:0 prio 8 handle 8  protocol ip fw flowid 1:8
    $TC filter add dev $DEV_IN parent 1:0 prio 10 handle 10 protocol ip fw flowid 1:10
    $TC filter add dev $DEV_IN parent 1:0 prio 20 handle 20 protocol ip fw flowid 1:20
    $TC filter add dev $DEV_IN parent 1:0 prio 30 handle 30 protocol ip fw flowid 1:30
    $TC filter add dev $DEV_IN parent 1:0 prio 90 handle 90 protocol ip fw flowid 1:90

    $TC class add dev $DEV_IN parent 1:0 classid 1:1 htb rate $RATE_LOCAL quantum 60000 prio 99
        $TC qdisc add dev $DEV_IN parent 1:1 pfifo

    $TC class add dev $DEV_IN parent 1:0 classid 1:2 htb rate $[90*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 1
        $TC class add dev $DEV_IN parent 1:2 classid 1:5  htb rate $[5*$RATE_IN/100]kbit  ceil ${RATE_IN}kbit prio 5
        $TC class add dev $DEV_IN parent 1:2 classid 1:8  htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 8
        $TC class add dev $DEV_IN parent 1:2 classid 1:10 htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 10
        $TC class add dev $DEV_IN parent 1:2 classid 1:20 htb rate $[45*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 20
        $TC class add dev $DEV_IN parent 1:2 classid 1:30 htb rate $[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 30

        $TC filter add dev $DEV_IN parent 5:  prio 5 protocol ip handle 8  flow hash keys dst divisor 256
        $TC filter add dev $DEV_IN parent 8:  prio 8 protocol ip handle 8  flow hash keys dst divisor 256
        $TC filter add dev $DEV_IN parent 10: prio 10 protocol ip handle 10 flow hash keys dst divisor 256
        $TC filter add dev $DEV_IN parent 20: prio 20 protocol ip handle 20 flow hash keys dst divisor 256
        $TC filter add dev $DEV_IN parent 30: prio 30 protocol ip handle 30 flow hash keys dst divisor 256

    $TC class add dev $DEV_IN parent 1:0 classid 1:90 htb rate $[5*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 10
        $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

 

при таком варианте игнорируются ceil классов 1:2 и 1:90, т.е. ни 1:2, ни 1:90 не могут "разгонятся" до 100%

 

второй вариант:

 

+---------+
| root 1: |
+---------+
|
|  +---------------------------------------------+
+--| class 1:1 нетранзитный трафик               |
|  +---------------------------------------------+
|
|  +---------------------------------------------+
+--| class 1:2 транзитный трафик                 |
    +---------------------------------------------+
       |
       |  +-----------------------------------------+
       +--| class 1:3 (hi-prio)                     |
       |  +-----------------------------------------+
       |       |       |       |       |       |
       |    +-----+ +-----+ +-----+ +-----+ +-----+
       |    | 1:5 | | 1:8 | |1:10 | |1:20 | |1:30 |
       |    +-----+ +-----+ +-----+ +-----+ +-----+
       |
       |  +-----------------------------------------+
       +--| class 1:90 (low-prio)                   |
          +-----------------------------------------+

 

$TC qdisc add dev $DEV_IN root handle 1:0 htb r2q 3
    $TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL1 classid 1:1
    $TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL2 classid 1:1
    $TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL3 classid 1:1

    $TC filter add dev $DEV_IN parent 1:0 prio 5 handle 5  protocol ip fw flowid 1:5
    $TC filter add dev $DEV_IN parent 1:0 prio 8 handle 8  protocol ip fw flowid 1:8
    $TC filter add dev $DEV_IN parent 1:0 prio 10 handle 10 protocol ip fw flowid 1:10
    $TC filter add dev $DEV_IN parent 1:0 prio 20 handle 20 protocol ip fw flowid 1:20
    $TC filter add dev $DEV_IN parent 1:0 prio 30 handle 30 protocol ip fw flowid 1:30
    $TC filter add dev $DEV_IN parent 1:0 prio 90 handle 90 protocol ip fw flowid 1:90

    $TC class add dev $DEV_IN parent 1:0 classid 1:1 htb rate $RATE_LOCAL quantum 60000 prio 99
        $TC qdisc add dev $DEV_IN parent 1:1 pfifo

    $TC class add dev $DEV_IN parent 1:0 classid 1:2 htb rate ${RATE_IN}kbit ceil ${RATE_IN}kbit prio 1
        $TC class add dev $DEV_IN parent 1:2 classid 1:3 htb rate $[90*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 1
            $TC class add dev $DEV_IN parent 1:3 classid 1:5  htb rate $[5*$RATE_IN/100]kbit  ceil ${RATE_IN}kbit prio 5
            $TC class add dev $DEV_IN parent 1:3 classid 1:8  htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 8
            $TC class add dev $DEV_IN parent 1:3 classid 1:10 htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 10
            $TC class add dev $DEV_IN parent 1:3 classid 1:20 htb rate $[45*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 20
            $TC class add dev $DEV_IN parent 1:3 classid 1:30 htb rate $[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 30

            $TC qdisc add dev $DEV_IN parent 1:5  handle 5:  sfq perturb 10
            $TC qdisc add dev $DEV_IN parent 1:8  handle 8:  sfq perturb 10
            $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 filter add dev $DEV_IN parent 5:  prio 5  protocol ip handle 8  flow hash keys dst divisor 256
            $TC filter add dev $DEV_IN parent 8:  prio 8  protocol ip handle 8  flow hash keys dst divisor 256
            $TC filter add dev $DEV_IN parent 10: prio 10 protocol ip handle 10 flow hash keys dst divisor 256
            $TC filter add dev $DEV_IN parent 20: prio 20 protocol ip handle 20 flow hash keys dst divisor 256
            $TC filter add dev $DEV_IN parent 30: prio 30 protocol ip handle 30 flow hash keys dst divisor 256

        $TC class add dev $DEV_IN parent 1:2 classid 1:90 htb rate $[5*$RATE_IN/100]kbit ceil ${RATE_IN}kbit 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

 

при таком варианте 1:90 съедает около 70% от допустимого rate родительского класса (1:2), оставляя с носом класс 1:3

 

подскажите, пожалуйста, ЧЯДНТ!

Edited by cac2s

Share this post


Link to post
Share on other sites
при таком варианте 1:90 съедает около 70% от допустимого rate родительского класса (1:2), оставляя с носом класс 1:3
А вы уверены, что именно в тот момент когда 70% съедает 1:90. 1:3 требует больше чем ему предоставляется?

Да, и шейпера накрутить % на 5-10 меньше реально доступного внешнего канала. Т.к. шейпят не совсем точно.

Edited by NiTr0

Share this post


Link to post
Share on other sites
А вы уверены, что именно в тот момент когда 70% съедает 1:90. 1:3 требует больше чем ему предоставляется?
уверен, т.к. проводил эксперимент след. образом - на одной машине ставил закачку файла по http с внешнего сервера (отдача до 90Мбит), на другом - запускал torrent-закачку, а на шлюзе смотрел iftop'ом кому какая ширина выделяется.

з.ы.: http ложится в 1:3, а p2p в 1:90, т.к. является неклассифицируемым трафиком.

 

Да, и шейпера накрутить % на 5-10 меньше реально доступного внешнего канала. Т.к. шейпят не совсем точно.
так и сделал: доступная скорость - 3072Кбит, в шейпере выставлено - 2750

Share this post


Link to post
Share on other sites

У вас для обоих случаев RATE 1:3 < SUM(RATES) от лифов. 90 < 95.

Share this post


Link to post
Share on other sites
У вас для обоих случаев RATE 1:3 < SUM(RATES) от лифов. 90 < 95.
  1. 1:3 присутствует только во втором варианте
  2. с сумой rate дочерних классов да - очепятался при смене общей схемы, но заметил ещё вчера и исправил. это ничего не поменяло :(

немного изменил схему и скрипт для удобочитаемости:

 

+---------+
| 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_LOCAL1="192.168.0.254"
IP_LOCAL2="192.168.0.253"
IP_LOCAL3="192.168.0.252"

$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 filter add dev $DEV_IN parent 1: prio 1 protocol ip u32 match ip src $IP_LOCAL2 flowid 1:1
    $TC filter add dev $DEV_IN parent 1: prio 1 protocol ip u32 match ip src $IP_LOCAL3 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

 

заметил ещё такую особенность: если в классе 1:2 количество соединений увеличивается - 1:90 начинает отдавать незаконно отобранное. так при 10 коннектах/закачках 1:90 "скукоживается" практически до своего rate

Share this post


Link to post
Share on other sites

А можете показать статистику по корзинам в корневых классах для одного потока ( когда работает не правильно ). Ведь, если у класса ниже рейт, то и корзина должна быть поменьше, со всеми вытекающими. Еще есть подозрение, что низкоприоритетный трафик генерирует много пакетов, а высокоприоритетный - мало, но большие. Тогда шейпить будет криво, особенно если полосы измеряются в единицах Мбит.

Edited by Dark_Angel

Share this post


Link to post
Share on other sites
А можете показать статистику по корзинам в корневых классах для одного потока ( когда работает не правильно ). Ведь, если у класса ниже рейт, то и корзина должна быть поменьше, со всеми вытекающими.
не совсем понял про корзины, поэтому сделаю предположение, что интересует вывод # tc -s qdisc:

 

qdisc htb 1: dev eth0 root refcnt 2 r2q 3 default 0 direct_packets_stat 14
Sent 5569475 bytes 4900 pkt (dropped 0, overlimits 2293 requeues 0) 
rate 0bit 0pps backlog 0b 0p requeues 0 
qdisc pfifo 800b: dev eth0 parent 1:1 limit 32p
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
rate 0bit 0pps backlog 0b 0p requeues 0 
qdisc sfq 10: dev eth0 parent 1:10 limit 127p quantum 1514b perturb 10sec 
Sent 4772 bytes 21 pkt (dropped 0, overlimits 0 requeues 0) 
rate 0bit 0pps backlog 0b 0p requeues 0 
qdisc sfq 20: dev eth0 parent 1:20 limit 127p quantum 1514b perturb 10sec 
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
rate 0bit 0pps backlog 0b 0p requeues 0 
qdisc sfq 30: dev eth0 parent 1:30 limit 127p quantum 1514b perturb 10sec 
Sent 24714 bytes 181 pkt (dropped 0, overlimits 0 requeues 0) 
rate 0bit 0pps backlog 0b 0p requeues 0 
qdisc sfq 40: dev eth0 parent 1:40 limit 127p quantum 1514b perturb 10sec 
Sent 1226957 bytes 1534 pkt (dropped 0, overlimits 0 requeues 0) 
rate 0bit 0pps backlog 0b 0p requeues 0 
qdisc sfq 50: dev eth0 parent 1:50 limit 127p quantum 1514b perturb 10sec 
Sent 4271974 bytes 2855 pkt (dropped 0, overlimits 0 requeues 0) 
rate 0bit 0pps backlog 0b 0p requeues 0 
qdisc sfq 90: dev eth0 parent 1:90 limit 127p quantum 1514b perturb 30sec 
Sent 33110 bytes 288 pkt (dropped 0, overlimits 0 requeues 0) 
rate 0bit 0pps backlog 0b 0p requeues 0

 

особенно если полосы измеряются в единицах Мбит.
везде прописано kbit

Share this post


Link to post
Share on other sites

Интересует вывод tc -s class show .... во время нагрузки и не правильной работы.

 

Про единицы Мбит, имеется ввиду ширина класса, а там хоть в битах указывайте - шире от этого класс не станет.

Edited by Dark_Angel

Share this post


Link to post
Share on other sites
Интересует вывод tc -s class show .... во время нагрузки и не правильной работы.

 

Про единицы Мбит, имеется ввиду ширина класса, а там хоть в битах указывайте - шире от этого класс не станет.

прошу прощение. вот интересующий Вас вывод:

# tc -s class show dev eth0
class htb 1:10 parent 1:5 leaf 10: prio 7 rate 137000bit ceil 2750Kbit burst 1599b cburst 1599b 
Sent 100504 bytes 449 pkt (dropped 0, overlimits 0 requeues 0) 
rate 624bit 0pps backlog 0b 0p requeues 0 
lended: 440 borrowed: 9 giants: 0
tokens: 1335765 ctokens: 66547

class htb 1:1 root leaf 800b: 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 60991406 bytes 48903 pkt (dropped 0, overlimits 0 requeues 0) 
rate 2721Kbit 251pps backlog 0b 0p requeues 0 
lended: 13370 borrowed: 0 giants: 0
tokens: -64237 ctokens: -64237

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 112178 bytes 673 pkt (dropped 0, overlimits 0 requeues 0) 
rate 1968bit 2pps backlog 0b 0p requeues 0 
lended: 673 borrowed: 0 giants: 0
tokens: 629094 ctokens: 62906

class htb 1:40 parent 1:5 leaf 40: prio 7 rate 1237Kbit ceil 2750Kbit burst 1599b cburst 1599b 
Sent 7148209 bytes 8549 pkt (dropped 0, overlimits 0 requeues 0) 
rate 45040bit 5pps backlog 0b 0p requeues 0 
lended: 6668 borrowed: 1681 giants: 0
tokens: 154406 ctokens: 69453

class htb 1:50 parent 1:5 leaf 50: prio 7 rate 687000bit ceil 2750Kbit burst 1599b cburst 1599b 
Sent 36803917 bytes 25167 pkt (dropped 0, overlimits 0 requeues 0) 
rate 1597Kbit 136pps backlog 0b 0p requeues 0 
lended: 9545 borrowed: 15622 giants: 0
tokens: -90655 ctokens: 6187

class htb 1:5 parent 1:2 rate 2612Kbit ceil 2750Kbit burst 1599b cburst 1599b 
Sent 44164808 bytes 34838 pkt (dropped 0, overlimits 0 requeues 0) 
rate 1656Kbit 144pps backlog 0b 0p requeues 0 
lended: 15746 borrowed: 1566 giants: 0
tokens: 6516 ctokens: 6187

class htb 1:90 parent 1:2 leaf 90: prio 7 rate 137000bit ceil 2750Kbit burst 1599b cburst 1599b 
Sent 16870700 bytes 14098 pkt (dropped 40, overlimits 0 requeues 0) 
rate 1028Kbit 102pps backlog 0b 33p requeues 0 
lended: 2261 borrowed: 11804 giants: 0
tokens: -770432 ctokens: 8313

class sfq 90:74 parent 90: 
(dropped 0, overlimits 0 requeues 0) 
backlog 0b 33p requeues 0 
allot 1498

Share this post


Link to post
Share on other sites

Что-то я не понимаю:

1. Почему у класса 1:90 prio 7?

2. Почему у класса 1:5 прио вообще нет?

 

Далее анализ:

Судя по статистике в корзине у 1:5 токены есть, а дропов нет. Если в этом классе работает TCP, то наверняка он пожал размер окна, как только пинг вырос. Попробуйте качать в 2-3 потока, либо грузить по UDP.

Share this post


Link to post
Share on other sites
Что-то я не понимаю:

1. Почему у класса 1:90 prio 7?

2. Почему у класса 1:5 прио вообще нет?

тоже обратил внимание,когда выложил вывод. причем prio 7 не только у 1:90... но ведь в скрипте prio прописаны! всё! остатки мозга закипают
Далее анализ:

Судя по статистике в корзине у 1:5 токены есть, а дропов нет. Если в этом классе работает TCP, то наверняка он пожал размер окна, как только пинг вырос. Попробуйте качать в 2-3 потока, либо грузить по UDP.

с запущенным торрентом на одной машине и тремя закачками с http на другой:

# tc -s class show dev eth0
class htb 1:10 parent 1:5 leaf 10: prio 7 rate 137000bit ceil 2750Kbit burst 1599b cburst 1599b 
Sent 387 bytes 3 pkt (dropped 0, overlimits 0 requeues 0) 
rate 24bit 0pps backlog 0b 0p requeues 0 
lended: 3 borrowed: 0 giants: 0
tokens: 1335765 ctokens: 66547

class htb 1:1 root leaf 8011: 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 14223498 bytes 11566 pkt (dropped 0, overlimits 0 requeues 0) 
rate 2562Kbit 262pps backlog 0b 0p requeues 0 
lended: 10865 borrowed: 0 giants: 0
tokens: -68428 ctokens: -68428

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 8016 bytes 48 pkt (dropped 0, overlimits 0 requeues 0) 
rate 864bit 1pps backlog 0b 0p requeues 0 
lended: 48 borrowed: 0 giants: 0
tokens: 643640 ctokens: 64359

class htb 1:40 parent 1:5 leaf 40: prio 7 rate 1237Kbit ceil 2750Kbit burst 1599b cburst 1599b 
Sent 37945 bytes 74 pkt (dropped 0, overlimits 0 requeues 0) 
rate 2912bit 2pps backlog 0b 0p requeues 0 
lended: 66 borrowed: 4 giants: 0
tokens: 144453 ctokens: 67064

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 46348 bytes 125 pkt (dropped 0, overlimits 0 requeues 0) 
rate 3800bit 3pps backlog 0b 0p requeues 0 
lended: 4 borrowed: 0 giants: 0
tokens: 67766 ctokens: 64359

class htb 1:90 parent 1:2 leaf 90: prio 7 rate 137000bit ceil 2750Kbit burst 1599b cburst 1599b 
Sent 14196562 bytes 11457 pkt (dropped 0, overlimits 0 requeues 0) 
rate 2542Kbit 258pps backlog 0b 16p requeues 0 
lended: 576 borrowed: 10865 giants: 0
tokens: -449479 ctokens: 4000

class sfq 90:101 parent 90: 
(dropped 0, overlimits 0 requeues 0) 
backlog 0b 16p requeues 0 
allot 1432

Share this post


Link to post
Share on other sites

burst неплохо бы увеличить ИМХО.

пробовал. не помогло. возможно не там пробовал, но сейчас очень сильно заело откуда для основной массы классов берётся prio 7, а для некоторых вообще его нет?! что-то подсказывает, что от сюда и растут ноги...

Edited by cac2s

Share this post


Link to post
Share on other sites

Бурсты автоматом - ок. Крутить их надо для спецеффектов пользователям. На сколько я понимаю, сейчас проблема не в них, поэтому лучше оставить как есть.

 

Судя по тому , что я вижу 1:90 назанимал токенов у родителя, что нормально, а класс 1:40, который, как я понимаю, должен менеджить закачки с http ничего и не пытается сделать. Вы размер окна посмотрите для закачек. Если вы начали качать после того, как торрент выжрал свой класс, то TCP не разгонится. Хотя, я думаю, что торрент вынесет TCP при таком балансинге. Начнет увеличиваться джиттер и TCP на закачках начнет сдуваться, а торрент пиров добавит.

 

Лучше для упрощения ситуации проверьте на предсказуемых передачах, тем более для вашей скорости можно спокойно сделать и в одном и в другом классе просто http закачки.

 

UPD. Я вам сразу секрет открою: если вы всё это затеяли, чтобы пользователи с торрентами, могли не выключая торренты сайтики открывать, то вам надо торренту давать 80-90% полосы максмум, чтобы второму классу хоть что-то оставалось, чтоб начать выдавливать торрент. Но тогда нучнуться возмущения, "где мои 2 Мбита", "почему я могу качать только на 1.5". А если делать с полным перекрытием, как у Вас, да еще и на таком канале, то оно работать не будет, особенно где торрент UDP. Он просто тупо всё вынесет. Работать это будет только при одинаково агресивных потоках, либо, когда высокоприоритетный трафик в агресивном потоке ( он правда тогда и сам всё сделает ).

Edited by Dark_Angel

Share this post


Link to post
Share on other sites
Судя по тому , что я вижу 1:90 назанимал токенов у родителя, что нормально, а класс 1:40, который, как я понимаю, должен менеджить закачки с http ничего и не пытается сделать.
закачки после 512К закаченного сползают в 1:50 (см. вторую часть скрипта, где классифицируются пакеты). сделано, чтобы http-закачки не мешали сёрфить.

 

Лучше для упрощения ситуации проверьте на предсказуемых передачах, тем более для вашей скорости можно спокойно сделать и в одном и в другом классе просто http закачки.
cделал. ( .0.100 - мой ip)

$IPT -t mangle -A SHAPER-IN -d 192.168.0.100 -p tcp -m multiport --sports 80,8080,443,20,21 -j CLASSIFY --set-class 1:90
$IPT -t mangle -A SHAPER-IN -d 192.168.0.100 -p tcp -m multiport --sports 80,8080,443,20,21 -j RETURN

т.е. теперь все пакеты, идущие на мой ноут ложаться в 1:90. поставил у себя одну закачку (1 поток)

поставил 1 закачку (1 поток) на другом компьютере - пакеты ложаться в 1:40, а после 512KB в счетчике соединения - в 1:50.

в общем, в любом случае на чужом компьютере качаться должно быстрее, НО на шлюзе iftop показывает одинаковое потребление ширины.

 

почти уверен, что дело в тех долбаных prio 7 из выхлопа tc -s class show dev eth0

Edited by cac2s

Share this post


Link to post
Share on other sites
UPD. Я вам сразу секрет открою: если вы всё это затеяли, чтобы пользователи с торрентами, могли не выключая торренты сайтики открывать, то вам надо торренту давать 80-90% полосы максмум, чтобы второму классу хоть что-то оставалось, чтоб начать выдавливать торрент.
я в курсе :) просто как ни пробовал крутить (в т.ч. и уменьшением ceil у 1:90 до 75%) - результата не было, поэтому многое вернул в первоначальный вид.

но все равно спасибо :) Вы подтвердили необходимость такого хода. подправлю...

Edited by cac2s

Share this post


Link to post
Share on other sites

Если пользователи сами научатся регулировать скорость в своем торрент-клиенте, будет еще лучше. burst лучше действительно не трогать, надо поставить quantum, так чтобы он был не меньше MTU.

Share this post


Link to post
Share on other sites

2cac2s: У вас какая-то мутная схема с определением трафика в другой класс после 512КB. Уберите его пока, чтобы было легче понять как классифицируется трафик. С prio надо однозначно разобраться, т.к. он однозначно влияет на распределение токенов.

 

На практике, если есть 2 закачки, они относятся к разным классам, классы организованы как у вас ( то есть есть высокий приоритет и низкий, rate, ceil правильно ), то всё работает как надо. По крайней мере работало когда я проверял. Даже с перекритием ceil на 100%.

 

2photon: Если пользователи научаться регулировать скорость сами, то хуже от введеной схемы не будет. Звонят в ТП же те, кто как раз скорость регулировать не умеет, потому что "интернет не работает", так что ТС всё правильно хочет, другой вопрос, что против торрента нет приема - он самый агресивный поток.

 

Как вариант, можно давать клиенту полосу шире, чем пакет. Скажем у него 2Мбита, вы даете 2+1. Скажем 2 отдаете на торрент, а 2 отдаете на веб, при этом 1 Мбит будет гуляющим то в один, то в другой класс. Одновременно занять 3 Мбита пользователь не сможет, потому что торрент.

 

Но для того чтобы так поступить надо всёравно разобраться с проблемой выше.

Edited by Dark_Angel

Share this post


Link to post
Share on other sites
2cac2s: У вас какая-то мутная схема с определением трафика в другой класс после 512КB. Уберите его пока, чтобы было легче понять как классифицируется трафик. С prio надо однозначно разобраться, т.к. он однозначно влияет на распределение токенов.

 

На практике, если есть 2 закачки, они относятся к разным классам, классы организованы как у вас ( то есть есть высокий приоритет и низкий, rate, ceil правильно ), то всё работает как надо. По крайней мере работало когда я проверял. Даже с перекритием ceil на 100%.

так, решил бороться с проблемами по порядку, поэтому на повестке дня - проблема с prio.

 

скопировал скрипт себе на ноут (чтобы разобраться с prio, а на боевом сервере буду отлаживать) и упростил скрипт практически до нЕльзя + поменял 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*$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*$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 -d class show dev eth0 (упорядочил для более удобного сравнения с добавлением классов в скрипте):

 

class htb 1:1 root rate 1000Mbit ceil 1000Mbit burst 1375b/8 mpu 0b overhead 0b cburst 1375b/8 mpu 0b overhead 0b level 7

class htb 1:2 parent 1:1 rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6

class htb 1:5 parent 1:2 prio 0 quantum 108833 rate 2612Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0

class htb 1:90 parent 1:2 prio 1 quantum 5708 rate 137000bit ceil 2062Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0

class htb 1:99 parent 1:1 prio 1 quantum 60000 rate 1000Mbit ceil 1000Mbit burst 1375b/8 mpu 0b overhead 0b cburst 1375b/8 mpu 0b overhead 0b level 0

приоритеты стали нормальными, НО у 1:2 prio нет! (пробовал менять prio на 1,2,...) - ситуация не поменялась. почему так?

Edited by cac2s

Share this post


Link to post
Share on other sites

Если явных ошибок команда не выводит ни сюда, ни в dmesg, то надо гуглить. Приоритет должен быть. Попробуйте как вариант вручить квантум для 1:2 тоже.

Share this post


Link to post
Share on other sites
Если явных ошибок команда не выводит ни сюда, ни в dmesg, то надо гуглить. Приоритет должен быть. Попробуйте как вариант вручить квантум для 1:2 тоже.
выставил - ничего не поменялось :(

#!/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:2 htb rate ${RATE_IN}kbit quantum 60000 prio 0

        # 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 0

        # low-prio
        $TC class add dev $DEV_IN parent 1:2 classid 1:90 htb rate $[5*$RATE_IN/100]kbit ceil $[75*$RATE_IN/100]kbit prio 1

    # Нетранзитный трафик
    $TC class add dev $DEV_IN parent 1: classid 1:99 htb rate $RATE_LOCAL quantum 60000 prio 1

выхлоп # tc -d class show dev eth0:

class htb 1:99 root prio 1 quantum 60000 rate 1000Mbit ceil 1000Mbit burst 1375b/8 mpu 0b overhead 0b cburst 1375b/8 mpu 0b overhead 0b level 0 
class htb 1:90 parent 1:2 prio 1 quantum 5708 rate 137000bit ceil 2062Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 
class htb 1:2 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7 
class htb 1:5 parent 1:2 prio 0 quantum 108833 rate 2612Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0

мало того, в выхлопе у 1:2 нет явно прописанного quantum. баг?

 

UPD: немного подправил и упростил (удалил классы 1:10-1:90)

Edited by cac2s

Share this post


Link to post
Share on other sites

Явно упускается какая-то мелочь. Попробуйте поменять номер класса. 1:90 же вон нормально создается, а он по конфигурации такой же.

 

Попробуйте еще создавать классы по очереди, может после какого-то дочернего класса всё плывет. И запаситесь спиртным. Там не то что с поллитрой не разобраться, там миниум дня 3 пить надо.

Share this post


Link to post
Share on other sites
Явно упускается какая-то мелочь. Попробуйте поменять номер класса. 1:90 же вон нормально создается, а он по конфигурации такой же.

 

Попробуйте еще создавать классы по очереди, может после какого-то дочернего класса всё плывет. И запаситесь спиртным. Там не то что с поллитрой не разобраться, там миниум дня 3 пить надо.

1. в общем, отписал письмо автору HTB... бросив небольшой скрипт для примера. если ответит - отпишу

2. на opennet.ru один человек натолкнул на правильную идею: выводить tc -d class show dev eth0 после каждого выполнения команды tc class add...

скрипт:

#!/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

имеет место закономерность: quantum и prio класса удаляются/пропадают_из_выхлопа при добавлении к этому классу дочернего класса

вот такая вот петрушка... уж и не знаю: так_и_должно_быть/баг/что-то_упущенно...

Edited by cac2s

Share this post


Link to post
Share on other sites

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

 

Вы сказали, что после правок у вас всё изменилось, но всёравно не так как надо. А как стало?

Share this post


Link to post
Share on other sites
Ну я Вам вообще-то тоже самое посоветовал намеками: "Попробуйте еще создавать классы по очереди, может после какого-то дочернего класса всё плывет".
да. точно. припоминаю. просто голова уже квадратная, поэтому неудивительно, что ни как не отреагировал на совет. прошу прощения :)

 

Вы сказали, что после правок у вас всё изменилось, но всёравно не так как надо. А как стало?
ситуация изменилась, но все же есть косяки. вывод tc -d class show dev eth0 (упорядочил для более удобного сравнения с добавлением классов в скрипте):

 

class htb 1:1 root rate 1000Mbit ceil 1000Mbit burst 1375b/8 mpu 0b overhead 0b cburst 1375b/8 mpu 0b overhead 0b level 7

class htb 1:2 parent 1:1 rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6

class htb 1:5 parent 1:2 prio 0 quantum 108833 rate 2612Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0

class htb 1:90 parent 1:2 prio 1 quantum 5708 rate 137000bit ceil 2062Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0

class htb 1:99 parent 1:1 prio 1 quantum 60000 rate 1000Mbit ceil 1000Mbit burst 1375b/8 mpu 0b overhead 0b cburst 1375b/8 mpu 0b overhead 0b level 0

 

приоритеты стали нормальными, НО у 1:2 prio нет! (пробовал менять prio на 1,2,...) - ситуация не поменялась. почему так?

это и имел ввиду. т.е. моя ошибка заключалась в использовании prio>7

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this