找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 6975|回复: 7

请教qos限速脚本

[复制链接]
网上找的一段脚本,试了一下,下载可以限速,但上传限不了,不知是不是eth1的问题?应该换成什么呢?谢谢

#!/bin/sh
#
# Coyote local command init script
#/sbin/insmod ipt_mac
# QoS br0 下载方面
#
# 清除 br0所有队列规则
tc qdisc del dev br0 root 2> /dev/null > /dev/null
# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev br0 root handle 1: htb default 30
# 定义第一层的 1:1 类别 (总频宽)
tc class add dev br0 parent 1: classid 1:1 htb rate 180kbps
# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev br0 parent 1:1 classid 1:10 htb rate 50kbps ceil 160kbps prio 0
tc class add dev br0 parent 1:1 classid 1:20 htb rate 30kbps ceil 120kbps prio 1
tc class add dev br0 parent 1:1 classid 1:30 htb rate 15kbps ceil 30kbps prio 2
# 定义各叶类别的队列规则
tc qdisc add dev br0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev br0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev br0 parent 1:30 handle 30: sfq perturb 10

# 设定过滤器
tc filter add dev br0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
tc filter add dev br0 parent 1:0 prio 1 protocol ip handle 20 fw flowid 1:20
tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 30 fw flowid 1:30
# downloads
# 下载方面
iptables -t mangle -A POSTROUTING -d 192.168.10.133 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.10.100 -j MARK --set-mark 20

#上传方面
# 清除 eth1 所有队列规则
tc qdisc del dev eth1 root 2> /dev/null > /dev/null
# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev eth1 root handle 1: htb default 30
# 定义第一层的 1:1 类别 (总频宽)
tc class add dev eth1 parent 1: classid 1:1 htb rate 100kbps
# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 30kbps ceil 80kbps prio 0
tc class add dev eth1 parent 1:1 classid 1:20 htb rate 10kbps ceil 15kbps prio 1
tc class add dev eth1 parent 1:1 classid 1:30 htb rate 5kbps ceil 10kbps prio 2
# 定义各叶类别的队列规则
tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev eth1 parent 1:30 handle 30: sfq perturb 10
t
# 设定过滤器
tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 30 fw flowid 1:30
# uploads
# 设定上传方面,先利用 iptables 给封包贴标签,再交由 fw 过滤器进行过滤

#iptables -t mangle -A PREROUTING -m -mac-source 00:11:5B:EB:69C -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.10.133 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.10.100 -j MARK --set-mark 20
本帖最后由 dato 于 2011-5-22 13:07 编辑

汗,这我写的我应该注明在不同连接模式下的相应接口说明,谁转转转又转没了。。。

Firmware: DD-WRT v24-sp2 (10/10/09) micro
磊科nw618 16M内存版本
中继客户端模式
下行端口br0
上行端口eth1
dlink dir600
客户端模式
下行端口br0
上行端口ra0
pppoe拔号模式
下行端口br0
上行端口ppp0
网上有好多QOS的脚本,有基于端口的也有基于IP分组的,可惜似乎是micro版本不支持一些shell语法还是怎么回事。我试图将这个脚本写得更易读时,却发现没有实现效果,所以就发这个原始的版本吧。这个脚本参考了 Coyote Linux 频宽管制 (QoS) 设定教学,大家可以用“Coyote Linux 频宽管制 (QoS) 设定教学”做关键词搜索一下以便理解。
脚本实现上/下行35K/180K
ddwrt 优先权分0-4级,数字越高优先权越低
设置了192.168.10.133这个特权用户拥有最高优先权prio 0
设置192.168.10.100拥有稍微低的优先权prio 1,经过测试100用户在BT时,ppstream时133用户都可以很好的进行cs没有感觉到延时。
其它IP的用户default 30拥有更低的上下行速率
以前用过一些带宽控制软件,还是linux的这个tc+iptables强大了,竟然可以边迅雷边游戏。以前的像windows的SoftPerfect Bandwidth Manager虽然占用CPU非常得低,可惜CS时效果也很差。
拷贝下面的代码,在WEB管理界面Administration/Commands/Save Firewall 保存为防火墙脚本就可以了
#!/bin/sh
#
# Coyote local command init script
#/sbin/insmod ipt_mac

#清空iptables mangle
iptables -t mangle -F
iptables -t mangle -X

