xref: /aosp_15_r20/external/iproute2/examples/cbqinit.eth1 (revision de1e4e894b0c224df933550f0afdecc354b238c4)
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