datocp
2022-05-17 14:21:03 +08:00
#!/bin/sh
iptables -t mangle -F POSTROUTING
tc qdisc del dev br-lan root 2> /dev/null > /dev/null
tc qdisc add dev br-lan root handle 1: htb default 2
tc class add dev br-lan parent 1: classid 1:1 htb rate $((3072))kbps
tc class add dev br-lan parent 1:1 classid 1:2 htb rate $((3072*6/10))kbps ceil $((3072*6/10))kbps prio 0
tc qdisc add dev br-lan parent 1:2 handle 2: sfq perturb 10
tc filter add dev br-lan parent 1: prio 20 protocol ip handle 2 fw flowid 1:2
iptables -t mangle -I POSTROUTING -m iprange --dst-range 192.168.8.100-192.168.8.199 -j RETURN
iptables -t mangle -I POSTROUTING -m iprange --dst-range 192.168.8.100-192.168.8.199 -j MARK --set-mark 2
tc class add dev br-lan parent 1:1 classid 1:3 htb rate $((3072*4/10))kbps ceil $((3072*10/10))kbps prio 1
tc qdisc add dev br-lan parent 1:3 handle 3: sfq perturb 10
tc filter add dev br-lan parent 1: prio 10 protocol ip handle 3 fw flowid 1:3
iptables -t mangle -I POSTROUTING -m iprange --dst-range 192.168.8.200-192.168.8.205 -j RETURN
iptables -t mangle -I POSTROUTING -m iprange --dst-range 192.168.8.200-192.168.8.205 -j MARK --set-mark 3
好久没玩这种了有点生疏,不知道这个从 tomato 改的规则能否适应 openwrt ,是否在 prio 优先级设定是否有错。这个仍然属于限速不是 QOS ,而且它针对下行的 br-lan ,却不是真正有效的上行方向 pppoe-wan 。
基本思路
1.将一条带宽按 6/10 的比例分配给访客 --dst-range 192.168.8.100-192.168.8.199 ,拥有高优先级 prio 0,最多只能使用 6/10 的带宽,
2.按 5/10~10/10 的比例分配给办公 --dst-range 192.168.8.200-192.168.8.205 ,拥有低优先级 prio 1,有 4/10 的保障带宽,有机会获得 100%的带宽
3.sfq 保障了网络在极端拥挤情况,仍然能获得一定的带宽
然后开始互相抢夺。
可以用这些命令观察效果
iptables -t mangle -vnL POSTROUTING
tc -s -d class show dev br-lan
tc -s -d qdisc show dev br-lan