找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7690|回复: 6

[限速] ROS PPPoE 内外网限速分离问题

[复制链接]
发表于 2008-1-2 21:59:36 | 显示全部楼层 |阅读模式

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

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

×
当我们用ros建立PPPoE服务器+queue simple限速的时候 就会有一个问题 内网访问速度也被限制住了 因为我们在选择interface接口 的时候必须选择all这个参数限速脚本才可以运行。这样queue simple就会把内网和外网全都限制住!内网的应用就会变得很糟糕。经过试验当我们把interface接口选择PPPoE生成的虚接口的时候问题解决,但是如果PPPoE客户端下线后重新连接,即使PPPoE虚接口名称没有变化,这条queue simple脚本也是无效的 并且在winbox中 接口变成红色,无效。
   
   当然,在建立PPPoE profile的时候 里面有关于速度的选项 但是在实际的测试中似乎不是很好用~~~~。

看了ghostyxt的文章后 感觉可以通过内建的脚本来建立和删除queue脚本,希望各位高手一同研究一下。或者已经有方法的高人指点一下。谢谢了
   
   顺便问一下,ROS脚本开发的资料哪里有下载?
routeros
 楼主| 发表于 2008-1-5 10:03:17 | 显示全部楼层
难道大家都会~~~  不用研究?
routeros
回复

使用道具 举报

发表于 2008-1-15 01:36:08 | 显示全部楼层
给你顶一下,我也正面临这个问题!!!
routeros
回复

使用道具 举报

发表于 2008-2-3 20:15:36 | 显示全部楼层
###### 用户为PPPOE方式上网,RADIUS设速率为:512K/1M 其中免费组为128K/256K#######
###### 脚本目地是想在空闲时间 让用户有更大速率,充分利用带宽 加内网不限速####
#定义变量
:local RxCurRate 0
:local RxCurRate1 0
:local RxCurRate2 0
:local RxCurRate3 0
:local RxCurSet 0
:local TxCurSet 0

#4次平均下行即时流量(总出口为40M)
interface monitor ydwan once do={:set RxCurRate $received-bits-per-second}
#interface monitor ydwan once do={:set RxCurRate $sent-bits-per-second}
:delay 3
interface monitor ydwan once do={:set RxCurRate1 $received-bits-per-second}
:delay 3
interface monitor ydwan once do={:set RxCurRate2 $received-bits-per-second}
:delay 3
interface monitor ydwan once do={:set RxCurRate3 $received-bits-per-second}
:set RxCurRate (($RxCurRate+$RxCurRate1+$RxCurRate2+$RxCurRate3)/4)

#步进长度,以32M为基准,大于32M取决对值。(留些用户突发空间)
:set RxCurRate1 (32-($RxCurRate/1000000))
:if($RxCurRate1<0) do={:set RxCurRate1 ($RxCurRate1+-($RxCurRate1*2))}
:set RxCurRate1 (($RxCurRate1+-1)*100000)


#下行当前设置("PCQ-Download"只是作为临时数据存放,也便于观察程序运行状态。)
#/queue  type
#add name="PCQ-Download" kind=pcq pcq-rate=3500000 pcq-limit=50 pcq-classifier=dst-address pcq-total-limit=2000
#add name="PCQ-Upload" kind=pcq pcq-rate=200000 pcq-limit=50 pcq-classifier=src-address pcq-total-limit=2000

#:set TxCurSet [/queue type get [/queue type find name="PCQ-Upload"] pcq-rate]
:set RxCurSet [/queue type get [/queue type find name="PCQ-Download"] pcq-rate]
:set TxCurSet (($RxCurSet+0)/2)
#上传不能太大
#:if($TxCurSet>2000000) do={:set TxCurSet 2000000}

# 下行 加大限制带宽(我的总带宽40M,用户最多可达12M速率)
:if($RxCurRate<30000000&&$RxCurSet<12000000) do={
# 步进长度动态决定
:set RxCurSet ($RxCurSet+$RxCurRate1)
:if($RxCurSet>12000000) do={:set RxCurSet 12000000}
:set TxCurSet (($RxCurSet+0)/2)
#上传不能太大
#:if($TxCurSet>2000000) do={:set TxCurSet 2000000}
## limit-at=512000/1000000和limit-at=128000/256000是PPPOE用户首次登录时的默认值

/queue type set "PCQ-Download" kind=pcq pcq-rate=$RxCurSet pcq-classifier=dst-address
/queue type set "PCQ-Upload" kind=pcq pcq-rate=$RxCurRate1 pcq-classifier=src-address

/queue simple set [/queue simple find limit-at=250000/500000] max-limit=($TxCurSet . "/" . $RxCurSet) priority=6 burst-limit=(($TxCurSet*2) . "/" . ($RxCurSet*2)) burst-threshold=(($TxCurSet/4) . "/" . ($RxCurSet/4)) burst-time=5s/10s packet-marks=all-mark
/queue simple set [/queue simple find limit-at=60000/125000] max-limit=(($TxCurSet/4) . "/" . ($RxCurSet/4)) priority=7 burst-limit=(($TxCurSet/2) . "/" . ($RxCurSet/2)) burst-threshold=(($TxCurSet/16) . "/" . ($RxCurSet/16)) burst-time=5s/10s packet-marks=all-mark

#/queue simple set [/queue simple find limit-at=250/500] max-limit=($TxCurSet . "/" . $RxCurSet) priority=6 burst-limit=(($TxCurSet*2) . "/" . ($RxCurSet*2)) burst-threshold=(($TxCurSet/4) . "/" . ($RxCurSet/4)) burst-time=5s/10s packet-marks=all-mark
#/queue simple set [/queue simple find limit-at=125/250] max-limit=(($TxCurSet/4) . "/" . ($RxCurSet/4)) priority=7 burst-limit=(($TxCurSet/2) . "/" . ($RxCurSet/2)) burst-threshold=(($TxCurSet/16) . "/" . ($RxCurSet/16)) burst-time=5s/10s packet-marks=all-mark
# parent=none

}

