1

нужно: зажать входящий 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

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

2

Покажите весь скрипт а не кусок

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

3

Kettler пишет:

Покажите весь скрипт а не кусок

#!/bin/bash

IPT="/sbin/iptables"
TC="/sbin/tc"
IP="/bin/ip"

DEV_IN="eth0"
RATE_IN="2900"

DEV_OUT="eth1"
RATE_OUT="800"

RATE_LOCAL="1gbit"
IP_LOCAL1="192.168.0.254"
IP_LOCAL2="192.168.0.253"
IP_LOCAL3="192.168.0.251"

stop(){
    $TC qdisc del dev $DEV_IN root >/dev/null 2>&1
    $TC qdisc del dev $DEV_IN ingress >/dev/null 2>&1
    $TC qdisc del dev $DEV_OUT root >/dev/null 2>&1
    $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 -D POSTROUTING -o $DEV_OUT -j SHAPER-OUT >/dev/null 2>&1
    $IPT -t mangle -F SHAPER-OUT >/dev/null 2>&1
    $IPT -t mangle -X SHAPER-OUT >/dev/null 2>&1
}

start_in(){
    $IP link set dev $DEV_IN qlen 32

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

    $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:5
    $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:5
    $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:8
    $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,3389 -j CLASSIFY --set-class 1:10
    $IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 22,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:10
    $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 \
        --connbytes-dir both --connbytes-mode bytes -j CLASSIFY --set-class 1:20
    $IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 80,8080,443,20,21 -m connbytes --connbytes :524288 \
        --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:30
    $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

    echo "Inbound shaping added to $DEV_IN.   Rate: ${RATE_IN}Kbit/sec."
}

start_out(){

    $IP link set dev $DEV_OUT qlen 32

    $TC qdisc add dev $DEV_OUT root handle 1: htb r2q 4

    $TC class add dev $DEV_OUT parent 1:0 classid 1:2 htb rate ${RATE_OUT}kbit ceil ${RATE_OUT}kbit
        $TC class add dev $DEV_OUT parent 1:2 classid 1:5  htb rate $[5*$RATE_OUT/100]kbit  ceil ${RATE_OUT}kbit quantum 1500 prio 5
        $TC class add dev $DEV_OUT parent 1:2 classid 1:7  htb rate $[10*$RATE_OUT/100]kbit ceil ${RATE_OUT}kbit prio 7
        $TC class add dev $DEV_OUT parent 1:2 classid 1:8  htb rate $[15*$RATE_OUT/100]kbit ceil ${RATE_OUT}kbit prio 8
        $TC class add dev $DEV_OUT parent 1:2 classid 1:10 htb rate $[40*$RATE_OUT/100]kbit ceil ${RATE_OUT}kbit prio 10
        $TC class add dev $DEV_OUT parent 1:2 classid 1:20 htb rate $[25*$RATE_OUT/100]kbit ceil ${RATE_OUT}kbit prio 20
        $TC class add dev $DEV_OUT parent 1:2 classid 1:90 htb rate $[5*$RATE_OUT/100]kbit  ceil $[$RATE_OUT-$RATE_OUT/5]kbit quantum 1500 prio 90

        $TC qdisc add dev $DEV_OUT parent 1:5  handle 5:  sfq perturb 10
        $TC qdisc add dev $DEV_OUT parent 1:7  handle 7:  sfq perturb 10
        $TC qdisc add dev $DEV_OUT parent 1:8  handle 8:  sfq perturb 10
        $TC qdisc add dev $DEV_OUT parent 1:10 handle 10: sfq perturb 10
        $TC qdisc add dev $DEV_OUT parent 1:20 handle 20: sfq perturb 10
        $TC qdisc add dev $DEV_OUT parent 1:90 handle 90: sfq perturb 10

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

        $TC filter add dev $DEV_OUT parent 5:  protocol ip handle 5  flow hash keys dst divisor 512
        $TC filter add dev $DEV_OUT parent 7:  protocol ip handle 7  flow hash keys dst divisor 512
        $TC filter add dev $DEV_OUT parent 8:  protocol ip handle 8  flow hash keys dst divisor 512
        $TC filter add dev $DEV_OUT parent 10: protocol ip handle 10 flow hash keys dst divisor 512
        $TC filter add dev $DEV_OUT parent 20: protocol ip handle 20 flow hash keys dst divisor 512
        $TC filter add dev $DEV_OUT parent 90: protocol ip handle 90 flow hash keys dst divisor 512

    $IPT -t mangle -N SHAPER-OUT
    $IPT -t mangle -I POSTROUTING -o $DEV_OUT -j SHAPER-OUT

    # icmp
    $IPT -t mangle -A SHAPER-OUT -p icmp -j CLASSIFY --set-class 1:5
    $IPT -t mangle -A SHAPER-OUT -p icmp -j RETURN

    # dns
    $IPT -t mangle -A SHAPER-OUT -p udp --dport 53 -j CLASSIFY --set-class 1:7
    $IPT -t mangle -A SHAPER-OUT -p udp --dport 53 -j RETURN

    # ssh; rdp
    $IPT -t mangle -A SHAPER-OUT -p tcp -m multiport --dports 22,11122,3389 -j CLASSIFY --set-class 1:8
    $IPT -t mangle -A SHAPER-OUT -p tcp -m multiport --dports 22,11122,3389 -j RETURN

    # http[s]
    $IPT -t mangle -A SHAPER-OUT -p tcp -m multiport --dports 80,443 -j CLASSIFY --set-class 1:10
    $IPT -t mangle -A SHAPER-OUT -p tcp -m multiport --dports 80,443 -j RETURN

    # imap[s], smtp[s], pop3[s]
    $IPT -t mangle -A SHAPER-OUT -p tcp -m multiport --dports 143,993,25,465,110,995 -j CLASSIFY --set-class 1:20
    $IPT -t mangle -A SHAPER-OUT -p tcp -m multiport --dports 143,993,25,465,110,995 -j RETURN

    # low priority
    $IPT -t mangle -A SHAPER-OUT -j CLASSIFY --set-class 1:90

echo "Outbound shaping added to $DEV_OUT.  Rate: ${RATE_OUT}Kbit/sec."
}

