[LARTC] HTB & BDW Guarantee
toto toto
freeswan9@yahoo.fr
Sat, 10 Jul 2004 00:54:44 +0200 (CEST)
Hello,
I have problems setting up HTB.
This is my setup :
NET
1024/256 ADSL
||
eth1
Linux Firewall
eth0
||
LAN 10.a.a.a
I want to GUARANTEE for an IP (10.x.y.z) a 800kbit
bandwidth for HTTP download.
But When 10.x.y.z does no HTTP download, other trafic
must get the whole bandwidth, of course.
The script I use (see below) is quite the same as
presented at (the greeeeat page) :
http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm,
the only difference is that I use only 2 classes (HTTP
trafic vs other)
BUT :-((
When I
root@test# wget ftp.fr.debian.org/debian/ls-lR
(...)
21% [==========> ] 4,984,704 106.39K/s
root@test#
It goes at ~100 Ko, as expected when no other trafic
is generated.
But if I
root@test# wget ftp://ftp.fr.debian.org/debian/ls-lR
after the beginning of the HTTP download, the latter
goes dooown, and if I run a second wget ftp://...,
the HTTP download goes UNDER (really under) the 800
kbits...??!!
It seems like there's no difference whether the
shaping is done or not.
Trafic seems to be classified (tc -s -d class show dev
eth0 / eth1), but...
Actually my goal is more complicated than HTTP
downloads (I need to guarantee bandwidth for
H323 -> Netmeeting & co, so both down&up-loads), but
I'm just testing for now, and if I can't shape such a
simple trafic as HTTP download...
Could anyone tell me what I did wrong, or didn't
understand...
Is this only because one can't shape incoming trafic ?
Could Ingress solve my pb ? I don't think so, as
Ingress seems to limit the WHOLE bandwidth...
Is it a "prio" question ?
Thanks for your help
PSes :
- has anyone experienced H323 trafic shaping ?? if so,
scripts are welcome !!!
- If CBQ can do better, then I'll turn to CBQ, but
it's just like chinese for me...
HTB is more simple
Here's the script :
#!/bin/bash
OUT=eth1
IN=eth0
IP=10.x.y.z
BDW_IN=1024kbit
BDW_OUT=256kbit
BDW_WEB_IN=800kbit
BDW_OTHER_IN=224kbit
BDW_WEB_OUT=176kbit
BDW_OTHER_OUT=80kbit
#-----------------------------------------------------------#
function start_out () {
tc qdisc add dev $OUT root handle 1: htb default 11
tc class add dev $OUT parent 1: classid 1:1 htb rate
$BDW_OUT ceil $BDW_OUT
tc class add dev $OUT parent 1:1 classid 1:10 htb rate
$BDW_WEB_OUT ceil $BDW_OUT
tc class add dev $OUT parent 1:1 classid 1:11 htb rate
$BDW_OTHER_OUT ceil $BDW_OUT
tc qdisc add dev $OUT parent 1:10 handle 20: pfifo
limit 5
tc qdisc add dev $OUT parent 1:11 handle 40: sfq
perturb 10
tc filter add dev $OUT protocol ip parent 1:0 prio 1
u32 \
match ip src $IP match ip dport 80 0xffff
flowid 1:10
}
function start_in () {
tc qdisc add dev $IN root handle 1: htb default 11
tc class add dev $IN parent 1: classid 1:1 htb rate
$BDW_IN ceil $BDW_IN
tc class add dev $IN parent 1:1 classid 1:10 htb rate
$BDW_WEB_IN ceil $BDW_IN
tc class add dev $IN parent 1:1 classid 1:11 htb rate
$BDW_OTHER_IN ceil $BDW_IN
tc qdisc add dev $IN parent 1:10 handle 20: pfifo
limit 5
tc qdisc add dev $IN parent 1:11 handle 40: sfq
perturb 10
tc filter add dev $IN protocol ip parent 1:0 prio 1
u32 \
match ip dst $IP match ip sport 80 0xffff
flowid 1:10
}
#-----------------------------------------------------------#
function stop_out () {
tc filter del dev $OUT protocol ip parent 1:0 prio 1
u32
tc class del dev $OUT parent 1:1 classid 1:11
tc class del dev $OUT parent 1:1 classid 1:10
tc class del dev $OUT parent 1: classid 1:1
tc qdisc del dev $OUT root handle 1: htb
}
function stop_in() {
tc filter del dev $IN protocol ip parent 1:0 prio 1
u32
tc class del dev $IN parent 1:1 classid 1:11
tc class del dev $IN parent 1:1 classid 1:10
tc class del dev $IN parent 1: classid 1:1
tc qdisc del dev $IN root handle 1: htb
}
case $1 in
start)
echo
start_out
start_in
echo
;;
stop)
echo
stop_out
stop_in
echo
;;
*)
echo "Usage : $0 {start|stop|restart}"
;;
esac
Créez gratuitement votre Yahoo! Mail avec 100 Mo de stockage !
Créez votre Yahoo! Mail sur http://fr.benefits.yahoo.com/
Dialoguez en direct avec vos amis grâce à Yahoo! Messenger !Téléchargez Yahoo! Messenger sur http://fr.messenger.yahoo.com