# QoS br0 下载方面
#
# 清除 br0所有队列规则
tc qdisc del dev br0 root 2> /dev/null > /dev/null
# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev br0 root handle 1: htb default 30
# 定义第一层的 1:1 类别 (总频宽)
tc class add dev br0 parent 1: classid 1:1 htb rate 180kbps
# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev br0 parent 1:1 classid 1:10 htb rate 50kbps ceil 160kbps prio 0
tc class add dev br0 parent 1:1 classid 1:20 htb rate 30kbps ceil 120kbps prio 1
tc class add dev br0 parent 1:1 classid 1:30 htb rate 15kbps ceil 30kbps prio 2
# 定义各叶类别的队列规则
tc qdisc add dev br0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev br0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev br0 parent 1:30 handle 30: sfq perturb 10
# 设定过滤器
tc filter add dev br0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
tc filter add dev br0 parent 1:0 prio 1 protocol ip handle 20 fw flowid 1:20
tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 30 fw flowid 1:30
# downloads
# 下载方面
iptables -t mangle -A POSTROUTING -d 192.168.10.133 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.10.133 -j RETURN
iptables -t mangle -A POSTROUTING -d 192.168.10.100 -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -d 192.168.10.100 -j RETURN
#上传方面
# 清除 eth1 所有队列规则
tc qdisc del dev eth1 root 2> /dev/null > /dev/null
# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev eth1 root handle 1: htb default 30
# 定义第一层的 1:1 类别 (总频宽)
tc class add dev eth1 parent 1: classid 1:1 htb rate 100kbps
# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 30kbps ceil 80kbps prio 0
tc class add dev eth1 parent 1:1 classid 1:20 htb rate 10kbps ceil 15kbps prio 1
tc class add dev eth1 parent 1:1 classid 1:30 htb rate 5kbps ceil 10kbps prio 2
# 定义各叶类别的队列规则
tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev eth1 parent 1:30 handle 30: sfq perturb 10
# 设定过滤器
tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 30 fw flowid 1:30
# uploads
# 设定上传方面,先利用 iptables 给封包贴标签,再交由 fw 过滤器进行过滤
#iptables -t mangle -A PREROUTING -m -mac-source 00:11:5B:EB:69C -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.10.133 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.10.133 -j RETURN
iptables -t mangle -A PREROUTING -s 192.168.10.100 -j MARK --set-mark 20
iptables -t mangle -A PREROUTING -s 192.168.10.100 -j RETURN

* 2011年4月14日星期四
- 添加#清空iptables mangle,以避免web GUI界面执行 应用时 重复3次执行 rc_firewall
- 添加iptables -j RETURN 加快顺序执行速度

* 2010年7月29日星期四
- 一直不知道如何用更精简的shell语法书写,当时google的时候就很郁闷为什么人家都是基于shell语法,而我把它们添加到启动或者防火墙指令却都无法生效。今天无意中发现正确的做法应该是将它们保存为自定义指令,然后ddwrt重启的时候会在/tmp下生成/tmp/custom.sh文件,然后将/tmp/custom.sh保存为启动指令就可以正确调用基于shell写法的实现。以下就是个简单范例,放行192.168.1.1,将其余的IP都绑定为00:00:00:00:00:00就可以有效的防范wan口其它电脑的连接。测试时用的build14311版本
#!/bin/sh
STARTIP=2
while [ $STARTIP -lt 255 ]
do
arp -s 192.168.1.$STARTIP 00:00:00:00:00:00
let "STARTIP+=1"
done

* 2010年7月27日星期二
- 去除一处换行前一个无效的字符 t 输入
- 更新说明相应路由器在不同模式下的接口说明
回复

使用道具 举报

偶已经将上传部分改成hfsc的算法了。不过代码没带在身边。hfsc应该比htb至少在打CS效果方面更好。但是hfsc是个很数学化的东西,它的很多东西要计算的不像这个htb随意指定。但是htb从目前实际使用情况来看将一方上传设定2m adsl超过 15kbps时CS就蛮郁闷的了。当时可能蹭的是光纤线路吧没什么感觉。
回复

使用道具 举报

 楼主| | 显示全部楼层
可以了,谢谢原作者
回复

使用道具 举报

不错,参考一下
回复

使用道具 举报

