ybb575 发表于 2008-2-20 10:08:23

终极ROS单IP动态限速脚本(带中文注释)

#定义变量
#脚本停止开关
:global IsRun true

#当前下行总流量变量
:global RxCurRate 1000000
#当前限定的单IP下行带宽
:global RxCurSet 5000000
#单IP最大下行带宽
:global RxMaxRate 8000000
#单IP最小下行带宽
:global RxMinRate 1000000
#总下行流量阀值
:global RxSwRate 18000000

#当前上行总流量变量
:global TxCurRate 1000000
#当前限定的单IP上行带宽
:global TxCurSet 5000000
#单IP最大上行带宽
:global TxMaxRate 8000000
#单IP最小上行带宽
:global TxMinRate 1000000
#总上行流量阀值
:global TxSwRate 18000000
#带宽变动步进值
:global StepRate 500000

#合法用户地址列表名称
:global ListName "userlist"


:while ($IsRun) do={
#取得当前下行总流量
/interface monitor-traffic wan once do={:set RxCurRate $received-bits-per-second}

#取得当前上行总流量
/interface monitor-traffic wan once do={:set TxCurRate $sent-bits-per-second}

#设置单IP下行带宽新值
:if ($RxCurRate<$RxSwRate) do={
:if ($RxCurSet<$RxMaxRate) do={
    :set RxCurSet ($RxCurSet + $StepRate)}
} else={
:if ($RxCurSet>$RxMinRate) do={
    :set RxCurSet ($RxCurSet + -$StepRate)}}

#设置单IP上行带宽新值
:if ($TxCurRate<$TxSwRate) do={
:if ($TxCurSet<$TxMaxRate) do={
    :set TxCurSet ($TxCurSet + $StepRate)}
} else={
:if ($TxCurSet>$TxMinRate) do={
    :set TxCurSet ($TxCurSet + -$StepRate)}}
   
#应用新的单IP上下行带宽限定值到QUEUE
#取得合法用户地址列表中地址数
:local AddCount ( - 1)
#循环变量
:local i 10
#临时存放地址列表名的变量
:local tlist
#临时存放地址的变量
:local tadd

:for i from=0 to=$AddCount do={
:set tlist
:set tadd
:if ($tlist = $ListName) do={
    :if ([:len ] > 0) do={
      /queue simple set $tadd limit-at=[:tostr ($RxCurSet . "/" . $TxCurSet)]max-limit=[:tostr (($RxCurSet * 2) . "/" . ($TxCurSet * 2))]
    } else={
      /queue simple add name=$tadd dst-address=$tadd limit-at=[:tostr ($RxCurSet . "/" . $TxCurSet)]max-limit=[:tostr (($RxCurSet * 2) . "/" . ($TxCurSet * 2))]
    }
}
}

#循环间隔时间(3分种)
:delay 3m
}

wbyz20 发表于 2008-2-20 11:48:02

正在测试看看

wbyz20 发表于 2008-2-20 11:52:40

看不懂呀。
页: [1]
查看完整版本: 终极ROS单IP动态限速脚本(带中文注释)