status(){
    echo "-----------------------------------------------------------------"
    echo "-----------------------------------------------------------------"
    echo "[qdisc in]"
    $TC -s -d qdisc show dev $DEV_IN
    echo
    echo "[class in]"
    $TC -s -d class show dev $DEV_IN
    echo
    echo "[filter in]"
    $TC -s filter show dev $DEV_IN
    echo "-----------------------------------------------------------------"
    echo "[qdisc out]"
    $TC -s -d qdisc show dev $DEV_OUT
    echo
    echo "[class out]"
    $TC -s -d class show dev $DEV_OUT
    echo
    echo "[filter out]"
    $TC -s filter show dev $DEV_OUT
    echo "-----------------------------------------------------------------"
    echo "-----------------------------------------------------------------"
    echo
    exit
}

case "$1" in
    start)
        stop
        start_in
        start_out
    ;;

    stop)
        stop
        echo "Shaping removed on $DEV_IN/$DEV_OUT"
    ;;
        
    status)
        status
    ;;

    *)
        echo "Usage: $0 {start|stop|status}"
esac

4

Торренты порождают огромную кучу соединений. Им надо еще количество соединений резать. Это модуль esfq. Но его нету в ядре и надо отдельно качать и собирать его.

5 (16.03.2011 18:38:07 отредактировано cac2s)

elve пишет:

Торренты порождают огромную кучу соединений. Им надо еще количество соединений резать. Это модуль esfq. Но его нету в ядре и надо отдельно качать и собирать его.

но по логике low-prio пакеты должны ложиться в отдельный класс/дисциплину и там уже себе вариться ожидая "окна" в high-prio классах, при этом потребляя только rate.

я делал такой эксперимент: ставил этому low-prio классу ceil=50%, и результат сразу был на лицо - другие 50% уходили high-prio классам. но как только менял ceil обратно на 100% - high-prio доставалось не больше 30%, но это при условии небольшого количества соединений в high-prio классах. как только их становилось больше (>10-20) - вот только тогда low-prio канал начинает сжиматься отдавая нечестно одолженную ширину.

в общем запутался. по логике - одно, на практике - другое

6

