paldos 发表于 2008-2-23 13:26:27

Ros 按需分配带宽脚本

本帖最后由 zooyo 于 2011-2-9 19:53 编辑

红色的数字按自己实际带宽和地址修改
#得到用户数量
/ip fir fil
add chain=forward src-address=192.168.0.0/24 action=add-src-to-address-list \
    address-list=pcq_list address-list-timeout=5s comment="Pcq_list_add" \



#//***********************************Queue Type
/que typ
add name="pqc_http_down" kind=pcq pcq-rate=824000 pcq-limit=50 \
    pcq-classifier=dst-address pcq-total-limit=200000
add name="pcq_up" kind=pcq pcq-rate=284000 pcq-limit=50 \
    pcq-classifier=src-address pcq-total-limit=20000

#//***************************************in Simple Quueu
/que sim
#取消对网关的限制#
add name="admin" target-addresses=192.168.0.0/24 dst-address=192.168.0.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
#PCQ分配#
add name="pcq" target-addresses=192.168.0.0/24 dst-address=0.0.0.0/0 \
    interface=LAN parent=none direction=both priority=8 \ #LAN名称,我的是LAN
    queue=pcq_up/pqc_http_down limit-at=0/0 max-limit=384000/1000000 \
    burst-limit=384000/1000000 burst-threshold=64000/256000 burst-time=3s/3s \
    total-queue=default-small disabled=no


#//******************************脚本,每2秒run1次
:set maxdown 1024000
:set maxup 384000
#最小带宽
:set mindown 120000
:set minup 80000
#保留带宽
: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 PPPOE once do={:set curDown $received-bits-per-second}#WAN 名称,我的是PPPOE
/int mon PPPOE 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 [/queue type find

name=pqc_http_down] pcq-rate=$mindown;}
}
:if ($pcqup!=$pcqupold) do={
:if ($pcqup>$minup) do={/queue type set pcq-rate=$pcqup;} else={/queue type set

pcq-rate=$minup;}
}
}

#////
#优点:可以最大化网络
#缺点:不是程序级别,反应比较慢,通常由1-2秒的延时

:lol :lol
欢迎大家一起讨论

[ 本帖最后由 paldos 于 2008-2-24 13:09 编辑 ]

xpxxz 发表于 2008-2-23 14:12:33

dfsds

fffffff

gangzi1977 发表于 2008-2-23 14:43:41

我回回看

dongdeliang 发表于 2008-2-23 15:06:12

我回回看

wanghtao 发表于 2008-2-23 15:11:06

bbbnmnbmn

,mnfcgfdc

wbyz20 发表于 2008-2-23 16:05:21

看看.

wbyz20 发表于 2008-2-23 16:07:07

楼主没有注明,注明下呀.哪里地方是变动的.这样我们可以按照实际情况改呀!

politank 发表于 2008-2-23 16:19:52

看看好不好用

win28703 发表于 2008-2-23 18:57:06

see it

it is good

胡天胡地 发表于 2008-2-23 19:21:14

...///

golxk 发表于 2008-2-23 19:34:35

dd

ddddddd

monvzhilei 发表于 2008-2-23 19:42:27

高手啊。正需要学习学习呢。

木木 发表于 2008-2-23 19:49:53

看看怎么样

gaohz521 发表于 2008-2-23 19:56:25

查看一下

8409 发表于 2008-2-23 22:39:35

进到看下
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Ros 按需分配带宽脚本