# 下行 减少限制带宽
:if($RxCurRate>34000000&&$RxCurSet>500000) do={
#步进长度动态决定
:if($RxCurSet>4000000) do={:set RxCurSet ($RxCurSet+-$RxCurRate1)}
:set RxCurSet ($RxCurSet+-$RxCurRate1)
:if($RxCurSet<500000) do={:set RxCurSet 500000}
:set TxCurSet (($RxCurSet+0)/2)
#:if($TxCurSet>2000000) do={:set TxCurSet 2000000}

/queue type set "PCQ-Download" kind=pcq pcq-rate=$RxCurSet pcq-classifier=dst-address
/queue type set "PCQ-Upload" kind=pcq pcq-rate=$RxCurRate1 pcq-classifier=src-address

/queue simple set [/queue simple find limit-at=250000/500000] max-limit=($TxCurSet . "/" . $RxCurSet) priority=6 burst-limit=(($TxCurSet*2) . "/" . ($RxCurSet*2)) burst-threshold=(($TxCurSet/4) . "/" . ($RxCurSet/4)) burst-time=5s/10s packet-marks=all-mark
/queue simple set [/queue simple find limit-at=60000/125000] max-limit=(($TxCurSet/4) . "/" . ($RxCurSet/4)) priority=7 burst-limit=(($TxCurSet/2) . "/" . ($RxCurSet/2)) burst-threshold=(($TxCurSet/16) . "/" . ($RxCurSet/16)) burst-time=5s/10s packet-marks=all-mark

#/queue simple set [/queue simple find limit-at=250/500] max-limit=($TxCurSet . "/" . $RxCurSet) priority=6 burst-limit=(($TxCurSet*2) . "/" . ($RxCurSet*2)) burst-threshold=(($TxCurSet/4) . "/" . ($RxCurSet/4)) burst-time=5s/10s packet-marks=all-mark
#/queue simple set [/queue simple find limit-at=125/250] max-limit=(($TxCurSet/4) . "/" . ($RxCurSet/4)) priority=7 burst-limit=(($TxCurSet/2) . "/" . ($RxCurSet/2)) burst-threshold=(($TxCurSet/16) . "/" . ($RxCurSet/16)) burst-time=5s/10s packet-marks=all-mark
# parent=none

}
#/queue simple set [/queue simple find max-limit=2000000/12000000] limit-at=250000/500000
#/queue simple set [/queue simple find max-limit=125000/250000] limit-at=60000/125000
#上面两个条件运行其中的一个后下面不会起作用,因为已没了priority=8的队列,
#下面的只是在上面两条件都没成立时,为新上线用户加入到统一队列中来。
/queue simple set [/queue simple find limit-at=250000/500000 priority=8] max-limit=($TxCurSet . "/" . $RxCurSet) priority=6 burst-limit=(($TxCurSet*2) . "/" . ($RxCurSet*2)) burst-threshold=(($TxCurSet/4) . "/" . ($RxCurSet/4)) burst-time=5s/10s packet-marks=all-mark
/queue simple set [/queue simple find limit-at=60000/125000 priority=8] max-limit=(($TxCurSet/4) . "/" . ($RxCurSet/4)) priority=7 burst-limit=(($TxCurSet/2) . "/" . ($RxCurSet/2)) burst-threshold=(($TxCurSet/16) . "/" . ($RxCurSet/16)) burst-time=5s/10s packet-marks=all-mark




#######        此脚本我设定为一分钟运行一次。总流量一直在30M到38M间运行。开网页很好。    完  #####################
###记得速率参数大少顺序:burst-limit>max-limit>limit-at>burst-threshold 大小反了程序无法运行 ###



########  上边有个packet-marks=all-mark  这个标记是这样做的:
routeros
回复

使用道具 举报

发表于 2008-2-3 20:17:53 | 显示全部楼层
不能发图,没办法,大家自己去想吧,反正把外网标出来,内网不标记就行了。我做的PPPOE用户是动态速率,如果不用动态速率,那只做标记就行了,只要一条命令就可。
routeros
回复

使用道具 举报

发表于 2008-2-3 20:30:38 | 显示全部楼层
########  上边有个packet-marks=all-mark  这个标记是这样做的:
/ip firewall address-list
add address=128.0.0.1/1 list=All-WAN  
add address=64.0.0.1/2 list=All-WAN
add address=32.0.0.1/3 list=All-WAN
add address=16.0.0.0/4 list=All-WAN
###看到没,我的内网IP不在其中(10.200.0.0/16是我的IP段)
/ip firewall mangle
add  chain=prerouting in-interface=(你的内网卡不中,要用接外网的网卡,为什么不行自己想) src-address-list=All-WAN action=mark-packet new-packet-mark=all-mark passthrough=yes
add  chain=prerouting src-address=10.200.0.0/16(内网IP段,用来限上传速率) action=mark-packet new-packet-mark=all-mark passthrough=yes
routeros
回复

使用道具 举报

发表于 2008-2-3 20:34:29 | 显示全部楼层
各人网络结构不同,理念是一样的,适当改哈!!我的ROS三网卡,两个内网段10.200.0.0/16 10.0.50.0/8
routeros
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 17:50 , Processed in 0.061328 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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