Temat: QoS według numerów IP [do sprawdzenia]
Kolejny etap przesiadki z Gargoyle na CC...
Konfig: TL-WR1043NDv2 i CC47390 od Cezarego.
Założenia: każdy user z Wifi dostaje stały, sztywny przydział pasma DL i UP.
Po przeczytaniu kilku tutoriali i opisów a przede wszystkim poradnika morfika dotarłem do czegoś takiego co poniżej. Prośba do osób lepiej ogarniających to ode mnie, aby sprawdzić kod skryptu czy ma to ręce i nogi.
Interface: wlan0-1
IP: 192.168.1.0/24
ifb0 -> upload
ifb1 -> download
#!/bin/sh /etc/rc.common
START=70
EXTRA_COMMANDS="status"
INTERFACE="wlan0-1"
status() {
echo "----### Statistics ###------"
echo "----# qdiscs $INTERFACE #---"
tc -s qdisc show dev $INTERFACE
echo "----# qdiscs ifb0 #---------"
tc -s qdisc show dev $INTERFACE
echo "----# qdiscs ifb1 #---------"
tc -s qdisc show dev $INTERFACE
echo "----# class $INTERFACE #----"
tc -s class show dev $INTERFACE
echo "----# class ifb0 (out) #----"
tc -s class show dev ifb0
echo "----# class ifb1 (in) #-----"
tc -s class show dev ifb1
echo "----# filter #--------------"
tc -s filter show dev $INTERFACE root
tc -s filter show dev $INTERFACE parent 1:
tc -s filter show dev $INTERFACE parent 11:
echo "----# filter ifb0 #---------"
tc -s filter show dev ifb0
echo "----# filter ifb1 #---------"
tc -s filter show dev ifb1
}
start() {
ifconfig ifb0 up
ifconfig ifb1 up
ifconfig ifb0 txqueuelen 8
ifconfig ifb1 txqueuelen 8
tc qdisc add dev $INTERFACE parent root handle 1:0 htb
tc filter add dev $INTERFACE parent 1:0 protocol ip prio 10 u32 match ip dst 0.0.0.0/0 flowid 1:1 action mirred egress redirect dev ifb0
tc qdisc add dev $INTERFACE handle ffff: ingress
tc filter add dev $INTERFACE parent ffff: protocol ip prio 10 u32 match ip src 0.0.0.0/0 flowid 2:1 action mirred egress redirect dev ifb1
tc qdisc add dev ifb0 root handle 1:0 htb default 300
tc class add dev ifb0 parent 1:0 classid 1:1 htb rate 102400kbit
for i in `seq 2 255` ; do
tc class add dev ifb0 parent 1:1 classid 1:$i htb rate 2048kbit prio 2
done
tc class add dev ifb0 parent 1:1 classid 1:300 htb rate 4096kbit prio 3
tc qdisc add dev ifb1 root handle 2:0 htb default 300
tc class add dev ifb1 parent 2:0 classid 2:1 htb rate 102400kbit
for i in `seq 2 255` ; do
tc class add dev ifb1 parent 2:1 classid 2:$i htb rate 2048kbit prio 2
done
tc class add dev ifb1 parent 2:1 classid 2:300 htb rate 4096kbit prio 3
for i in `seq 2 255` ; do
tc filter add dev ifb0 parent 1:0 protocol ip prio 80 u32 match ip dst 192.168.1.$i classid 1:$i
done
for i in `seq 2 255` ; do
tc filter add dev ifb1 parent 2:0 protocol ip prio 80 u32 match ip src 192.168.1.$i classid 2:$i
done
}
stop() {
tc qdisc del dev $INTERFACE root 2>&1
tc qdisc del dev ifb0 root 2>&1
tc qdisc del dev ifb1 root 2>&1
tc qdisc del dev $INTERFACE ingress 2>&1
ifconfig ifb0 down
ifconfig ifb1 down
}