贮藏室,以及其它城市的几个贮藏室。
IP ATA:192.168.1.3。
IP ATA:192.168.2.3。
在设置QOS时,没有最好的方法,只有更好的实现我们的需求。
$IPT -t mangle -F
#mark packets for the Voip Device - value 0
$IPT -t mangle -A POSTROUTING -d $PREFIX.3 -j MARK --set-mark 1
#mark packets for Database replication - value 1
$IPT -t mangle -A POSTROUTING -s 192.168.1.2 -d $PREFIX.2 -j MARK --set-mark 2
#mark packets for remote DB developers - value 2
$IPT -t mangle -A POSTROUTING -s 1.1.4.1 -d $PREFIX.2 -j MARK --set-mark 3
#mark packets for HQ traffic - value 3
$IPT -t mangle -A POSTROUTING -s 192.168.1.0/24 -d $PREFIX.0/24 -j MARK --set-mark 4
1: Database Replication
2: Remote DB Developers
3: Headquarters traffic
4: Everything else is Internet traffic
target prot opt source destination
MARK all -- 0.0.0.0/0 192.168.4.3 MARK set 0x1
MARK all -- 192.168.1.2 192.168.4.2 MARK set 0x2
MARK all -- 1.1.4.1 192.168.4.2 MARK set 0x3
MARK all -- 192.168.1.0/24 192.168.4.0/24 MARK set 0x4
#Edit these lines to suit location
TOTALBW=1024 #Total DOWNLOAD bandwidth for the location
VBW=128 #Voice bandwidth in this location
PREFIX=192.168.4 #IP addresses in this location
#no more editing is required below this line
let BW=$TOTALBW-$VBW
#delete root qdisc - this will drop all classes
tc qdisc del root dev eth1
#create root qdisc
tc qdisc add dev eth1 root handle 1: htb default 12
#create root class
tc class add dev eth1 parent 1: classid 1:1 htb rate ${TOTALBW}kbit ceil ${TOTALBW}kbit
#add class, Add Qdisc, Add Filter
AC="tc class add dev eth1 parent"
AQ="tc qdisc add dev eth1 parent"
AF="tc filter add dev eth1 protocol ip parent 1:0 prio 1"
#VoIP should have the highest priority
$AC 1:1 classid 1:10 htb rate ${VBW}kbit ceil ${VBW}kbit prio 0
$AQ 1:10 handle 100: pfifo limit 5
$AF handle 1 fw classid 1:10
#Database Replication
#we allow a minimum of 3/8 of total bandwidth for replication
let DBW=3*$BW/8
$AC 1:1 classid 1:20 htb rate ${DBW}kbit ceil ${BW}kbit prio 1
$AQ 1:20 handle 200: pfifo limit 5
$AF handle 2 fw classid 1:20
#Remote DB application developers
let RBW=$BW/8
$AC 1:1 classid 1:30 htb rate ${RBW}kbit ceil ${RBW}kbit prio 2
$AQ 1:30 handle 300: pfifo limit 5
$AF handle 3 fw classid 1:30
#traffic between HQ and this location
#we allow a minimum of 1/4 of total bandwidth for traffic with HQ
let I=$BW/4
$AC 1:1 classid 1:40 htb rate ${I}kbit ceil ${BW}kbit prio 3
$AQ 1:40 handle 400: pfifo limit 5
$AF handle 4 fw classid 1:40
#Internet Traffic for users
#we allow a minimum of 1/4 of total bandwidth for internet traffic
$AC 1:1 classid 1:50 htb rate ${I}kbit ceil ${BW}kbit prio 4
$AQ 1:50 handle 500: pfifo limit 5
tc filter add dev eth1 protocol ip parent 1:0 prio 5 u32 match ip dst $PREFIX.0/24 flowid 1:50
$IPT -t mangle -A PREROUTING -s $PREFIX.3 -j MARK --set-mark 1
#mark packets for Database replication - value 1
$IPT -t mangle -A PREROUTING -d 192.168.1.2 -s $PREFIX.2 -j MARK --set-mark 2
#mark packets for remote DB developers - value 2
$IPT -t mangle -A PREROUTING -d 1.1.4.1 -s $PREFIX.2 -j MARK --set-mark 3
$IPT -t mangle -A PREROUTING -d 192.168.1.0/24 -s $PREFIX.0/24 -j MARK --set-mark 4
#Edit these lines to suit location
TOTALBW=1024 #Total UPLOAD bandwidth for the location
PREFIX=192.168.4 #IP addresses in this location
#no more editing is required below this line
let BW=$TOTALBW-$VBW
#delete root qdisc - this will drop all classes
tc qdisc del root dev eth0
#create root qdisc
tc qdisc add dev eth0 root handle 1: htb default 12
#create root class
tc class add dev eth0 parent 1: classid 1:1 htb rate ${TOTALBW}kbit ceil ${TOTALBW}kbit
#add class, Add Qdisc, Add Filter
AC="tc class add dev eth0 parent"
AQ="tc qdisc add dev eth0 parent"
AF="tc filter add dev eth0 protocol ip parent 1:0 prio 1"
#VoIP should have the highest priority
$AC 1:1 classid 1:10 htb rate ${VBW}kbit ceil ${VBW}kbit prio 0
$AQ 1:10 handle 100: pfifo limit 5
$AF handle 1 fw classid 1:10
#Database Replication
#we allow a minimum of 3/8 of total bandwidth for replication
let DBW=3*$BW/8
$AC 1:1 classid 1:20 htb rate ${DBW}kbit ceil ${BW}kbit prio 1
$AQ 1:20 handle 200: pfifo limit 5
$AF handle 2 fw classid 1:20
#we allow a minimum of 1/8 of total bandwidth for remote developers
let RBW=$BW/8
$AC 1:1 classid 1:30 htb rate ${RBW}kbit ceil ${RBW}kbit prio 2
$AQ 1:30 handle 300: pfifo limit 5
$AF handle 3 fw classid 1:30
#traffic between HQ and this location
#we allow a minimum of 1/4 of total bandwidth for traffic with HQ
let I=$BW/4
$AC 1:1 classid 1:40 htb rate ${I}kbit ceil ${BW}kbit prio 3
$AQ 1:40 handle 400: pfifo limit 5
$AF handle 4 fw classid 1:40
#Internet Traffic for users
#we allow a minimum of 1/4 of total bandwidth for internet traffic
$AC 1:1 classid 1:50 htb rate ${I}kbit ceil ${BW}kbit prio 4
$AQ 1:50 handle 500: pfifo limit 5
tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 match ip src $PREFIX.0/24 flowid 1:50