Благодаря подсказке Elve вот что нашол http://www.ipp2p.org/
Думаю самое то)

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

7 (16.03.2011 18:56:34 отредактировано Kettler)

Да и вот тут пример)
http://linuxforum.ru/viewtopic.php?pid=155219#p155219

Скоко вижу не понимаю этого "-j RETURN" зачем?
Зачем используешь u32 и filter? в твоё скрипте мусора полно.
Используешь CLASSIFY у тя точно ядро => 2.6.XXX

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

8

Kettler пишет:

Скоко вижу не понимаю этого "-j RETURN" зачем?
возврат из цепочки. почему бы и нет. если пакет классифицирован - зачем ему дальше по цепочке бежать?

Kettler пишет:

Зачем используешь u32 и filter? в твоё скрипте мусора полно.

u32 используется для вылавливания трафика идущего с самого шлюза; filter - для nat-трафика, т.к. маркирую его....  ага... понял ошибку! просто раньше маркировал, а теперь прописАл CLASSIFY

Kettler пишет:

Используешь CLASSIFY у тя точно ядро => 2.6.XXX

а какой вывод нужно сделать из этого? не использовать filter?

9

cac2s пишет:

а какой вывод нужно сделать из этого? не использовать filter?

Использовать mark

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

10 (17.03.2011 14:45:05 отредактировано cac2s)

Kettler пишет:
cac2s пишет:

а какой вывод нужно сделать из этого? не использовать filter?

Использовать mark

ну и что это поменяет? пробовал и его, но ничего не поменялось, что не удивительно, ведь проблема не в маркировка пакетов, а в rate/ceil классов.

11 (17.03.2011 15:01:10 отредактировано Kettler)

Я говорил надо менять если ядро меньше 2.6.XXX

Выкини
$IPT -t mangle -N SHAPER-IN

Меть в FORWARD
У тебя после скрипт облегчиться и будет самому даже проще искать

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

12

Kettler пишет:

Я говорил надо менять если ядро меньше 2.6.XXX

Выкини
$IPT -t mangle -N SHAPER-IN

Меть в FORWARD

как?! это может решить проблему?
на другом сервере вообще не использую iptables для маркировки/классификации? только filter - аналогичная проблема: торрент-трафик(low-prio) крадёт у high-prio трафика бОльшую часть скорости

13

Буду дома пробну написать а точнее глянуть где у тя засада.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

14

Kettler пишет:

Буду дома пробну написать а точнее глянуть где у тя засада.

спасибо. буду премного благодарен за помощь ab

15

Задам глупый вопрос а покажите права на файл с данным скриптом.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

16

Kettler пишет:

Задам глупый вопрос а покажите права на файл с данным скриптом.

 Консоль:
# ls -la shaper.sh
-rwxr-x--- 1 root root 10968 Мар 17 17:17 shaper.sh

а что, собственно, Вас смущает? ab

17 (17.03.2011 19:52:25 отредактировано cac2s)

тут другой косяк обнаружился:

# 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

а у 1:2 и 1:5 prio вообще отсутствует...

UPD:
з.ы.: непонятно чей баг - мой или системы
з.ы.ы.: debain stable

18

Да просто по ходу я тупанул  ag
запускаю sh shaper собака ругаеться однако на $[5*$RATE_IN/100]
делаю chmod +x после ./shaper и всё норм) честно первый раз сталкиваюсь  ag

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

19

Честно не стал я заморачиваться твоим скриптом привожу кусок на основе чего сможешь сделать себе.
В доказательство привожу видео.

 cat shaper
