OK, here's a very simple (working!) example script which simply limits upload to 15 Mbps.
htb.sh:
#!/bin/bash #Some note from HTB documentation: #Usage: ... qdisc add ... htb [default N] [r2q N] # default minor id of class to which unclassified packets are sent {0} # r2q DRR quantums are computed as rate in Bps/r2q {10} # debug string of 16 numbers each 0-3 {0} # ... class add ... htb rate R1 burst B1 [prio P] [slot S] [pslot PS] # [ceil R2] [cburst B2] [mtu MTU] [quantum Q] # rate rate allocated to this class (class can still borrow) # burst max bytes burst which can be accumulated during idle period {computed} # ceil definite upper class rate (no borrows) {rate} # cburst burst but for ceil {computed} # mtu max packet size we create rate map for {1600} # prio priority of leaf; lower are served first {0} # quantum how much bytes to serve from leaf at once {use r2q}
set() { for i in 0; do # MAX=16000kbit # MAX=$[15*1024]kbit == 15360kbit < 16000 kbit MAX=15mbit tc qdisc del dev eth$i root tc qdisc add dev eth$i root handle 1:0 htb default 1 r2q 100 tc class add dev eth$i parent 1:0 classid 1:1 htb rate $MAX # tc class add dev eth$i parent 1:0 classid 1:1 htb \ # rate 15mbit burst $[1514 mtu 1514 quantum 1514 done }
show() { for i in 0 1; do tc -s qdisc list dev eth$i; tc -s class list dev eth$i done }
$1
Call as ./htb.sh set or ./htb.sh show
Limits output on eth0 to 15mbit on set and shows settings on eth0 and eth1 on show.
If you need a full fledged script (4*n+20 rules from a server doing HTB per user in an apartment LAN) than mail me...
Cheers, MaZe.
On Sat, 27 Aug 2005, Joe Klemmer wrote:
Ok, this has been kicking my @$$ for weeks. I'm trying to get some kind of bandwidth shaping working on my server. I need to throttle ftp down so as not to suck up all the available bandwidth. I had cbq working on the old server (an ancient RH 6.2 box) so I figured I'd just move the config over and get cbq.init from sf.net and it should work. Unfortunately it doesn't. At least it doesn't work to the extent that no throttling of ftp is being done. So next I thought I'd try htb (as someone here mentioned it as an alternative). After printing out the entire section on bandwidth management from the lartc documentation I still can't seem to get anything working. I think I'm at the "forest/trees" point where I've been banging my head against this so much I'm missing something obvious.
So, if anyone out there could lend a hand (or more precisely a pair of eyes) I would be greatly appreciative. To save list bandwidth, send replies to me and once I get things working I'll post a summery, with full credit attribution, to the list.
Thanks in advance, Joe