luotuotoo 发表于 2011-8-30 09:29:25

高手请进:研究一个晚上的PQC限速,还是不懂,请高手解答!?

本帖最后由 luotuotoo 于 2011-8-30 09:33 编辑

原贴如下:高手看后,我下面有问题,不清楚~?
ROS动态限速(检测外网总速度进行限速开关)废话不说先看脚本原理:
以下操作全部在WINBOX界面里完成
介绍:可以实现在总速度不超过9M的情况下自动关闭所有生成的限速规则在总速度超过18M的时候自动启动所有生成的限速规则。
说明:在输入脚本内容时不要把两边的()带上,那个是为了区分非脚本字符。
总速度=你的外网网卡当前速度。

打开 /system/scripts
脚本:
:for aaa from 1 to 254 do={/queue simple add name=(ip_ . $aaa) dst-address=(192.168.0. . $aaa) interface=cnc max-limit=256000/800000 burst-limit=1000000/3000000 burst-threshold=128000/512000 burst-time=30s/1m }

上面是生成限速树,对网段内所有IP的限速列表!

下面进入正题:
脚本名:node_on
脚本内容:(:for aaa from 1 to 254 do={/queue sim en })
脚本名:node_off
脚本内容:(:for aaa from 1 to 254 do={/queue sim dis })

scripts(脚本部分)以完成
打开 /tools/traffic monitor

新建:
名:node_18M traffic=received trigger=above on event=node_on threshold:18000000
新建:
名:node_9M traffic=received trigger=below on event=node_off threshold:9000000
在输入脚本内容时不要把两边的()带上,那个是为了区分非脚本字符。

==============================================================
:for aaa from 1 to 254 do={/queue simple add name=(PC . $aaa) dst-address=(192.168.0. . $aaa) limit-at=500000/500000 max-limit=3000000/3000000}


/ ip firewall mangle
add chain=prerouting action=mark-packet new-packet-mark=all-mark \
passthrough=yes comment="" disabled=no

/ queue type
add name=PCQ-up kind=pcq pcq-rate=1500000 pcq-limit=50 \
pcq-classifier=src-address pcq-total-limit=2000
add name=PCQ-down kind=pcq pcq-rate=1500000 pcq-limit=50 \
pcq-classifier=dst-address pcq-total-limit=2000

/ queue simple
add name="PCQ" target-addresses=192.168.0.0/24 dst-address=0.0.0.0/0 \
interface=all parent=none packet-marks=all-mark direction=both priority=1 \
queue=PCQ-up/PCQ-down limit-at=0/0 max-limit=15000000/15000000 \
total-queue=default-small disabled=yes

/ system script
add name="PCQON" source=":if \(\[ /queue sim get \[/queue sim find \
name=\"PCQ\"\] disable \]=true \) do={/queue sim enable PCQ}" \
policy=ftp,reboot,read,write,policy,test,winbox,password
add name="PCQOFF" source=":if \(\[ /queue sim get \[/queue sim find \
name=\"PCQ\"\] disable \]=false \) do={/queue sim disable PCQ}" \
policy=ftp,reboot,read,write,policy,test,winbox,password

/ tool traffic-monitor
add name="PCQON" interface=cnc traffic=received trigger=above \
threshold=14800000 on-event=PCQON comment="" disabled=no
add name="PCQOFF" interface=cnc traffic=received trigger=below \
threshold=5000000 on-event=PCQOFF comment="" disabled=no

==================================================
上面是完整脚本,直接把每一段复制进去就可以了。需要修改的看下面的说明!

下面是注释

15M为例 静态是3M,达到14.8M后启用动态是1.5M!

:for aaa from 1 to 254 do={/queue simple add name=(PC . $aaa) dst-address=(192.168.0. . $aaa) limit-at=500000/500000 max-limit=3000000/3000000}

这个是建立静态限速,1to254 改为你内网的IP!比如 2 to 120! 192.168.0. 这里改为你的IP段! limit-at=500000/500000 是平均网速500K,max-limit=3000000/3000000 是普通限速3M!

注意一下,,在网盟里,包括很多高手都把ROS的算法搞错了,在这里我抖正一下,ROS不是1KB=8Kbit! 而是 1000=1K 1000000=1M

/ ip firewall mangle
add chain=prerouting action=mark-packet new-packet-mark=all-mark \
passthrough=yes comment="" disabled=no

这个是固定脚本!

/ queue type
add name=PCQ-up kind=pcq pcq-rate=1500000 pcq-limit=50 \
pcq-classifier=src-address pcq-total-limit=2000
add name=PCQ-down kind=pcq pcq-rate=1500000 pcq-limit=50 \
pcq-classifier=dst-address pcq-total-limit=2000

