基于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。

此脚本亲测有效

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值