Radus, see below. > > I've been trying to write a traffic shaper for a 128kbit line with this setup > : > 5 computers that get dedicated bandwidth and the rest go in a pool with bigger > priorities. > I do not see the priorities in your script. Only some of the filters have priorities, but it has nothing to do with scheduling (you should give prioirties to the HTB classes). > > I made the attached script, but it seems it doesn't work... > > It sends the traffic coming from the dedicated ips to the default class. > Where is the error ? > You mean it all goes to 1:14 ? > > > I've set r2q to 1 (it's the smallest one possible, no ? ) and it receive > warnings that the quantum is too small > Quantum = rate/r2q For class 1:12, quantum = 10k/r2q = 10*1024(8*r2q) = 1280Bytes. This is smaller than MTU, that's why it complains that quantum is too small. Same thing for classes 1:13 and 1:14, quantum = 640 Bytes, which is smaller them MTU. What you can (and should) do is specify the quantum manually. > > Thanks in advance.... > > Radu > > Here's the script : > > tc qdisc add dev eth1 root handle 1: htb default 14 r2q 1 > tc class add dev eth1 parent 1: classid 1:1 htb rate 128kbit burst 2k > tc class add dev eth1 parent 1:1 classid 1:10 htb rate 48kbit burst 2k > > tc class add dev eth1 parent 1:1 classid 1:20 htb rate 12kbit ceil 128kbit > burst 2k > > tc class add dev eth1 parent 1:1 classid 1:30 htb rate 12kbit ceil 128kbit > burst 2k > > tc class add dev eth1 parent 1:1 classid 1:40 htb rate 12kbit ceil 128kbit > burst 2k > > tc class add dev eth1 parent 1:1 classid 1:50 htb rate 12kbit ceil 128kbit > burst 2k > > tc class add dev eth1 parent 1:1 classid 1:11 htb rate 20kbit ceil 128kbit > burst 2k > > tc class add dev eth1 parent 1:11 classid 1:12 htb rate 10kbit burst 2k > tc class add dev eth1 parent 1:11 classid 1:13 htb rate 5kbit burst 2k > tc class add dev eth1 parent 1:11 classid 1:14 htb rate 5kbit burst 2k > > tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 15 > tc qdisc add dev eth1 parent 1:30 handle 30: sfq perturb 15 > tc qdisc add dev eth1 parent 1:40 handle 40: sfq perturb 15 > tc qdisc add dev eth1 parent 1:50 handle 50: sfq perturb 15 > > tc qdisc add dev eth1 parent 1:12 handle 12: sfq perturb 15 > tc qdisc add dev eth1 parent 1:13 handle 13: sfq perturb 15 > tc qdisc add dev eth1 parent 1:14 handle 14: sfq perturb 15 > > tc filter add dev eth1 protocol ip parent 1: u32 match ip dst 192.168.0.45 > flowid 1:20 > > tc filter add dev eth1 protocol ip parent 1: u32 match ip dst 192.168.0.4 > flowid 1:30 > > tc filter add dev eth1 protocol ip parent 1: u32 match ip dst 192.168.0.50 > flowid 1:40 > > tc filter add dev eth1 protocol ip parent 1: u32 match ip dst 192.168.0.38 > flowid 1:50 > > tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip sport 80 > 0xffff flowid 1:12 > tc filter add dev eth1 protocol ip parent 1: prio 2 u32 match ip sport 25 > 0xffff flowid 1:13 > tc filter add dev eth1 protocol ip parent 1: prio 3 u32 match ip sport 110 > 0xffff flowid 1:13
Hello! First, thanks for the reply... > > 5 computers that get dedicated bandwidth and the rest go in a pool with > > bigger priorities. > > I do not see the priorities in your script. Only some of the filters have > priorities, but it has nothing to do with scheduling (you should give > prioirties to the HTB classes). > I made priorities only for the big class where the default traffic goes, so that the remaining 5 computers share the bandwidth equally (when it's free) I should write prios for all classes ? > You mean it all goes to 1:14 ? Yes, exactly that.... > > Quantum = rate/r2q > For class 1:12, quantum = 10k/r2q = 10*1024(8*r2q) = 1280Bytes. > This is smaller than MTU, that's why it complains that quantum is too > small. > > Same thing for classes 1:13 and 1:14, quantum = 640 Bytes, which is smaller > them MTU. > > What you can (and should) do is specify the quantum manually. > Could you give me an example for a class on how to specify the quantum ? Radu > > Here's the script : > > > > tc qdisc add dev eth1 root handle 1: htb default 14 r2q 1 > > tc class add dev eth1 parent 1: classid 1:1 htb rate 128kbit burst 2k > > tc class add dev eth1 parent 1:1 classid 1:10 htb rate 48kbit burst 2k > > > > tc class add dev eth1 parent 1:1 classid 1:20 htb rate 12kbit ceil > > 128kbit burst 2k > > > > tc class add dev eth1 parent 1:1 classid 1:30 htb rate 12kbit ceil > > 128kbit burst 2k > > > > tc class add dev eth1 parent 1:1 classid 1:40 htb rate 12kbit ceil > > 128kbit burst 2k > > > > tc class add dev eth1 parent 1:1 classid 1:50 htb rate 12kbit ceil > > 128kbit burst 2k > > > > tc class add dev eth1 parent 1:1 classid 1:11 htb rate 20kbit ceil > > 128kbit burst 2k > > > > tc class add dev eth1 parent 1:11 classid 1:12 htb rate 10kbit burst 2k > > tc class add dev eth1 parent 1:11 classid 1:13 htb rate 5kbit burst 2k > > tc class add dev eth1 parent 1:11 classid 1:14 htb rate 5kbit burst 2k > > > > tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 15 > > tc qdisc add dev eth1 parent 1:30 handle 30: sfq perturb 15 > > tc qdisc add dev eth1 parent 1:40 handle 40: sfq perturb 15 > > tc qdisc add dev eth1 parent 1:50 handle 50: sfq perturb 15 > > > > tc qdisc add dev eth1 parent 1:12 handle 12: sfq perturb 15 > > tc qdisc add dev eth1 parent 1:13 handle 13: sfq perturb 15 > > tc qdisc add dev eth1 parent 1:14 handle 14: sfq perturb 15 > > > > tc filter add dev eth1 protocol ip parent 1: u32 match ip dst > > 192.168.0.45 flowid 1:20 > > > > tc filter add dev eth1 protocol ip parent 1: u32 match ip dst 192.168.0.4 > > flowid 1:30 > > > > tc filter add dev eth1 protocol ip parent 1: u32 match ip dst > > 192.168.0.50 flowid 1:40 > > > > tc filter add dev eth1 protocol ip parent 1: u32 match ip dst > > 192.168.0.38 flowid 1:50 > > > > tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip sport 80 > > 0xffff flowid 1:12 > > tc filter add dev eth1 protocol ip parent 1: prio 2 u32 match ip sport 25 > > 0xffff flowid 1:13 > > tc filter add dev eth1 protocol ip parent 1: prio 3 u32 match ip sport > > 110 0xffff flowid 1:13 >