| #! /bin/sh |
| |
| TC=/home/root/tc |
| IP=/home/root/ip |
| DEVICE=eth1 |
| BANDWIDTH="bandwidth 10Mbit" |
| |
| # Attach CBQ on $DEVICE. It will have handle 1:. |
| # $BANDWIDTH is real $DEVICE bandwidth (10Mbit). |
| # avpkt is average packet size. |
| # mpu is minimal packet size. |
| |
| $TC qdisc add dev $DEVICE root handle 1: cbq \ |
| $BANDWIDTH avpkt 1000 mpu 64 |
| |
| # Create root class with classid 1:1. This step is not necessary. |
| # bandwidth is the same as on CBQ itself. |
| # rate == all the bandwidth |
| # allot is MTU + MAC header |
| # maxburst measure allowed class burstiness (please,read S.Floyd and VJ papers) |
| # est 1sec 8sec means, that kernel will evaluate average rate |
| # on this class with period 1sec and time constant 8sec. |
| # This rate is viewed with "tc -s class ls dev $DEVICE" |
| |
| $TC class add dev $DEVICE parent 1:0 classid :1 est 1sec 8sec cbq \ |
| $BANDWIDTH rate 10Mbit allot 1514 maxburst 50 avpkt 1000 |
| |
| # Bulk. |
| # New parameters are: |
| # weight, which is set to be proportional to |
| # "rate". It is not necessary, weight=1 will work as well. |
| # defmap and split say that best effort ttraffic, not classfied |
| # by another means will fall to this class. |
| |
| $TC class add dev $DEVICE parent 1:1 classid :2 est 1sec 8sec cbq \ |
| $BANDWIDTH rate 4Mbit allot 1514 weight 500Kbit \ |
| prio 6 maxburst 50 avpkt 1000 split 1:0 defmap ff3d |
| |
| # OPTIONAL. |
| # Attach "sfq" qdisc to this class, quantum is MTU, perturb |
| # gives period of hash function perturbation in seconds. |
| # |
| $TC qdisc add dev $DEVICE parent 1:2 sfq quantum 1514b perturb 15 |
| |
| # Interactive-burst class |
| |
| $TC class add dev $DEVICE parent 1:1 classid :3 est 2sec 16sec cbq \ |
| $BANDWIDTH rate 1Mbit allot 1514 weight 100Kbit \ |
| prio 2 maxburst 100 avpkt 1000 split 1:0 defmap c0 |
| |
| $TC qdisc add dev $DEVICE parent 1:3 sfq quantum 1514b perturb 15 |
| |
| # Background. |
| |
| $TC class add dev $DEVICE parent 1:1 classid :4 est 1sec 8sec cbq \ |
| $BANDWIDTH rate 100Kbit allot 1514 weight 10Mbit \ |
| prio 7 maxburst 10 avpkt 1000 split 1:0 defmap 2 |
| |
| $TC qdisc add dev $DEVICE parent 1:4 sfq quantum 1514b perturb 15 |
| |
| # Realtime class for RSVP |
| |
| $TC class add dev $DEVICE parent 1:1 classid 1:7FFE cbq \ |
| rate 5Mbit $BANDWIDTH allot 1514b avpkt 1000 \ |
| maxburst 20 |
| |
| # Reclassified realtime traffic |
| # |
| # New element: split is not 1:0, but 1:7FFE. It means, |
| # that only real-time packets, which violated policing filters |
| # or exceeded reshaping buffers will fall to it. |
| |
| $TC class add dev $DEVICE parent 1:7FFE classid 1:7FFF est 4sec 32sec cbq \ |
| rate 1Mbit $BANDWIDTH allot 1514b avpkt 1000 weight 10Kbit \ |
| prio 6 maxburst 10 split 1:7FFE defmap ffff |
| |