这里把1500000改为你动态限速时的全网上传速度和下载速度!其他不要改!这里是1.5M!


/ queue simple
add name="PCQ" target-addresses=192.168.0.0/24 dst-address=0.0.0.0/0 \
interface=all parent=none packet-marks=all-mark direction=both priority=1 \
queue=PCQ-up/PCQ-down limit-at=0/0 max-limit=15000000/15000000 \
total-queue=default-small disabled=yes

到这里就是建立动态限速的策略了!192.168.0.0/24 改为你IP段!max-limit=15000000/15000000 这里是你总宽带,电信给你多少就填多少!其他不用改,,因为需要转跳到上面的!

/ system script
add name="PCQON" source=":if \(\[ /queue sim get \[/queue sim find \
name=\"PCQ\"\] disable \]=true \) do={/queue sim enable PCQ}" \
policy=ftp,reboot,read,write,policy,test,winbox,password
add name="PCQOFF" source=":if \(\[ /queue sim get \[/queue sim find \
name=\"PCQ\"\] disable \]=false \) do={/queue sim disable PCQ}" \
policy=ftp,reboot,read,write,policy,test,winbox,password

这个是启发脚本,就是启发动态和关闭动态的脚本!直接复制!



/ tool traffic-monitor
add name="PCQON" interface=cnc traffic=received trigger=above \
threshold=14800000 on-event=PCQON comment="" disabled=no
add name="PCQOFF" interface=cnc traffic=received trigger=below \
threshold=5000000 on-event=PCQOFF comment="" disabled=no

这个是流量监控,我有15M设置是14.8M启发,足够了。不会延时或者怎么的,不建议改得太少。threshold=5000000是少于5M时关闭动态!这个自己掌握好!多试试!

另外注意的是!interface=cnc 把cnc改成你外网的网卡!

上面的每一段都需要,少一段这个脚本就不完整!不然没效果不要说我!

关于时间段来启发脚本我发出来了,,只需要改最后一段就OK了!
======================================================

/system scheduler add name=timeon interval=24h start-time=08:00:00 on-event={PCQON} disabled=no

/system scheduler add name=timeoff interval=24h start-time=23:59:59 on-event={PCQOFF} disabled=no

==============================================================
把最后一段替换成这段就是由时间段控制开关PCQ了!

我到是想要个分时段限速的脚本, 比如8:00~14:00 是1个速度, 到了14:01开始切换第2套限速方案。
刚刚看了一下。然后再从网上查了点资料!

下面是一个ROS定时重启的例子!应该可以结合我的方法来做出分开N个时段来定时开启关闭某个限速!

/system scheduler add name=reboot interval=24h start-time=06:59:00 on-event={/system reboot} disabled=no

我的问题是:===线之间的部分是不是一个完整的部分?

“打开 /system/scripts 脚本:
:for aaa from 1 to 254 do={/queue simple add name=(ip_ . $aaa) dst-address=(192.168.0. . $aaa) interface=cnc max-limit=256000/800000 burst-limit=1000000/3000000 burst-threshold=128000/512000 burst-time=30s/1m }

上面是生成限速树,对网段内所有IP的限速列表!

下面进入正题:
脚本名:node_on
脚本内容:(:for aaa from 1 to 254 do={/queue sim en })
脚本名:node_off
脚本内容:(:for aaa from 1 to 254 do={/queue sim dis })

scripts(脚本部分)以完成
打开 /tools/traffic monitor

新建:
名:node_18M traffic=received trigger=above on event=node_on threshold:18000000
新建:
名:node_9M traffic=received trigger=below on event=node_off threshold:9000000

这一段跟 ===线里面的,有关联吗?
那几个部分放到一起才是完整的脚本?
期待高手路过解答,先谢谢了

9939781 发表于 2011-8-30 10:29:26

这种经常大幅度变动限速的方式会导致内存占用持续升高且内存无法被系统回收。你可以每天登陆winbox看可用内存是不是一直在减少,用不了多久就耗尽内存然后断网。我早就用过这种触发检测来调整限速,因为这个内存问题果断放弃这种做法。

luotuotoo 发表于 2011-8-30 21:01:48

感谢提醒~!以后留心观察~!
但,我的问题并没回答~!不解中......

ason7890 发表于 2011-10-7 17:21:11

高手呀,膜拜中......
三天不学习,赶不上刘少奇
晕,
已经是
10年不学习,忘了刘少奇
页: [1]
查看完整版本: 高手请进:研究一个晚上的PQC限速,还是不懂,请高手解答!?