1#! /bin/sh 2 3TC=/home/root/tc 4IP=/home/root/ip 5DEVICE=eth1 6BANDWIDTH="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 \ 37prio 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 \ 49prio 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 \ 64rate 5Mbit $BANDWIDTH allot 1514b avpkt 1000 \ 65maxburst 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 \ 74rate 1Mbit $BANDWIDTH allot 1514b avpkt 1000 weight 10Kbit \ 75prio 6 maxburst 10 split 1:7FFE defmap ffff 76 77