妈妈再也不用担心我BT全开在线视频会卡了:家用路由高阶形态RouterOS之PCQ QoS
首先,什么是RouterOS
RouterOS是Mikrotik公司推出的一个专业级路由系统,简称ROS,相比小伙伴们热衷的第三方ROM什么什么WRT啦,在他面前通通都是过家家,之前这货复杂得必须得专业IT才玩得转,近两年开始提供了QuickSet页面,简化了常用设置,大大降低了入门的门槛,普通家用PPPoE拨号上网的环境,基本上就是填个账号密码就能设置好,跟普通家用路由已经几无区别
ROS单卖软件授权,L4授权45美金,L5授权95美金,L6授权250美金,可以安装在X86的多网卡PC上把整台电脑变成一台强大的路由器,同时它也搭载在Mikrotik自家的路由器上随硬件一起销售
关于Mikrotik推出的路由器,ZDM上偶有几篇帖子提到过,对于不上机架的几款SOHO型号,基本上搭载的都是L4授权的ROS系统,完全是买软件送硬件的节奏,而且因为是商用设备出身,所以它的稳定性完全不用担心,对于对家庭网络环境有一定追求并且懂一些网络知识的小伙伴,Mikrotik的路由一定会是你贴心的小棉袄,顺手的瑞士军刀
对了,顺便介绍一下我现在在用的是Mikrotik RB750Gr2,体积非常小,113x89x28mm,面积上跟6s差不多大,只是要厚一点,最大4w功耗完全不发热,5口全千兆,支持的同时连接数接近9w,相比之下OpenWRT哪怕是刷在贵几倍的家用路由上也只能带1w6左右的连接数,你就知道ROS的强悍不是随便吹吹的了
下面借用一下官方的图片,照片就不拍了,塞弱电箱好久了,懒得挖出来
好了,回来说正题吧,什么是QoS
Qos全拼Quality of Service,顾名思义服务质量,指的是网络服务的质量对家用环境来说,最现实的问题就是你在下载最新大片的时候,LD跳起来吼我的欧巴怎么老在缓冲啊 ,或者LD在更新iPhone,你的LOL就开始卡成球了 这种网络环境就叫做差的环境,大家总有人没办法很开心的上网
问题的根源其实不复杂,就是带宽有限,要么是总的上传下载速度有限,要么是上传下载的连接数有限
怎么解决这个问题
最简单粗暴的方法就是限速,迅雷里面给速度封顶,限上传,限下载,限到那边不再吼了,阿弥陀佛睡觉前应该不用跪键盘了
设迅雷限速大家应该都会,但是如果是iPhone在更新系统,那就要麻烦多了,首先要到路由上去找到iPhone的IP,然后对这个IP设置限速,完了隔天还得记得去取消限速,因为IP往往是动态的,下次开机说不定就是你的电脑在用这个被限速的IP
每天这么倒腾,还能不能好好过日子了
什么是PCQ
ROS为了改善这个问题,提出了一种简单有效的Qos组织管理方法PCQ,全称PerConnectionQueue
简单来说,可以把网络堵塞问题看作是大家在食堂打饭,窗口就一个,迅雷下载可以认为是男生们,呼啦啦一群一群的,一来一只篮球队,一来一只足球队,排队哗的一下就能涨起来,视频播放可以认为是女生们,数量没那么多,大概总是三两结伴,所以问题就变成怎样做能够让女生尽快打到饭,缩短女生的排队等待时间了
PCQ的做法,就是简单的把男生和女生直接分成两个队伍,让窗口的师傅交替打饭,排后面的男生牺牲一下多等几分钟,三两个女生能排进一个比较短的队伍,能少等几分钟,但是如果舞蹈课下课一下子来了一大群女生,把女生队伍排到门口了,那也就没办法了,师傅也是继续交替打饭,男生女生大家一起等吧,说不定还能聊起来成几对
引用一张官网Wiki的图可以很清楚的看到这个思路,假设总带宽是512k,当只有1个用户使用的时候,他可以独占512k的带宽,如果有2个用户在同时访问网络,那么他们会对等分配最大带宽,每人可以占256k,如果有7个用户,那么每人可以占到73k
但是这并不意味着有2个用户在访问网络的时候,每人只能用256k了,如果一个用户很闲,那么另一个用户可以自动得到剩下的所有带宽,就好像前面打饭的例子,如果那两三个女生已经打好走了,那么窗口的师傅就可以专心服务男生队伍,整个男生队伍的打饭速度就会直接加倍,因为窗口的师傅是不会因为女生队伍没有人了而闲下来空等的
怎么配置PCQ
ROS从2.9开始引入PCQ,在5.0做了重新实现大大提升了效率,现在最新的版本是6.33.5,最新的patch看着修正的东西都不是我在用的部分,所以我就没更新了,我用的版本还是6.33.3
首先,我们的上传和下载的带宽是相互独立的,而且往往是不对等的,所以必须要对上传和下载的流量分别做Qos配置,用Mangle把上传和下载的数据包分别标记出来,从pppoe-out进入路由的包显然都是下载包,我的路由只在2口上挂了千兆交换机,其他口空置,所以从2口过来的数据包统统都标记成上传包
/ip firewall mangle> export
add action=mark-packet chain=prerouting comment="Mark packet for QoS (download)" in-interface=pppoe-out1 new-packet-mark=pkt-download
add action=mark-packet chain=prerouting comment="Mark packet for QoS (upload)" in-interface=ether2-master-local new-packet-mark=pkt-upload
然后需要对上传和下载建立两个队列类型,对于下载数据来说,需要根据目标地址列队,比如是发给iPhone的数据统统排一个队,发给PC的数据排进另一个队,对于上传数据来说,需要反过来根据源地址列队,比如iPhone发出的数据排一个队,PC发出的数据排另一个队,如果这个分类规则弄错,比如下载按照源地址列队的话,那么BT连接上的无数对端,每个对端发过来的数据都会独立组成一个小队伍,大家都往前挤的结果必然是队伍会变得很粗很粗,然后打饭的大叔很快就会忘记刚才打到哪一只队伍了,而且即使你排在某一条队伍的第二个,你也不知道到底什么时候才能轮到你
对于ROS 6.1还是6.3以上版本,系统其实已经帮你建立好了pcq-download-default和pcq-upload-default这两个pcq类型,不用修改任何设置,直接使用系统默认类型,就能工作得很好,具体哪个版本开始出现的,随便啦,反正最新版一定是有的啦
/queue type> print
5 * name="pcq-upload-default" kind=pcq pcq-rate=0 pcq-limit=50KiB pcq-classifier=src-address pcq-total-limit=2000KiB pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-src-address-mask=32 pcq-dst-address-mask=32 pcq-src-address6-mask=128 pcq-dst-address6-mask=128
6 * name="pcq-download-default" kind=pcq pcq-rate=0 pcq-limit=50KiB pcq-classifier=dst-address pcq-total-limit=2000KiB pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-src-address-mask=32 pcq-dst-address-mask=32 pcq-src-address6-mask=128 pcq-dst-address6-mask=128
最后分别建立上传和下载的队列树,保证男生女生按照分类乖乖排队,不许乱跑插队
把第一步用Mangle标记出来的上传下载数据,套用第二步的队列类型,来组织队伍,所有标记为pkt-download的数据包,按照pcq-download-default的规则列队,所有标记为pkt-upload的数据包,按照pcq-upload-default的规则列队
我的宽带是50M下载4M上传,直接设置在上传下载队列树的总的Max-Limit里面就可以,让各个队列们大家自己分吧
/queue tree> print
0 name="PCQ-download" parent=global packet-mark=pkt-download limit-at=0 queue=pcq-download-default priority=8 max-limit=50M burst-limit=0 burst-threshold=0 burst-time=0s
1 name="PCQ-upload" parent=global packet-mark=pkt-upload limit-at=0 queue=pcq-upload-default priority=8 max-limit=4M burst-limit=0 burst-threshold=0 burst-time=0s
打完收工,BT走起,终于可以开开心心过小日子了
PCQ不能做什么
简单来说PCQ是不做具体业务分析,不做优先级控制,只是对不同主机平摊保障最小带宽,能简单有效的解决不同电脑之间带宽分配问题,我在NAS上不限速BT全开的时候,iPad上可以继续看超清欧巴,PC上可以欢快的LOL,非常适合家庭使用
但是因为PCQ没有具体业务分析,不区分端口,不区分协议,所以如果我在PC上全速开了BT,那么这台PC上就几乎干不了什么其他事情了,浏览网页之类的数据请求,会完全淹没在我自己的BT洪流中,虽然边上的iPad仍然在流畅的看超清欧巴
然后PCQ也不太适合商用的环境,公司网络不能指望PCQ一招鲜,因为公司电脑动辄几十台几百台,会议室在开重要的音视频会议,怎么能跟工位里新来的小伙下载系统补丁平分公司出口带宽呢,公司网络需要根据不同的业务类型,甚至不同的座位区域,建立不同的带宽保障计划
其他
关于PCQ的一些细节比如PCQ-Rate和Max-Limit的区别,Burst突发请求控制之类,这里就不展开了,有兴趣的可以自己去Mikrotik的文档里挖
然后比较热门的QoS的规则还有好多,比如HTB等级令牌桶,小包优先之类,这些规则ROS都可以做 ,但是涉及的知识细节会多不少,权当抛砖引玉吧,有兴趣的小伙伴可以自己回头放狗慢慢搜
拉轰滴man
校验提示文案
mrzx1984
你们这些SOHO路由器都有web注入的漏洞,楼主的750竟然还敢开web界面?
信不信暴露在公网上,我分分钟拿到你admin权限?
我们安全实验室针对市面上50多种路由器和操作系统有过渗透方面的实验。
我是做数通网络出生的,所谓的梅林,dd-wrt之类的,我感觉就是玩具,给没有专业知识的小白玩的。实际上其实很垃圾(相对论,相比上述的商业路由os差太远了。)
校验提示文案
DeanXu
校验提示文案
qinws
校验提示文案
搞机砖家
校验提示文案
freeke
校验提示文案
woodstock
校验提示文案
kbys
校验提示文案
[已注销]
校验提示文案
83kg
校验提示文案
kaka0992
校验提示文案
leungzw
校验提示文案
fireydc
校验提示文案
Tank6
校验提示文案
bananaxdm
校验提示文案
Mehtevas
校验提示文案
315不吃鱼
校验提示文案
mumuou
校验提示文案
qinws
校验提示文案
阿坝四正
校验提示文案
值友1443707719
校验提示文案
coraloneee
校验提示文案
coraloneee
校验提示文案
tutugreen
校验提示文案
顶高信
校验提示文案
倒悬之稽
校验提示文案
lwdaq
校验提示文案
mrzx1984
你们这些SOHO路由器都有web注入的漏洞,楼主的750竟然还敢开web界面?
信不信暴露在公网上,我分分钟拿到你admin权限?
我们安全实验室针对市面上50多种路由器和操作系统有过渗透方面的实验。
我是做数通网络出生的,所谓的梅林,dd-wrt之类的,我感觉就是玩具,给没有专业知识的小白玩的。实际上其实很垃圾(相对论,相比上述的商业路由os差太远了。)
校验提示文案
tool
校验提示文案
kbys
校验提示文案
G23Y
校验提示文案
G23Y
校验提示文案
supertoby
校验提示文案
皮特G
校验提示文案
vxlinjie
校验提示文案
老李0号
校验提示文案
ast778089
校验提示文案
fxdgt
校验提示文案
史莱姆KING
校验提示文案
KKHCrazy
校验提示文案