基於tc的流控腳本

自己寫的簡單的流控腳本,在此記錄,以作筆記

腳本用來均分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。

此腳本親測有效

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章