红烧排骨 发表于 2008-4-29 11:41:11

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

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 ]
:if ($pcqitem!=0) do={
:set pcqdown pcq-rate]
:set pcqdownold $pcqdown
:set pcqup 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 pcq-rate=$pcqdown;} else={/queue type set pcq-rate=$mindown;}
}
:if ($pcqup!=$pcqupold) do={
:if ($pcqup>$minup) do={/queue type set pcq-rate=$pcqup;} else={/queue type set pcq-rate=$minup;}
}
}

[ 本帖最后由 红烧排骨 于 2008-4-29 11:57 编辑 ]

红烧排骨 发表于 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

混乱系 发表于 2008-4-29 13:07:24

好帖子就要顶一下:victory: :victory:

pxhxkij 发表于 2008-4-29 18:47:53

顶!~~的确是好贴,今晚到我测试下,但是我是双线,又该如何去设置为好呢>而且每条线都不一样的速度.一条2M一条1M ADSL

红烧排骨 发表于 2008-4-29 21:25:07

那就不知道了啊,双线应该要考虑负载均衡了,估计这个脚本搞不定

paldos 发表于 2008-4-30 11:50:20

双线没条件.不过sim queue 不是有个packet mark 吗?我认为还是可以.不过要判断2次而已

andawp 发表于 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的带宽应该怎么分配呢,呵呵

andawp 发表于 2008-5-2 12:11:05

:set maxdown 3000000
:set maxup 300000
:set mindown 120000
:set minup 40000
:set resDown 200000
:set resUp 100000
这些参数应该怎么计算呢

yzandychen 发表于 2008-5-2 15:14:59

顶一顶,希望有支持多线的方法出现,,谢谢.....

红烧排骨 发表于 2008-5-5 14:14:19

原帖由 andawp 于 2008-5-2 12:07 发表 http://bbs.routerclub.com/images/common/back.gif
/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是不会被限速的

红烧排骨 发表于 2008-5-5 14:20:27

原帖由 andawp 于 2008-5-2 12:11 发表 http://bbs.routerclub.com/images/common/back.gif
: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是保留的下载带宽,我也不知道保留是什么意思,是留给路由器的还是什么

yzandychen 发表于 2008-5-8 01:31:18

顶一顶,希望有支持多线的方法出现,,谢谢..

jwing 发表于 2012-8-29 23:14:19

如何证实代码能正确运行?

wangyuan979 发表于 2013-3-31 21:17:08

谢谢了,留下实验
页: [1]
查看完整版本: 测试成功了!paldos发的【Ros 按需分配带宽脚本】