#!/bin/sh
#
# Coyote local command init script
#/sbin/insmod ipt_mac
iptables -t mangle -F
iptables -t mangle -X

tc qdisc del dev br0 root 2> /dev/null > /dev/null
tc qdisc add dev br0 root handle 1: htb default 30
tc class add dev br0 parent 1: classid 1:1 htb rate 3000kbps
tc class add dev br0 parent 1:1 classid 1:10 htb rate 1500kbps ceil 1500kbps prio 0
tc class add dev br0 parent 1:1 classid 1:20 htb rate 750kbps ceil 750kbps prio 1
tc class add dev br0 parent 1:1 classid 1:30 htb rate 750kbps ceil 750kbps prio 2
tc qdisc add dev br0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev br0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev br0 parent 1:30 handle 30: sfq perturb 10
tc filter add dev br0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
tc filter add dev br0 parent 1:0 prio 1 protocol ip handle 20 fw flowid 1:20
tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 30 fw flowid 1:30
iptables -t mangle -A POSTROUTING -d 192.168.1.100 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.1.100 -j RETURN
iptables -t mangle -A POSTROUTING -d 192.168.1.101 -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -d 192.168.1.101 -j RETURN

tc qdisc del dev ppp0 root 2> /dev/null > /dev/null
tc qdisc add dev ppp0 root handle 1: htb default 30
tc class add dev ppp0 parent 1: classid 1:1 htb rate 375kbps
tc class add dev ppp0 parent 1:1 classid 1:10 htb rate 180kbps ceil 180kbps prio 0
tc class add dev ppp0 parent 1:1 classid 1:20 htb rate 90kbps ceil 90kbps prio 1
tc class add dev ppp0 parent 1:1 classid 1:30 htb rate 90kbps ceil 90kbps prio 2
tc qdisc add dev ppp0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev ppp0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev ppp0 parent 1:30 handle 30: sfq perturb 10
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip handle 30 fw flowid 1:30
iptables -t mangle -A PREROUTING -s 192.168.1.100 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.100 -j RETURN
iptables -t mangle -A PREROUTING -s 192.168.1.101 -j MARK --set-mark 20
iptables -t mangle -A PREROUTING -s 192.168.1.101 -j RETURN

================================================================================
網路24M/3M 凱擎固定ip
分享器RT-N10+
韌體DD-WRT v24-sp2 (04/13/11) std
上傳方面 eh1 ra0 ppp0都試過
可是都沒有限制
不知那出問題.
還是韌體內還要設定那些部份?
回复

使用道具 举报

不能限制是什么情况,没有仔细的按设定的限制住,还是远远超过设定值。偶看过你的语法应该是符合的,目前己知这脚本在14XXX 15XXX 16XXX上版本应该是没问题的。但是仍然会有个别情况发生。
* 2011年5月31日星期二
- RTNETLINK answers: No such file or directory 问题
> 今天注意到在tp841 build 15778版本出现这个问题。把15XXX系列的版本刷了一遍都有这个问题存在。也就类似以下的语句无效
# 定义各叶类别的队列规则
tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
原先以为是可能2.6内核加入了TCP Congestion Control所以去除了S购物模块。可是在dir 600上刷了一版15506竟然S购物语句仍然有效。
目前来说dir600推荐使用build 14311,14XXX后续两个版本Wiviz survey功能有问题只能显示一个,15XXX用了一圈不管无线客户端还是有线总感觉网络有异常,而目前的16XXX又出现DDNS broken问题。。。
tp841如果因为这个S购物的问题建议使用build14929,不然就使用官方推荐的build15778。当然build15778存在loopback nat的问题,不过还好有解决方案。build15778虽然存在这个问题。但是QOS的限制算法还是有效的,只是感觉玩CS总是有点怪怪的,打不死人。


你需要telnet 到路由然后用
tc -s -d class show dev ppp0
tc -s -d filter show dev ppp0
tc -s -d qdisc show dev ppp0
iptables -t mangle -vnL
来看是否相应的脚本正确执行。固定IP啊。。。没玩过现在手头也没设备,建议你使用ifconfig看看你的路由里都有些什么样的接口,可能上行根本不是ppp0 eth1 ra0。
回复

使用道具 举报

有了.
我上行接口是vlan2.
設置後也有照腳本運行.
謝謝
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-15 03:20

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表