#!/bin/bash
#################### LAN
local=vlan6
tc qdisc del dev $local root
tc qdisc add dev $local root handle 1: htb
tc class add dev $local parent 1: classid 1:1 htb rate 5mbit
tc class add dev $local parent 1:1 classid 1:90 htb rate 1mbit ceil 3mbit prio 90
tc class add dev $local parent 1:1 classid 1:10 htb rate 5mbit ceil 5mbit prio 10
tc qdisc add dev $local parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $local parent 1:90 handle 90: sfq perturb 10
#Наш юзер  172.16.0.30 - входящая для пользователя скорость
tc filter add dev $local parent 1:0 protocol ip prio 1 handle 90 fw classid 1:90
tc filter add dev $local parent 1:0 protocol ip prio 1 handle 10 fw classid 1:10
################ WAN
inet=ppp0
tc qdisc del dev $inet root
tc qdisc add dev $inet root handle 1: htb
tc class add dev $inet parent 1: classid 1:1 htb rate 5mbit
tc class add dev $inet parent 1:1 classid 1:90 htb rate 1mbit ceil 3mbit prio 90
tc class add dev $inet parent 1:1 classid 1:10 htb rate 5mbit ceil 5mbit prio 10
tc qdisc add dev $inet parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $inet parent 1:90 handle 90: sfq perturb 10
#Наш юзер 172.16.0.30 - исходящая для пользователя скорость
tc filter add dev $inet parent 1:0 protocol ip prio 1 handle 90 fw classid 1:90
tc filter add dev $inet parent 1:0 protocol ip prio 1 handle 10 fw classid 1:10
#Наш юзер 172.16.0.30 - входящая для пользователя скорость.
iptables -t mangle -A FORWARD -d 172.16.0.30 -j MARK --set-mark 90
#Наш юзер  172.16.0.30 - исходящая для пользователя скорость.
iptables -t mangle -A FORWARD -s 172.16.0.30 -j MARK --set-mark 90

iptables -t mangle -A FORWARD -i $local -o $inet -p tcp  -m multiport --dport 80,443,110,25,143,5190 -j MARK --set-mark 10
iptables -t mangle -A FORWARD -i $inet -o $local -p tcp -m multiport --sport 80,110,443,25,143,5190 -j MARK --set-mark 10
iptables -t mangle -A FORWARD -i $local -o $inet -p udp  -m multiport --dport 80,443,110,25,143,5190 -j MARK --set-mark 10
iptables -t mangle -A FORWARD -i $inet -o $local -p udp -m multiport --sport 80,110,443,25,143,5190 -j MARK --set-mark 10

http://narod.ru/disk/7741728001/Video.avi.html

Увидишь как играет скорость на торрент при при повышении скорости на 80 порт.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

20

tc -s qdisc show dev vlan6

qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 33704
Sent 53869535 bytes 37060 pkt (dropped 0, overlimits 7386 requeues 0)
rate 0bit 0pps backlog 0b 23p requeues 0

qdisc sfq 10: parent 1:10 limit 127p quantum 1514b perturb 10sec
Sent 1598071 bytes 1528 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0

qdisc sfq 90: parent 1:90 limit 127p quantum 1514b perturb 10sec
Sent 2006167 bytes 1828 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 33284b 23p requeues 0

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

21 (18.03.2011 14:59:59 отредактировано cac2s)

продолжая тему с отсутствующим 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: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

как видно из скрипта - классу 1:2 явно выставлены prio и quantum
НО в выхлопе tc -d class show dev eth0 отсутствуют и prio, и quantum :o :

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 

22

А если

$TC class add dev $DEV_IN parent 1:2 classid 1:5 htb rate ${RATE_IN}kbit
$TC class add dev $DEV_IN parent 1:5 classid 1:5 htb rate $[95*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 0

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

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

23

Kettler пишет:

А если

$TC class add dev $DEV_IN parent 1:2 classid 1:5 htb rate ${RATE_IN}kbit
$TC class add dev $DEV_IN parent 1:5 classid 1:5 htb rate $[95*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 0

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

убрал добавление класса 1:99 - всё нормально

24 (18.03.2011 15:19:55 отредактировано Kettler)

Странно

Ну тогда надо пробнуть
$TC class add dev $DEV_IN parent 1: classid 1:3 htb rate ${RATE_IN}kbit quantum 60000 prio 0

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

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

25

Покажите результат который получился в результате всех манипуляций, пожалуйста.

26 (22.07.2011 14:42:21 отредактировано Kettler)

Эт давно уже решён вопрос правда на другом форуме и снят.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

27

Kettler, вот и хочется увидеть решение или ссылку на решение.

28

watcher пишет:

Kettler, вот и хочется увидеть решение или ссылку на решение.

хттп://goo.gl/kzJon
читать внимательно и придёт прозрение

29

cac2s, спасибо.