|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 ljwhf 于 2011-3-3 11:05 编辑
限速是个非常大的话题——水很深,非三言两语道得完!但我们不必做得“非常完善”,只要是“够用”就行了。
我们学校所有的数据都过ros,分四个区:服务器区、机房管理区、教师区、学生区。最上游是“服务器区”,下来就是“机房管理区”和教师区,最下游就是学生区。ROS是“服务器区”、“机房管理区”、“教师区”的边界主机,教师区以“拨号+radius”方式上网,机房管理区为直接连接,学生区则是通过管理区的一台代理上网。
很明显,ros是第一道重要的关卡。限速也就在这上面做。但在实施之前应先定下目标:
1.学生机数量多,限速是必须的;
2.教师机应该能用到“大”的网速;
3.教师机不能独占所有带宽。
以下是网络的实际情况:
1.服务器区IP为:10.0.0.0/16
2.机房管理区IP为:192.168.0.0/24
3.教师区上网的IP为:192.168.6.0/32
4.学生区的IP段有3个:192.168.1.0/24、192.168.2.0/24、192.168.3.0/24
5.ros的三个网卡:p6-server-net10(10.0.0.253)、p1-lan-net0(192.168.0.252)、p2-pppoe-net6(无IP)
6.学生代理服务器的IP为:192.168.0.3
先来标记包,分出3类包:学生包(mark-stu)、pppoe下载(mark-pppoe-down)以及上传包(mark-pppoe-up)。
/ip firewall mangle
add action=mark-packet chain=prerouting comment="\B1\EA\BC\C7\D1\A7\C9\FA\B0\FC" disabled=no dst-address=192.168.0.3 new-packet-mark=mark-stu passthrough=yes
add action=mark-packet chain=prerouting comment="\B1\EA\BC\C7pppoe\CF\C2\D4\D4\B0\FC" disabled=no dst-address=192.168.6.0/24 in-interface=p6-server-net10 new-packet-mark=mark-pppoe-down packet-size=512-65535 passthrough=yes src-address-type=""
add action=mark-packet chain=forward comment="\B1\EA\BC\C7pppoe\C9\CF\D0\D0\B0\FC" disabled=no new-packet-mark=mark-pppoe-up out-interface=p6-server-net10 passthrough=yes src-address=192.168.6.0/24 src-address-list=pppoe-6-src src-address-type=""
注:pppoe-6-src 是拨号IP集,下载包只标记大于255字节的包
一、处理学生包
总带宽为10M,学生的带宽应是多少得根据经验判断,判断的依据是“学生数据+教师数据'差不多'占满带宽“,在我校设置为5M是合理的:
/queue tree
add burst-limit=7M burst-threshold=5M burst-time=10s disabled=no limit-at=5M max-limit=6M name=PCQ-stu-down-5M packet-mark=mark-stu parent=global-out priority=8 queue=default
二、处理pppoe包
怎样保证教师能用到“最大”的带宽?最简单的办法就是不限速。而在实际应用中只有少数教师是经常拉东西,对这些“叼”民不特别“处理”是不行的。另一方面,如果只做网页浏览通常不会产生大包和大流量,只有下载是才会出现大包和大流量。于是策略成型了:
1.教师机的上传不能大于1M;
2.总流量大于9M时对pppoe限下载;
3.pppoe总数据量小于1M时取消对pppoe限下载。
上传不能大于1M
/queue tree
add burst-limit=2M burst-threshold=2M burst-time=10s disabled=no limit-at=1M max-limit=2M name=TOP-tea-up-1M packet-mark=mark-pppoe-up parent=p6-server-net10 priority=8 queue=PCQ_Tea_up_512k
PCQ_Tea_up_512k的值也是经验值,太大则单线占用也大,反之亦然。
/queue type
add kind=pcq name=PCQ_Tea_up_512k pcq-classifier="" pcq-limit=50 pcq-rate=512000 pcq-total-limit=2000
“总流量大于9M时对pppoe限下载”和“pppoe总数据量小于1M时取消对pppoe限下载”
这里涉及到动态问题,要判断流量则用到traffic-monitor,当监控到p6-server-net10(总)流量大于9M时运行PCQ-tea-en去添加一个规则对pppoe限速。当监控到p2-pppoe-net6(拨号)流量小于1M时运行PCQ-tea-dis去删除限速规则。
/tool traffic-monitor
add comment="" disabled=no interface=p6-server-net10 name=PCQ-tea-down-on on-event=PCQ-tea-en threshold=9000000 traffic=received trigger=above
add comment="" disabled=no interface=p2-pppoe-net6 name=PCQ-tea-down-off on-event=PCQ-tea-dis threshold=1000000 traffic=transmitted trigger=below
这是PCQ-tea-en和PCQ-tea-dis脚本
/system script
add name=PCQ-tea-en policy=ftp,reboot,read,write,policy,test,winbox,password,sniff source="/queue tree add name=PCQ-tea-down packet-mark=mark-pppoe-down parent=global-in priority=4 queue=PCQ_Tea_down_5M limit-at=6M max-limit=7M burst-limit=7M burst-threshold=7M burst-time=10"
add name=PCQ-tea-dis policy=ftp,reboot,read,write,policy,test,winbox,password,sniff source= "/queue tree remove PCQ-tea-down"
上面的脚本要用到PCQ_Tea_down_5M类,这是定义下载单线占用量的类,也是根据经验所取的值。
/queue type
add kind=pcq name=PCQ_Tea_down_5M pcq-classifier=dst-address pcq-limit=50 pcq-rate=5000000 pcq-total-limit=2000
需要注意的是取消限速的阀值选取(我这里的1M值)不能大于单线下载占用值(我这里的5M值),否则会引起“震荡”。
这是满载情况:
这是轻载情况:
ros中的好多东西我也不懂,还要认真学习,上面的东西我只是实现了我的想法,哪位兄弟要是问我“这是什么”、“那是什么”我可能也是答不出的。希望本帖对您有用。 |
评分
-
查看全部评分
|