LinuxForum.Fans
Тема

Tc-шейпинг

Автор: kraftu 50 сообщений 12089 просмотров
#101252

вот оно
lan=ppp0
tc=`which tc`
tc qdisc del dev $lan root
$tc qdisc add dev $lan root handle 1: htb default 2
$tc class add dev $lan parent 1: classid 1:1 htb rate 1024kbit
$tc class add dev $lan parent 1:1 classid 1:2 htb rate 24kbit ceil 512kbit prio 1
$tc filter add dev $lan protocol ip parent 1: u32 match ip dst 192.168.0.1 flowid 1:2
tc qdisc add dev eth0 parent 1:2 handle 20: sfq perturb 10

Чуток подправил.

#101261

Нашол не большой пример который проще адаптировать

iptables -t mangle -I OUTPUT -o eth1 -d xx.xx.xx.xx -j MARK --set-mark 10
iptables -t mangle -I OUTPUT -o eth1 -d xx.xx.xx.yy -j MARK --set-mark 11

#дисциплина очереди
tc qdisc add dev eth1 root handle 1: htb
#главный класс
tc class add dev eth1 parent 1: classid 1:1 htb rate 6kbps ceil 6kbps
#дочерние классы
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 3kbps ceil 6kbps prio 0
tc class add dev eth1 parent 1:1 classid 1:11 htb rate 3kbps ceil 6kbps prio 0
#фильтр
tc filter add dev eth1 protocol ip handle 10 parent 1:0 prio 0 fw flowid 1:10
tc filter add dev eth1 protocol ip handle 11 parent 1:0 prio 0 fw flowid 1:11

#281782

Вот вопрос возник, сущности ака темы плодить не охота :)
А откуда скрипт запускаете? Из /etc/rc.local что-то не хочет отрабатывать - руами норма
может его в init.d пихнуть, насколько такое оправдано?

#281852

Мдя.. чет добавидв init.d и все умерло....

#281881

2 zenon
Разобрался, все элементарное простынь (С) Фоменко
Суть такая, что скрипт (в т.ч.) и из rc.local запускался раньше dnsmasq и правил iptables
вот и было все девственно чисто, вылечилось добавлением строчки sleep 1
А дистрибутив - сборка на базе Debian Lenny, Untangle 9.3.1 :)

P.S. а писать "в интерфейс" я тоже пробовал, результат тот-же )))

#282343

Теперь вопрос по фильтрам
eth0 - внешний интерфейс роутера
eth1 - внутренний интерфейс роутера

text
tc filter add dev eth1 protocol ip parent 1: u32 match ip dst 192.168.0.1 flowid 1:2

Это фильтр на исходящий поток со стороны роутера (входящий для абонента) - для зарезания входящей скорости аб.

А если мне нужно исходящую скорость от абонента порезать, то насколько я понимаю нужно поменять интерфейс и, dst на src т.е. привести к виду

text
tc filter add dev eth0 protocol ip parent 1: u32 match ip src 192.168.0.1 flowid 1:2

Что-то каша в голове по этому поводу, да и пишут все разное, ниче не понимаю.... *DONT_KNOW*

#282390

Как пример

text
#Режем входящую
NUMBERS_VLAN="vlan14 vlan15 vlan16"
for number_vl in `echo $NUMBERS_VLAN`
do
echo $number_vl

tc qdisc del dev $number_vl root tc qdisc add dev $number_vl root handle 1: htb tc class add dev $number_vl parent 1: classid 1:1 htb rate 100Mbit

tc class add dev $number_vl parent 1:1 classid 1:100 htb rate 2Mbit ceil 4Mbit burst 15k tc class add dev $number_vl parent 1:1 classid 1:90 htb rate 1Mbit ceil 2Mbit burst 15k

tc qdisc add dev $number_vl parent 1:100 handle 100: sfq perturb 10 tc qdisc add dev $number_vl parent 1:90 handle 90: sfq perturb 10

tc filter add dev $number_vl parent 1:0 protocol ip prio 7 handle 100 fw classid 1:100 tc filter add dev $number_vl parent 1:0 protocol ip prio 6 handle 90 fw classid 1:90 done

#FORWARD CLIENT 14 iptables -t mangle -A FORWARD -s 192.168.14.0/24 -o ppp999 -j MARK --set-mark 100 iptables -t mangle -A FORWARD -i ppp999 -d 192.168.14.0/24 -j MARK --set-mark 100 iptables -A FORWARD -s 192.168.14.0/24 -o ppp999 -j ACCEPT iptables -A FORWARD -i ppp999 -d 192.168.14.0/24 -j ACCEPT

#FORWARD CLIENT 15 iptables -t mangle -A FORWARD -s 192.168.15.0/24 -o ppp999 -j MARK --set-mark 90 iptables -t mangle -A FORWARD -i ppp999 -d 192.168.15.0/24 -j MARK --set-mark 90 iptables -A FORWARD -s 192.168.15.0/24 -o ppp999 -j ACCEPT iptables -A FORWARD -i ppp999 -d 192.168.15.0/24 -j ACCEPT

#Режем исходящую tc qdisc del dev ppp999 root tc qdisc add dev ppp999 root handle 1: htb tc class add dev ppp999 parent 1: classid 1:1 htb rate 100Mbit tc class add dev ppp999 parent 1:1 classid 1:100 htb rate 2Mbit ceil 4Mbit burst 15k tc class add dev ppp999 parent 1:1 classid 1:90 htb rate 1Mbit ceil 2Mbit burst 15k tc qdisc add dev ppp999 parent 1:100 handle 100: sfq perturb 10 tc qdisc add dev ppp999 parent 1:90 handle 90: sfq perturb 10 tc filter add dev ppp999 parent 1:0 protocol ip prio 1 handle 100 fw classid 1:100 tc filter add dev ppp999 parent 1:0 protocol ip prio 1 handle 90 fw classid 1:90

#282489

А можно пример попроще и без маркирования пакетов :) .

#303763

И снова нужна помощь :)
Встала задача порезать исходящий от абонентов трафик, условие самое простое - всех под одну гребенку. Покурив маны по tc додумался до следующего

$tc qdisc del dev eth1 handle ffff: ingress
$tc qdisc add dev eth1 handle ffff: ingress
$tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 3072kbit burst 10k drop flowid :1

на боевом серваке пока не проверял, на домашней тачке что-то ересь какая-то выходит, входящая падает до не приличия, а исходящая как перла так и прет (правда на машине всего один интерфейс)
На правильном ли я пути, или где-то что-то все же не так?

P.S. Проверил на боевом, исходящая у абонентов упала до ~0.5mb/s Что не так?

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