找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10481|回复: 13

[脚本] 测试成功了!paldos发的【Ros 按需分配带宽脚本】

[复制链接]
发表于 2008-4-29 11:41:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
paldos发的【ros 按需分配带宽脚本】,我昨晚试了一晚上,到今天上午终于使用成功了,感觉效果确实不错,网络使用效率比原来平均限制每个IP的方法高多了。
但是paldos的帖子设置了回复,里面的水贴太多了,不好提问。而且好像直接复制他的代码后,用记事本保存后会有小问题,对于我们菜鸟来说不好搞定。
这是我的配置:(3M的ADSL,上行384K,下行3072K)
注释(我的理解,可能有误):红色为局域网网段,蓝色2824000为下载的带宽,蓝色200000为上传的带宽,绿色300000/3000000为上传和下载的总带宽300k和3M(这个是全局限制,为了保险,我没有设置为100%的最大带宽)
:set maxdown 3000000  这是设置最大下载带宽
:set maxup 300000   这是设置最大上传带宽
:set mindown 120000    这是设置最小下载带宽
:set minup 40000   这是设置最小上传带宽
:set resDown 200000    这是设置保留下载带宽
:set resUp 100000    这是设置保留上传带宽
紫色的ADSL是连接公网的那个接口,我的是ADSL的,我建立的连接名字就是ADSL,如果名字是wan,则改为wan即可,好像要分大小写的

下面就是详细的代码了:

这是在命令行输入的部分:
/ip fir fil
add chain=forward src-address=10.195.194.0/24 action=add-src-to-address-list \
    address-list=pcq_list address-list-timeout=5s comment="cq_list_add"
/que typ
add name="pqc_http_down" kind=pcq pcq-rate=2824000 pcq-limit=50 \
    pcq-classifier=dst-address pcq-total-limit=200000
add name="pcq_up" kind=pcq pcq-rate=200000 pcq-limit=50 \
    pcq-classifier=src-address pcq-total-limit=20000
/que sim
add name="admin" target-addresses=10.195.194.0/24 dst-address=10.195.194.0/24 \
    interface=all parent=none direction=both priority=1 queue=default/default \
    limit-at=0/0 max-limit=0/0 total-queue=default disabled=no
add name="pcq" target-addresses=10.195.194.0/24 dst-address=0.0.0.0/0 \
    interface=LAN parent=none direction=both priority=8 \
    queue=pcq_up/pqc_http_down limit-at=0/0 max-limit=300000/3000000 \
    burst-limit=300000/3000000 burst-threshold=64000/256000 burst-time=3s/3s \
    total-queue=default-small disabled=no

这是脚本部分:
:set maxdown 3000000
:set maxup 300000
:set mindown 120000
:set minup 40000
:set resDown 200000
:set resUp 100000

:set yz 500
:set pcqitem [:len [/ip firewall address-list find list=pcq_list]]
:if ($pcqitem!=0) do={
:set pcqdown [/queue type get [/queue type find name=pqc_http_down] pcq-rate]
:set pcqdownold $pcqdown
:set pcqup [/queue type get [/queue type find name=pcq_up] pcq-rate]
:set pcqupold $pcqup
#:set pcqdown ($maxdown/$pcqitem)
#:set pcqup ($maxup/$pcqitem)
:set curDown 1
:set curUp 1
/int mon ADSL once do={:set curDown $received-bits-per-second}
/int mon ADSL once do={:set curUp $sent-bits-per-second}
:set testdown ($maxdown+-$curDown+-$resDown)
:if ($testdown>0) do={
:set pcqdown ($pcqdown+($testdown/$yz))
}
:if ($testdown<=0) do={
:set pcqdown ($pcqdown+$testdown)
}
:set a ($maxdown+-$resDown)
:if ($pcqdown>$a) do={:set pcqdown $a}
:set a ($maxdown/$pcqitem)
:if ($pcqdown<$a) do={:set pcqdown $a}
:set testup ($maxup+-$curUp+-$resUp)
:if ($testup>0) do={
:set pcqup ($pcqup+($testup/$yz))
}
:if ($testup<=0) do={
:set pcqup ($pcqup+$testup)
}
:set a ($maxup+-$resUp)
:if ($pcqup>$a) do={:set pcqup $a}
:set a ($maxup/$pcqitem)
:if ($pcqup<$a) do={:set pcqup $a}
:if ($pcqdown!=$pcqdownold) do={
:if ($pcqdown>$mindown) do={/queue type set [/queue type find name=pqc_http_down] pcq-rate=$pcqdown;} else={/queue type set [/queue type find name=pqc_http_down] pcq-rate=$mindown;}
}
:if ($pcqup!=$pcqupold) do={
:if ($pcqup>$minup) do={/queue type set [/queue type find name=pcq_up] pcq-rate=$pcqup;} else={/queue type set [/queue type find name=pcq_up] pcq-rate=$minup;}
}
}

