找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7985|回复: 10

[限速] 根据上网人数实时调整单IP限速值

[复制链接]
发表于 2007-10-3 23:18:46 | 显示全部楼层 |阅读模式

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

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

×
我的是用2.9.27测试的,修改后为(我的AD是上行384K/下行1024K,用户最多同时在线12人):
:set s 0
:set m 0
:foreach a in=[/queue simple find interface=all] do={:set s ($s+1)}
:foreach b in=[/ip arp find interface=lan] do={:set m ($m+1)}
:if (($m<$s) || ($m>$s)) do={:foreach i in=[/queue simple find interface=all] do={/queue simple remove $i}
:foreach i in=[/ip arp find interface=lan] do={:set ipad [/ip arp get $i address]
:set macad [/ip arp get $i mac-address]
:set macname 新用户
:if ($macad=00:14:78:36:6C:01) do={:set macname 用户1}
:if ($macad=00:14:78:36:7C:02) do={:set macname 用户2}
:if ($macad=00:14:78:36:6C:02) do={:set macname 用户3}
:if ($macad=00:14:78:36:7C:03) do={:set macname 用户4}
:if ($macad=00:14:78:36:6C:03) do={:set macname 用户5}
:set at ((240 / $m *1000) . "/" (750 / $m *1000) . )
:set max ((380 / $m *1000) . "/" (1020 / $m *1000) . )
:set brlim ((640 / $m *1000) . "/" (1800 / $m *1000) . )
:set brold ((180 / $m *1000) . "/" (400 / $m *1000) . )
/queue sim add name=($macname) target-address=$ipad limit-at=$at max-limit=$max burst-limit=$brlim burst-threshold=$brold burst-time=30/30}}

然用根据流量开关,当大于好多就开启计划任务,低于好多就删除当前所有单IP限速规则并关闭计划任务。

另:删除当前所有单IP限速规则并关闭计划任务的脚本为:
:foreach w in=[/system scheduler find name=计划任务的名字] do={/system scheduler disable $w}
:foreach i in=[/queue simple find interface=all] do={/queue simple remove $i}




这里有个问题,就是遇到时ARP病毒时,怎么办,此时ARP是动态的,那个决定限速值的变量m,可不可在进行了ARP双绑的情况下,通过其他方法和脚本获得在线上网机器数量,这样在一个小型网络上就完美了。再有就是流量开关的关闭功能(即低于好多流量执行某某脚本)不是十分灵敏。
请大家多出点子。


[ 本帖最后由 txwwy 于 2007-10-4 12:39 编辑 ]
routeros
发表于 2007-10-4 00:46:00 | 显示全部楼层
简单问题复杂化...垃圾脚本
routeros
回复

使用道具 举报

发表于 2007-10-4 12:04:22 | 显示全部楼层
这样的脚本很占CPU,最好不要在这里用循环语句
routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-4 13:35:26 | 显示全部楼层
arp双绑后,通过设置防火墙规则列表,再根据列表的数量,确定m的值,又根据两次之间运行脚本的地址列表数量进行对比,如相同就不进行限速变更,如不同再重新根据最新的m值重新生成限速。至于cpu方面,我测试过了,在列表数相同的情况下,cpu没有什么负担,当然你也可以,把计划任务间隔时间调长一点,可以5分钟,或10分钟一次。
   附图:


另:二楼的你有好方法,你厉害你讲一讲?
112.JPG
routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-4 13:48:17 | 显示全部楼层
四人同时在线时:
44.JPG
routeros
回复

使用道具 举报

发表于 2007-10-4 14:04:11 | 显示全部楼层
支持
routeros
回复

使用道具 举报

发表于 2007-10-4 14:14:52 | 显示全部楼层
官方的文档里面好像有一个类似这样功能的脚本,不过是在queu tree里面做的
routeros
回复

使用道具 举报

发表于 2007-10-4 23:43:59 | 显示全部楼层
虽然不实用...还是支持一下。。。才几台机。随便一点无所谓
routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-5 09:21:14 | 显示全部楼层
这确实不实用于网吧,网吧BT软件也少嘛。这个较实用于AD,特别是上行640K/下行8M的用户,带机数量较少的(40台或20台)的小区,用户环境较复杂,限速主要是限P2P等上传部分,但又考虑到充分利用带宽、简单限速较稳定和想上传文件(如发邮件)的用户,可利用清晨或午夜较少人上网时段进行。这里只是通过脚本得到了m值,利用它设限速值,设多少就看你自已的方案了。

[ 本帖最后由 lshzcb1 于 2007-10-5 09:22 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-10-5 16:21:34 | 显示全部楼层
直接pcq不就完了,不需如此复杂
routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-5 17:37:52 | 显示全部楼层
根据实时上网人数,直接调整单个IP的平均速度,pcq可以吗?
   这个脚本的优点还在于:还可以容易的把某人排除在限速这外,不用动脚本。你可以在中有上传限速的情况下,根据流量开关再打开下载限速、关闭其中的一条或条都关闭。

[ 本帖最后由 lshzcb1 于 2007-10-5 17:46 编辑 ]
routeros
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 10:44 , Processed in 0.061887 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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