Титла: tc питане
Публикувано от: st_dimitrov в Feb 21, 2006, 16:18
Здравейте. Имам шейпър който чете от конф файл и разделя интернета между машини в локалната ми мрежа. От няколко дни се наблюдава много странен факт - едни клиенти свалят със максимума, други със 0/1/2/3КБ/с. Забелязвам, че при всяко пускане на шейпъра, в syslog-a излиза този ред Feb 21 16:13:14 router kernel: HTB: quantum of class 200XX is small. Consider r2q change. Feb 21 16:13:14 router kernel: HTB: quantum of class 100XX is small. Consider r2q change. Ето извадка от шейпъра: Примерен код |
$IPTABLES -t mangle -A POSTROUTING -o eth0 -p tcp -m length --length :64 -j MARK --set-mark 10 $IPTABLES -t mangle -A POSTROUTING -o eth1 -p tcp -m length --length :64 -j MARK --set-mark 20 $IPTABLES -t mangle -A POSTROUTING -o eth0 -p tcp -m length --length :64 -j ACCEPT $IPTABLES -t mangle -A POSTROUTING -o eth1 -p tcp -m length --length :64 -j ACCEPT
for currow in `cat /etc/shaper.conf | grep -v '^#'` do IP=`$ECHO $currow | cut -d \| -f 1` MAC=`$ECHO $currow | cut -d \| -f 2` DOWN=`$ECHO $currow | cut -d \| -f 3` DOWNMAX=`$ECHO $currow | cut -d \| -f 4` UP=`$ECHO $currow | cut -d \| -f 5` UPMAX=`$ECHO $currow | cut -d \| -f 6` ID=`$ECHO $currow | cut -d \| -f 7` STATUS=`$ECHO $currow | cut -d \| -f 8` NUM=`$ECHO $currow | cut -d \| -f 9` $ECHO "<$NUM> <$IP> Down: $DOWN/$DOWNMAX; Up: $UP/$UPMAX;" if [ $STATUS = "1" ]; then $IPTABLES -t nat -A POSTROUTING -s $IP -o eth1 -j MASQUERADE $IPTABLES -A INPUT -s $IP -p tcp --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A FORWARD -s $IP -j ACCEPT $TC class add dev eth0 parent 1:1 classid 1:$ID htb rate $DOWN ceil $DOWNMAX burst 15k $TC qdisc add dev eth0 parent 1:$ID handle $ID: sfq $TC class add dev eth1 parent 2:1 classid 2:$ID htb rate $UP ceil $UPMAX burst 15k $TC qdisc add dev eth1 parent 2:$ID handle $ID: sfq $TC filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst $IP flowid 1:$ID $TC filter add dev eth1 parent 2:0 protocol ip prio 1 u32 match ip dst $IP flowid 1:$ID $ECHO "$IP $MAC" >> /etc/ethers fi if [ $STATUS = "0" ]; then $IPTABLES -t nat -A PREROUTING -p tcp -s $IP -j REDIRECT --to-port 81 fi
done
$TC class add dev eth0 parent 1:1 classid 1:100 htb rate 100kbps prio 0 $TC class add dev eth1 parent 2:1 classid 2:100 htb rate 100kbps prio 0 $TC filter add dev eth0 parent 1:0 protocol ip handle 10 fw classid 1:100 $TC filter add dev eth1 parent 2:0 protocol ip handle 20 fw classid 2:100
|
самия конф файл представлява това:
Примерен код | # ip|mac|down|downmax|up|upmax|id|status|nomer
10.0.0.1|XX:XX:XX:XX:XX:XX|5kbps|6kbps|5kbps|6kbps|21|1|1 10.0.0.2|XX:XX:XX:XX:XX:XX|10kbps|11kbps|5kbps|6kbps|22|1|2 ...........
|
Ако забележите нещо странно кажете моля ви.. търся грешки но няма ;/
Титла: tc питане
Публикувано от: st_dimitrov в Feb 22, 2006, 15:54
Добавих в края на дефинирането на класовете quantum 1500 и вече не плюе в сислог-а, остава да видя как това ще подейства върху скоростта на потребителите.
Кажете по какъв начин да определя quantum-а, и за какво служи най-общо.
Благодаря
Титла: tc питане
Публикувано от: bonbon в Feb 22, 2006, 19:12
Титла: tc питане
Публикувано от: alex_c в Feb 22, 2006, 20:27
Това, което веднага ми прави впечатление е, че използваш едновременно u32 и fw classifiers. Доколкото си спомням, това е възможно от ядра 2.6.14 нагоре (поправете ме, ако не съм точен). За по-старите не беше възможно да се използва микс от класификатори. Не знам как е в твоя случай, но моят съвет е не ги мешай - ако можеш, карай само с u32 classifier, ако пък искаш по-голяма гъвкавост - ползвай само fw classifier.
Best wishes! Alex
Титла: tc питане
Публикувано от: st_dimitrov в Feb 23, 2006, 08:20
Здравей Алекс.
Ако става дума за тези редове:
$TC filter add dev eth0 parent 1:0 protocol ip handle 10 fw classid 1:100 $TC filter add dev eth1 parent 2:0 protocol ip handle 20 fw classid 2:100
С тях задавам по-висок приоритет на TCP ACK пакетите, тъй като ъплоад-а при тази машина често е зает и пречи на даунлоад-а...
Самото ограничение на информацията преминаваща към/от машините си е само със u32.
|