LinuxForum.Fans
Тема

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

Автор: cac2s 29 сообщений 8765 просмотров
#140719

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

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

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

text
+---------+
| 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) |
    +-----------------------------------------+
text
$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%

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

text
+---------+
| 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)                   |
          +-----------------------------------------+
text
$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

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

#140794

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

#140802
Kettler написал:
Покажите весь скрипт а не кусок
text

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

#140808

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

#140813
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 канал начинает сжиматься отдавая нечестно одолженную ширину.

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

#140816

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

#140818

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

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

#140851
Kettler написал:

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

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

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

Kettler написал:

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

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

#140964
cac2s написал:

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

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

#141102
Kettler написал:
[quote=cac2s]
а какой вывод нужно сделать из этого? не использовать filter?

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

#141113

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

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

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

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

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

Меть в FORWARD

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

#141120

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

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

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

#141257

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

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

[console]# ls -la shaper.sh
-rwxr-x--- 1 root root 10968 Мар 17 17:17 shaper.sh[/console]
а что, собственно, Вас смущает? :)

#141264

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

# 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

#141329

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

#141351

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

text

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 порт.

#141526

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

Войдите или зарегистрируйтесь, чтобы ответить.