1*de1e4e89SAndroid Build Coastguard Worker#! /bin/sh -x 2*de1e4e89SAndroid Build Coastguard Worker# 3*de1e4e89SAndroid Build Coastguard Worker# sample script on using the ingress capabilities 4*de1e4e89SAndroid Build Coastguard Worker# This script tags the fwmark on the ingress interface using IPchains 5*de1e4e89SAndroid Build Coastguard Worker# the result is used first for policing on the Ingress interface then 6*de1e4e89SAndroid Build Coastguard Worker# for fast classification and re-marking 7*de1e4e89SAndroid Build Coastguard Worker# on the egress interface 8*de1e4e89SAndroid Build Coastguard Worker# 9*de1e4e89SAndroid Build Coastguard Worker#path to various utilities; 10*de1e4e89SAndroid Build Coastguard Worker#change to reflect yours. 11*de1e4e89SAndroid Build Coastguard Worker# 12*de1e4e89SAndroid Build Coastguard WorkerIPROUTE=/root/DS-6-beta/iproute2-990530-dsing 13*de1e4e89SAndroid Build Coastguard WorkerTC=$IPROUTE/tc/tc 14*de1e4e89SAndroid Build Coastguard WorkerIP=$IPROUTE/ip/ip 15*de1e4e89SAndroid Build Coastguard WorkerIPCHAINS=/root/DS-6-beta/ipchains-1.3.9/ipchains 16*de1e4e89SAndroid Build Coastguard WorkerINDEV=eth2 17*de1e4e89SAndroid Build Coastguard WorkerEGDEV="dev eth1" 18*de1e4e89SAndroid Build Coastguard Worker# 19*de1e4e89SAndroid Build Coastguard Worker# tag all incoming packets from host 10.2.0.24 to value 1 20*de1e4e89SAndroid Build Coastguard Worker# tag all incoming packets from host 10.2.0.3 to value 2 21*de1e4e89SAndroid Build Coastguard Worker# tag the rest of incoming packets from subnet 10.2.0.0/24 to value 3 22*de1e4e89SAndroid Build Coastguard Worker#These values are used in the egress 23*de1e4e89SAndroid Build Coastguard Worker############################################################ 24*de1e4e89SAndroid Build Coastguard Worker$IPCHAINS -A input -s 10.2.0.0/24 -m 3 25*de1e4e89SAndroid Build Coastguard Worker$IPCHAINS -A input -i $INDEV -s 10.2.0.24 -m 1 26*de1e4e89SAndroid Build Coastguard Worker$IPCHAINS -A input -i $INDEV -s 10.2.0.3 -m 2 27*de1e4e89SAndroid Build Coastguard Worker############################################################ 28*de1e4e89SAndroid Build Coastguard Worker# 29*de1e4e89SAndroid Build Coastguard Worker# install the ingress qdisc on the ingress interface 30*de1e4e89SAndroid Build Coastguard Worker############################################################ 31*de1e4e89SAndroid Build Coastguard Worker$TC qdisc add dev $INDEV handle ffff: ingress 32*de1e4e89SAndroid Build Coastguard Worker############################################################ 33*de1e4e89SAndroid Build Coastguard Worker 34*de1e4e89SAndroid Build Coastguard Worker# 35*de1e4e89SAndroid Build Coastguard Worker# attach a fw classifier to the ingress which polices anything marked 36*de1e4e89SAndroid Build Coastguard Worker# by ipchains to tag value 3 (The rest of the subnet packets -- not 37*de1e4e89SAndroid Build Coastguard Worker# tag 1 or 2) to not go beyond 1.5Mbps 38*de1e4e89SAndroid Build Coastguard Worker# Allow up to at least 60 packets to burst (assuming maximum packet 39*de1e4e89SAndroid Build Coastguard Worker# size of # 1.5 KB) in the long run and upto about 6 packets in the 40*de1e4e89SAndroid Build Coastguard Worker# shot run 41*de1e4e89SAndroid Build Coastguard Worker 42*de1e4e89SAndroid Build Coastguard Worker############################################################ 43*de1e4e89SAndroid Build Coastguard Worker$TC filter add dev $INDEV parent ffff: protocol ip prio 50 handle 3 fw \ 44*de1e4e89SAndroid Build Coastguard Workerpolice rate 1500kbit burst 90k mtu 9k drop flowid :1 45*de1e4e89SAndroid Build Coastguard Worker############################################################ 46*de1e4e89SAndroid Build Coastguard Worker 47*de1e4e89SAndroid Build Coastguard Worker######################## Egress side ######################## 48*de1e4e89SAndroid Build Coastguard Worker 49*de1e4e89SAndroid Build Coastguard Worker 50*de1e4e89SAndroid Build Coastguard Worker# attach a dsmarker 51*de1e4e89SAndroid Build Coastguard Worker# 52*de1e4e89SAndroid Build Coastguard Worker$TC qdisc add $EGDEV handle 1:0 root dsmark indices 64 53*de1e4e89SAndroid Build Coastguard Worker# 54*de1e4e89SAndroid Build Coastguard Worker# values of the DSCP to change depending on the class 55*de1e4e89SAndroid Build Coastguard Worker# 56*de1e4e89SAndroid Build Coastguard Worker$TC class change $EGDEV classid 1:1 dsmark mask 0x3 \ 57*de1e4e89SAndroid Build Coastguard Worker value 0xb8 58*de1e4e89SAndroid Build Coastguard Worker$TC class change $EGDEV classid 1:2 dsmark mask 0x3 \ 59*de1e4e89SAndroid Build Coastguard Worker value 0x28 60*de1e4e89SAndroid Build Coastguard Worker$TC class change $EGDEV classid 1:3 dsmark mask 0x3 \ 61*de1e4e89SAndroid Build Coastguard Worker value 0x48 62*de1e4e89SAndroid Build Coastguard Worker# 63*de1e4e89SAndroid Build Coastguard Worker# 64*de1e4e89SAndroid Build Coastguard Worker# The class mapping 65*de1e4e89SAndroid Build Coastguard Worker# 66*de1e4e89SAndroid Build Coastguard Worker$TC filter add $EGDEV parent 1:0 protocol ip prio 4 handle 1 fw classid 1:1 67*de1e4e89SAndroid Build Coastguard Worker$TC filter add $EGDEV parent 1:0 protocol ip prio 4 handle 2 fw classid 1:2 68*de1e4e89SAndroid Build Coastguard Worker$TC filter add $EGDEV parent 1:0 protocol ip prio 4 handle 3 fw classid 1:3 69*de1e4e89SAndroid Build Coastguard Worker# 70*de1e4e89SAndroid Build Coastguard Worker 71*de1e4e89SAndroid Build Coastguard Worker# 72*de1e4e89SAndroid Build Coastguard Workerecho "---- qdisc parameters Ingress ----------" 73*de1e4e89SAndroid Build Coastguard Worker$TC qdisc ls dev $INDEV 74*de1e4e89SAndroid Build Coastguard Workerecho "---- Class parameters Ingress ----------" 75*de1e4e89SAndroid Build Coastguard Worker$TC class ls dev $INDEV 76*de1e4e89SAndroid Build Coastguard Workerecho "---- filter parameters Ingress ----------" 77*de1e4e89SAndroid Build Coastguard Worker$TC filter ls dev $INDEV parent ffff: 78*de1e4e89SAndroid Build Coastguard Worker 79*de1e4e89SAndroid Build Coastguard Workerecho "---- qdisc parameters Egress ----------" 80*de1e4e89SAndroid Build Coastguard Worker$TC qdisc ls $EGDEV 81*de1e4e89SAndroid Build Coastguard Workerecho "---- Class parameters Egress ----------" 82*de1e4e89SAndroid Build Coastguard Worker$TC class ls $EGDEV 83*de1e4e89SAndroid Build Coastguard Workerecho "---- filter parameters Egress ----------" 84*de1e4e89SAndroid Build Coastguard Worker$TC filter ls $EGDEV parent 1:0 85*de1e4e89SAndroid Build Coastguard Worker# 86*de1e4e89SAndroid Build Coastguard Worker#deleting the ingress qdisc 87*de1e4e89SAndroid Build Coastguard Worker#$TC qdisc del $DEV ingress 88