自己写的简单的流控脚本,在此记录,以作笔记
脚本用来均分totle的总带宽,使用hfsc流控算法
脚本内容如下
#!/bin/sh
macs=mac.conf #需要做流控的mac地址,一行一个
intf=wlan1 #需要应用流控的接口名称
totle=10240 #kbps #总带宽
sta_count=`cat $macs |wc -l`
reserv_bw=`expr $totle / 20`
bw=`expr $totle - $reserv_bw`
sta_bw=`expr $bw / $sta_count`
#init_qos()
#{
tc qdisc del dev $intf root
tc qdisc add dev $intf root handle 1000: hfsc default 1002
tc class add dev $intf parent 1000: classid 1000:1001 hfsc sc rate ${reserv_bw}kbit ul rate ${totle}kbit
tc class add dev $intf parent 1000: classid 1000:1002 hfsc sc rate ${bw}kbit ul rate ${totle}kbit
tc qdisc add dev $intf parent 1000:1002 handle 2000: hfsc default 2001
tc class add dev $intf parent 2000: classid 2000:2001 hfsc sc rate ${sta_bw}kbit ul rate ${bw}kbit
#}
index=1
while read LINE
do
mac2=`echo $LINE | awk '{print $1}'`
mac4=`echo $LINE | awk '{print $2}'`
tc class add dev $intf parent 2000: classid 2000:$index hfsc sc rate ${sta_bw}kbit ul rate ${bw}kbit
tc filter add dev $intf parent 2000: prio 1 protocol ip handle 800::$index u32 match u32 0x${mac4} 0xffffffff at -12 match u16 0x${mac2} 0xffff at -14 flowid 2000:$index
index=`expr $index + 1`
done < $macs
配置文件如下:
mac.conf
5800 e3fb786f
6c94 f8341d74
b4f6 1cc5f4d1
d88f 76ad9205
dc0c 5cd84a8b
f431 c33694a1
一行表示一个mac。
此脚本亲测有效