[ 本帖最后由 红烧排骨 于 2008-4-29 11:57 编辑 ]
routeros
 楼主| 发表于 2008-4-29 11:44:25 | 显示全部楼层
在使用脚本之前,最好是把脚本复制到命令行窗口里运行一下,看看有没有错误
运行后,命令行里出现下面的代码,就表示成功了,或者说至少脚本能正常运行了(语法没有错误了)
  received-packets-per-second: 209
     received-bits-per-second: 1006.6kbps
      sent-packets-per-second: 153
         sent-bits-per-second: 214.2kbps
  received-packets-per-second: 209
     received-bits-per-second: 1006.6kbps
      sent-packets-per-second: 153
         sent-bits-per-second: 214.2kbps
routeros
回复

使用道具 举报

发表于 2008-4-29 13:07:24 | 显示全部楼层
好帖子就要顶一下
routeros
回复

使用道具 举报

发表于 2008-4-29 18:47:53 | 显示全部楼层
顶!~~的确是好贴,今晚到我测试下,但是我是双线,又该如何去设置为好呢>而且每条线都不一样的速度.一条2M一条1M ADSL
routeros
回复

使用道具 举报

 楼主| 发表于 2008-4-29 21:25:07 | 显示全部楼层
那就不知道了啊,双线应该要考虑负载均衡了,估计这个脚本搞不定
routeros
回复

使用道具 举报

发表于 2008-4-30 11:50:20 | 显示全部楼层
双线没条件.不过sim queue 不是有个packet mark 吗?我认为还是可以.不过要判断2次而已
routeros
回复

使用道具 举报

发表于 2008-5-2 12:07:38 | 显示全部楼层
/que sim
add name="admin" target-addresses=10.195.194.0/24 dst-address=10.195.194.0/24 \
    interface=all parent=none direction=both priority=1 queue=default/default \
    limit-at=0/0 max-limit=0/0 total-queue=default disabled=no
这一条是什么意思,我1M的带宽应该怎么分配呢,呵呵
routeros
回复

使用道具 举报

发表于 2008-5-2 12:11:05 | 显示全部楼层
:set maxdown 3000000
:set maxup 300000
:set mindown 120000
:set minup 40000
:set resDown 200000
:set resUp 100000
这些参数应该怎么计算呢
routeros
回复

使用道具 举报

发表于 2008-5-2 15:14:59 | 显示全部楼层
顶一顶,希望有支持多线的方法出现,,谢谢.....
routeros
回复

使用道具 举报

 楼主| 发表于 2008-5-5 14:14:19 | 显示全部楼层
原帖由 andawp 于 2008-5-2 12:07 发表
/que sim
add name="admin" target-addresses=10.195.194.0/24 dst-address=10.195.194.0/24 \
    interface=all parent=none direction=both priority=1 queue=default/default \
    limit-at=0/0 max-limit=0 ...

这段命令的意思是取消对路由器访问的限速,就是说pc访问ROS是不会被限速的
routeros
回复

使用道具 举报

 楼主| 发表于 2008-5-5 14:20:27 | 显示全部楼层
原帖由 andawp 于 2008-5-2 12:11 发表
:set maxdown 3000000
:set maxup 300000
:set mindown 120000
:set minup 40000
:set resDown 200000
:set resUp 100000
这些参数应该怎么计算呢

maxdown是最大下载带宽,1M就是1024000了,maxup同理
mindown最小下载带宽,这个我也不太清楚,估计是给每个IP分配的下载带宽不低于这个值吧
resDown是保留的下载带宽,我也不知道保留是什么意思,是留给路由器的还是什么
routeros
回复

使用道具 举报

发表于 2008-5-8 01:31:18 | 显示全部楼层
顶一顶,希望有支持多线的方法出现,,谢谢..
routeros
回复

使用道具 举报

发表于 2012-8-29 23:14:19 | 显示全部楼层
如何证实代码能正确运行?
routeros
回复

使用道具 举报

发表于 2013-3-31 21:17:08 | 显示全部楼层
谢谢了,留下实验
routeros
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-23 19:23 , Processed in 0.091811 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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