[分享]小小网管分享一个ROS限速方案.
ros吧
全部回复
仅看楼主
level 1
ytftdkjxkj 楼主
先说说我的情况.小小网吧.才五十台客户端.宽带只一条,是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
2016年07月05日 06点07分 1
level 1
ytftdkjxkj 楼主
待我慢慢编写
2016年07月05日 06点07分 2
level 1
ytftdkjxkj 楼主
接下来是队列类型(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
2016年07月05日 07点07分 3
这不是脚本.仅仅是说明如何设置而已.
2016年07月05日 07点07分
level 1
ytftdkjxkj 楼主
接下来是队列树(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
2016年07月05日 07点07分 4
这不是脚本.仅仅是说明如何设置而已.
2016年07月05日 07点07分
level 1
ytftdkjxkj 楼主
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 . "k
bp
s");};
:if ($servicePacket > 100000) do={/queue type set [find name=servicePacket] pcq-rate=($servicePacket - 100000);};
2016年07月05日 07点07分 6
脚本使用前.应当适量修改.以适合自己的网络使用.
2016年07月05日 07点07分
level 1
ytftdkjxkj 楼主
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);};
2016年07月05日 07点07分 7
脚本使用前.应当适量修改.以适合自己的网络使用.
2016年07月05日 07点07分
level 1
ytftdkjxkj 楼主
schedule很简单.设置间隔为两秒运行一次.就运行changePCQ就行了.
schedule name=schedule1 on-event=changePCQ interval=2s
就是这么简单
2016年07月05日 07点07分 8
level 1
ytftdkjxkj 楼主
可能没有用上小包.也没有用上端口优先.有些人看了可能觉得不行.但我也是一个使用过小包优先.使用过端口优先的人.收集端口花了我不知多少时间.小包优先不知道调了几次. 最终是心灰意冷 上面我写的限速方案,我自己已经使用很长时间了.比较满意
2016年07月05日 07点07分 9
level 1
挽尊[呵呵]
2016年07月05日 07点07分 10
level 7
樓主你好,我現在用的小包+端口策略,能分享一下你的腳本嗎?謝謝你 [email protected]
2016年11月13日 06点11分 11
邮件你了,有兴趣一起讨论
2016年12月15日 13点12分
level 1
家用类的网 带50个机器 ros确实强大啊
2017年01月08日 09点01分 12
level 1
打算买个450 或者850来玩玩
2017年01月08日 09点01分 13
level 1
楼主可否发我一份?学习学习
[email protected]
2017年03月14日 09点03分 14
level 2
楼主是否可以发我一份[email protected]
2018年04月04日 08点04分 15
level 1
楼主是否可以发我一份[email protected] 谢谢
2018年05月04日 00点05分 16
1 2 尾页