osdl.org!shemminger | aba5acd | 2004-04-15 20:56:59 +0000 | [diff] [blame] | 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 | |