rendered paste body#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin
iptables -t mangle -F 2>/dev/null
iptables -t mangle -X 2>/dev/null
iptables -t mangle -N markov
iptables -t mangle -I PREROUTING -j markov
iptables -t mangle -N markov2
iptables -t mangle -I POSTROUTING -j markov2
tc qdisc del dev imq0 root >/dev/null 2>&1
tc qdisc del dev imq1 root >/dev/null 2>&1
#bring up the imq0
ip link set dev imq0 up
#marking of incoming from eth1,eth2,eth3
iptables -t mangle -A markov -i eth1 -j MARK --set-mark 1
iptables -t mangle -A markov -i eth2 -j MARK --set-mark 2
iptables -t mangle -A markov -i eth3 -j MARK --set-mark 3
#forward it to imq0
iptables -t mangle -A PREROUTING -i eth1 -j IMQ --todev 0
iptables -t mangle -A PREROUTING -i eth2 -j IMQ --todev 0
iptables -t mangle -A PREROUTING -i eth3 -j IMQ --todev 0
tc qdisc add dev imq0 root handle 10: htb default 20
tc class add dev imq0 parent 10: classid 10:2 \
htb rate 512Kbit ceil 512Kbit
#####################################################
#class for eth1
tc class add dev imq0 parent 10:2 classid 10:21 htb rate 128Kbit ceil 512Kbit
# mark
tc filter add dev imq0 parent 10:2 protocol ip prio 1 handle 1 fw classid 10:21
tc qdisc add dev imq0 parent 10:21 sfq perturb 15
#######################################################
# class for eth2
tc class add dev imq0 parent 10:2 classid 10:22 htb rate 128Kbit ceil 512Kbit
#mark
tc filter add dev imq0 parent 10:2 protocol ip prio 1 handle 2 fw classid 10:22
tc qdisc add dev imq0 parent 10:22 sfq perturb 15
#########################################
# class for eth3
tc class add dev imq0 parent 10:2 classid 10:23 htb rate 128Kbit ceil 512Kbit
#mark
tc filter add dev imq0 parent 10:2 protocol ip prio 1 handle 3 fw classid 10:23
tc qdisc add dev imq0 parent 10:23 sfq perturb 15
##############################################
##############################################
# outgoing traffic to eth1,eth2,eth3
#bring up imq1
ip link set dev imq1 up
#make marks
iptables -t mangle -A markov2 -o eth1 -j MARK --set-mark 21
iptables -t mangle -A markov2 -o eth2 -j MARK --set-mark 22
iptables -t mangle -A markov2 -o eth3 -j MARK --set-mark 23
#forward it to imq1
iptables -t mangle -A POSTROUTING -o eth1 -j IMQ --todev 1
iptables -t mangle -A POSTROUTING -o eth2 -j IMQ --todev 1
iptables -t mangle -A POSTROUTING -o eth3 -j IMQ --todev 1
tc qdisc add dev imq1 root handle 10: htb default 20
tc class add dev imq1 parent 10: classid 10:2 htb rate 512Kbit ceil 512Kbit
##################################
# class for eth1
tc class add dev imq1 parent 10:2 classid 10:21 htb rate 128Kbit ceil 512Kbit
# mark
tc filter add dev imq1 parent 10:2 protocol ip prio 1 handle 21 fw classid 10:21
tc qdisc add dev imq1 parent 10:21 sfq perturb 15
####################################
# class for eth2
tc class add dev imq1 parent 10:2 classid 10:22 htb rate 128Kbit ceil 512Kbit
#mark
tc filter add dev imq1 parent 10:2 protocol ip prio 1 handle 22 fw classid 10:22
tc qdisc add dev imq1 parent 10:22 sfq perturb 15
#####################################
#class for eth3
tc class add dev imq1 parent 10:2 classid 10:23 htb rate 128Kbit ceil 512Kbit
#mark
tc filter add dev imq1 parent 10:2 protocol ip prio 1 handle 23 fw classid 10:23
tc qdisc add dev imq1 parent 10:23 sfq perturb 15
######################################
######################################