#!/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 ###################################### ######################################