ROS软路由论坛 ROSABC.com 网络方案网络工程交流

 找回密码
 会员注册

QQ登录

只需一步,快速开始

查看: 3002|回复: 1

[原创] [分享经验]小小网管分享一个ROS限速方案.(贴吧也发布了)

[复制链接]
发表于 2016-7-5 15:17:17 | 显示全部楼层 |阅读模式

马上注册成为ROSABC会员,随时发帖回复。

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

x
在此发布之前.已经在贴吧发布了.因此本帖所有内容都将复制百度的.作者一样是我..
原文如下:
先说说我的情况.小小网吧.才五十台客户端.宽带只一条,是100M下行 2M上行.
用ROS也快四年了.当年选择ROS就是因为ROS超级灵活.
对ROS是爱不释手.故看了不少文章和教程.最终自己写了个适合自己使用的限速方案.供各位参考


ROS版本:5.26
标记非常简单,简单粗暴实用省事. (请不要直接复制.这不是脚本.这仅仅是说明如何标记而已)
标记1 chain=forward dst-address=192.168.16.0/24 action=mark-packet new-packet-mark=allDownPacket passthrough=yes
标记2 chain=forward src-address=192.168.16.0/24 action=mark-packet new-packet-mark=allUpPacket passthrough=yes
标记3 chain=prerouting src-address=192.168.16.0/24 action=mark-packet new-packet-mark=allUpPacketPre passthrough=yes






接下来是队列类型(queue type)
pcq1 name=allUpPacket pcq-rate=256000 burst-rate=400000 burst-threshold=57000 burst-time=10 pcq-classfier=src-address
pcq2 name=name=allUpPacketPre pcq-rate=128000 burst-rate=176000 burst-threshold=12000 burst-time=20 pcq-classfier=src-address dst-address dst-port
pcq3 name=allDownPacket pcq-rate=40000000 pcq-classfier=dst-address
这不是脚本.仅仅是说明如何设置而已.






接下来是队列树(queue tree)
queueTree1 name=allDownPacket parent=global-out packet-mark=allDownPacket queue=allDownPacket
queueTree2 name=allUpPacket parent=global-out packet-mark=allUpPacket queue=allDownPacket
queueTree3 name=allUpPacketPre parent=global-out packet-mark=allUpPacketPre queue=allDownPacket
这不是脚本.仅仅是说明如何设置而已.














接下来是动态改变限速的脚本.共有三个脚本(script).和一个定时器(不知道翻译对不.英文是schedule)
script1 name=changePCQ 脚本如下:
:local monitorValue "";
:local txRate "";
:local rxRate "";
:local triggerValue 1500000;
:global count;


:if ([:typeof $count] = nil) do={:put yes;};


:set monitorValue [/interface monitor interface=pppoe-out1 as-value];
:set txRate ($monitorValue -> "tx-bits-per-second");
:set rxRate ($monitorValue -> "rx-bits-per-second");


:if ($txRate > $triggerValue) do={/sys scr run [find name=testQueues_Down];} else={:if ([:typeof $count] = "num" && $count >= 15) do={/sys scr run [find name=testQueues_Up];:set count 0;} else={:set count ($count + 1);};};
脚本使用前.应当适量修改.以适合自己的网络使用.


















script2 name=testQueues_Down 脚本如下:
:local allUpPacketPre "";
:local allUpPacket "";
:local servicePacket "";


:set allUpPacketPre [/queue type get [find name=allUpPacketPre] pcq-rate];
:set allUpPacket [/queue type get [find name=allUpPacket] pcq-rate];
:set servicePacket [/queue type get [find name=servicePacket] pcq-rate];


:if ($allUpPacketPre > 96000) do={/queue type set [find name=allUpPacketPre] pcq-rate=($allUpPacketPre - 16000);};


:if ($allUpPacket > 256000) do={/queue type set [find name=allUpPacket] pcq-rate=($allUpPacket - 16000);:log info ("pcq down = " . ($allUpPacket - 16000) / 1000 . "kbps");};


:if ($servicePacket > 100000) do={/queue type set [find name=servicePacket] pcq-rate=($servicePacket - 100000);};
脚本使用前.应当适量修改.以适合自己的网络使用.


















script3 name=testQueues_Up 脚本如下:
:local allUpPacketPre "";
:local allUpPacket "";
:local servicePacket "";


:set allUpPacketPre [/queue type get [find name=allUpPacketPre] pcq-rate];
:set allUpPacket [/queue type get [find name=allUpPacket] pcq-rate];
:set servicePacket [/queue type get [find name=servicePacket] pcq-rate];


:if ($allUpPacketPre < 172000) do={/queue type set [find name=allUpPacketPre] pcq-rate=($allUpPacketPre + 4000);};


:if ($allUpPacket < 396000) do={/queue type set [find name=allUpPacket] pcq-rate=($allUpPacket + 4000);:log info ("pcq up = " . ($allUpPacket + 4000) / 1000 . "kbps");};


:if ($servicePacket < 1000000) do={/queue type set [find name=servicePacket] pcq-rate=($servicePacket + 50000);};
脚本使用前.应当适量修改.以适合自己的网络使用.












schedule很简单.设置间隔为两秒运行一次.就运行changePCQ就行了.
schedule name=schedule1 on-event=changePCQ interval=2s
就是这么简单






 楼主| 发表于 2016-7-5 15:19:34 | 显示全部楼层
可能没有用上小包.也没有用上端口优先.有些人看了可能觉得不行.但我也是一个使用过小包优先.使用过端口优先的人.收集端口花了我不知多少时间.小包优先不知道调了几次. 最终是心灰意冷    上面我写的限速方案,我自己已经使用很长时间了.比较满意
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

不良信息举报Q:2000617

软路由

不良信息举报Q:2000617|Archiver|ROS软路由论坛 ROSABC.com 网络方案网络工程交流

GMT+8, 2024-5-19 20:11 , Processed in 0.067917 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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