LINUX.ORG.RU

Настроить shaper


0

1

Здравствуйте,

вот из этой темы, как за основу я взял решение по распределению скорости на shaper'e tc, ограничение скорости (комментарий)
немного его дополнил

#!/bin/sh
wan=eth0
lan=eth1
tc=`which tc`
IPT="/sbin/iptables -t mangle"

$tc qdisc del dev $lan root >& /dev/null
$tc qdisc add dev $lan root handle 1: htb default 1

$tc class add dev $lan parent 1: classid 1:1 htb rate 80mbit
$tc class add dev $lan parent 1:1 classid 1:2 htb rate 1kbit
$tc class add dev $lan parent 1:1 classid 1:3 htb rate 1024kbit
$tc class add dev $lan parent 1:1 classid 1:4 htb rate 4072kbit
$tc class add dev $lan parent 1:1 classid 1:5 htb rate 10072kbit
$tc class add dev $lan parent 1:1 classid 1:6 htb rate 31072kbit

$tc filter add dev $lan parent 1:0 protocol ip handle 1 fw flowid 1:2
$tc filter add dev $lan parent 1:0 protocol ip handle 2 fw flowid 1:3
$tc filter add dev $lan parent 1:0 protocol ip handle 3 fw flowid 1:4
$tc filter add dev $lan parent 1:0 protocol ip handle 4 fw flowid 1:5
$tc filter add dev $lan parent 1:0 protocol ip handle 5 fw flowid 1:6

$IPT -F

$IPT -A OUTPUT -o $lan -d 192.168.0.0/24 -p tcp --sport 8080 -j MARK --set-mark 1

# Мой айпи адрес
$IPT -A FORWARD -i $wan -o $lan -m iprange --dst-range 192.168.1.2-192.168.1.2 -j MARK --set-mark 6

# Тех. отдел
$IPT -A FORWARD -i $wan -o $lan -m iprange --dst-range 192.168.1.10-192.168.1.20 -j MARK --set-mark 4

# Бухгалтерия
$IPT -A FORWARD -i $wan -o $lan -m iprange --dst-range 192.168.1.40-192.168.1.50 -j MARK --set-mark 5

# Руководство
$IPT -A FORWARD -i $wan -o $lan -m iprange --dst-range 192.168.1.60-192.168.1.70 -j MARK --set-mark 6 

Работает, только с большими тормозами. Чувствуется даже на моем IP адресе как медленно загружаются страницы, а иногда и вовсе сервер не найден.

Подскажите пожалуйста, что я не так сделал?

«даже на моем ip» очень понятно :)

Ну так посмотри в какие классы попадет трафик «tc -s class show dev eth1» и счетчики в iptables

для "--set-mark 1" тормоза обеспечены.

Нет смысла сначала маркировать пакеты в iptables, а потом через фильтры классифицировать. Проще сразу в iptables классифицировать через -j CLASSIFY

vel ★★★★★
()
Ответ на: комментарий от vel

Спасибо за ваш ответ

[root@fedora]# tc -s class show dev eth1
class htb 1:1 root rate 80000Kbit ceil 80000Kbit burst 1590b cburst 1590b
 Sent 3162530693 bytes 2915084 pkt (dropped 0, overlimits 0 requeues 0)
 rate 1583Kbit 240pps backlog 0b 0p requeues 0
 lended: 4 borrowed: 0 giants: 0
 tokens: 150 ctokens: 150

class htb 1:2 parent 1:1 prio 0 rate 1000bit ceil 1000bit burst 1600b cburst 160                                                                             0b
 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: 12500000 ctokens: 12500000

class htb 1:3 parent 1:1 prio 0 rate 128000bit ceil 128000bit burst 1599b cburst                                                                              1599b
 Sent 1544 bytes 2 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
 lended: 2 borrowed: 0 giants: 0
 tokens: 6342 ctokens: 6342

class htb 1:4 parent 1:1 prio 0 rate 512000bit ceil 512000bit 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: 24414 ctokens: 24414

class htb 1:5 parent 1:1 prio 0 rate 1024Kbit ceil 1024Kbit burst 1599b cburst 1                                                                             599b
 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: 12207 ctokens: 12207

class htb 1:6 parent 1:1 prio 0 rate 4078Kbit ceil 4078Kbit burst 1599b cburst 1                                                                             599b
 Sent 2008275516 bytes 1974804 pkt (dropped 0, overlimits 0 requeues 0)
 rate 1020Kbit 166pps backlog 0b 0p requeues 0
 lended: 1974804 borrowed: 0 giants: 0
 tokens: 2927 ctokens: 2927

class htb 1:7 parent 1:1 prio 0 rate 6048Kbit ceil 6048Kbit burst 1598b cburst 1                                                                             598b
 Sent 1154247577 bytes 940274 pkt (dropped 0, overlimits 0 requeues 0)
 rate 548840bit 73pps backlog 0b 0p requeues 0
 lended: 940274 borrowed: 0 giants: 0
 tokens: 1994 ctokens: 1994

class htb 1:8 parent 1:1 prio 0 rate 52048Kbit ceil 52048Kbit burst 1587b cburst                                                                              1587b
 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: 239 ctokens: 239

для "--set-mark 1" тормоза обеспечены.
это понятно.
Нет смысла сначала маркировать пакеты в iptables, а потом через фильтры классифицировать. Проще сразу в iptables классифицировать через -j CLASSIFY
В силу своей неопытности немного вас не понял. Можно если вас не затруднит с примером. Спасибо

user2014
() автор топика
Ответ на: комментарий от user2014

можно выбросить все «tc filter» и заменить правила в iptables по образу и подобию

$IPT -A FORWARD -i $wan -o $lan -m iprange --dst-range 192.168.1.2-192.168.1.2 -j MARK --set-mark 6

на

$IPT -A FORWARD -i $wan -o $lan -m iprange --dst-range 192.168.1.2-192.168.1.2 -j CLASSIFY --set-class 1:6

Еще вопрос: а что у тебя говорит «tc qdisc show dev eth1» ?

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от user2014

гм. одного дерева классов мало, без дисциплин очередей оно не будет работать.

Если не желания разбираться с классами и дисциплинами до самых основ, то возьми htb.init-0.8.5 прочитай комменты в начале файла. Оно замечательно генерирует классы и дисциплины очередей.

Фильтры можно не задавать, а использовать iptables/CLASSIFY.

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.