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