1 #! /bin/sh 2 3 TC=/home/root/tc 4 IP=/home/root/ip 5 DEVICE=eth1 6 BANDWIDTH="bandwidth 10Mbit" 7 8 # Attach CBQ on $DEVICE. It will have handle 1:. 9 # $BANDWIDTH is real $DEVICE bandwidth (10Mbit). 10 # avpkt is average packet size. 11 # mpu is minimal packet size. 12 13 $TC qdisc add dev $DEVICE root handle 1: cbq \ 14 $BANDWIDTH avpkt 1000 mpu 64 15 16 # Create root class with classid 1:1. This step is not necessary. 17 # bandwidth is the same as on CBQ itself. 18 # rate == all the bandwidth 19 # allot is MTU + MAC header 20 # maxburst measure allowed class burstiness (please,read S.Floyd and VJ papers) 21 # est 1sec 8sec means, that kernel will evaluate average rate 22 # on this class with period 1sec and time constant 8sec. 23 # This rate is viewed with "tc -s class ls dev $DEVICE" 24 25 $TC class add dev $DEVICE parent 1:0 classid :1 est 1sec 8sec cbq \ 26 $BANDWIDTH rate 10Mbit allot 1514 maxburst 50 avpkt 1000 27 28 # Bulk. 29 # New parameters are: 30 # weight, which is set to be proportional to 31 # "rate". It is not necessary, weight=1 will work as well. 32 # defmap and split say that best effort ttraffic, not classfied 33 # by another means will fall to this class. 34 35 $TC class add dev $DEVICE parent 1:1 classid :2 est 1sec 8sec cbq \ 36 $BANDWIDTH rate 4Mbit allot 1514 weight 500Kbit \ 37 prio 6 maxburst 50 avpkt 1000 split 1:0 defmap ff3d 38 39 # OPTIONAL. 40 # Attach "sfq" qdisc to this class, quantum is MTU, perturb 41 # gives period of hash function perturbation in seconds. 42 # 43 $TC qdisc add dev $DEVICE parent 1:2 sfq quantum 1514b perturb 15 44 45 # Interactive-burst class 46 47 $TC class add dev $DEVICE parent 1:1 classid :3 est 2sec 16sec cbq \ 48 $BANDWIDTH rate 1Mbit allot 1514 weight 100Kbit \ 49 prio 2 maxburst 100 avpkt 1000 split 1:0 defmap c0 50 51 $TC qdisc add dev $DEVICE parent 1:3 sfq quantum 1514b perturb 15 52 53 # Background. 54 55 $TC class add dev $DEVICE parent 1:1 classid :4 est 1sec 8sec cbq \ 56 $BANDWIDTH rate 100Kbit allot 1514 weight 10Mbit \ 57 prio 7 maxburst 10 avpkt 1000 split 1:0 defmap 2 58 59 $TC qdisc add dev $DEVICE parent 1:4 sfq quantum 1514b perturb 15 60 61 # Realtime class for RSVP 62 63 $TC class add dev $DEVICE parent 1:1 classid 1:7FFE cbq \ 64 rate 5Mbit $BANDWIDTH allot 1514b avpkt 1000 \ 65 maxburst 20 66 67 # Reclassified realtime traffic 68 # 69 # New element: split is not 1:0, but 1:7FFE. It means, 70 # that only real-time packets, which violated policing filters 71 # or exceeded reshaping buffers will fall to it. 72 73 $TC class add dev $DEVICE parent 1:7FFE classid 1:7FFF est 4sec 32sec cbq \ 74 rate 1Mbit $BANDWIDTH allot 1514b avpkt 1000 weight 10Kbit \ 75 prio 6 maxburst 10 split 1:7FFE defmap ffff 76 77