当前位置: 正能量 » 代码编程 » 路由器 » ROS QOS 数据分类/队列(Queue)的理论

ROS QOS 数据分类/队列(Queue)的理论

所有的数据都要进队列才能对数据进行控制。如何对数据进行分类,进而进入相应的 队列,从而使HTB对其进行有效的控制,已达到流量控制的作用。稍后,我将首先对分类的方法进行简单的介绍,然后分别通过在RouterOS上设置相应进 入队列的方法对以上的理论加以实践。1、数据分类的方法

总的来说,队列就是需要将网络上的流量进行分类,从而让设备对相应的队列进行控制。主要有以下几种分类的方法:包长的大小、IP地址、目的端口、此外还有P2P,应用层识别等。
下面分别对这几种方法做一些说明:

1)包长的大小:所谓的小包优先
小包一般是一些控制报文,在上传带宽比较小的时候非常有用,而且包长小的话,同样数目的包比大包要占用的带宽要小很多。一般来说512byte以下的报文为小包,传导的是网络中的控制信息。
2)IP地址:所谓的VIP优先
一般来说,一个网络内部可能有几个特殊的IP地址,可能是企业的高管,也可能是小区中缴费多的用户等等,他们理所应当获取较高的优先权。
3)目的端口:所谓的特殊应用优先
在 网络环境中,一些通用的服务都有自己固定的端口,比如为大家所熟知HTTP的80端口,pop3的110端口,SMTP的25端口,ftp的21端 口,ssh的22端口,telnet的23端口,dns的53端口,ssl的443端口等等。这就需要看具体的环境中,应用的什么服务比较多了,然后对这 些端口进行配置。
4)其他:
都是一些非主流的分类的方法了,因为每个厂商都有自己的识别方法,而且识别率都无法达到100%,因此不对这些方法做何评价。只是对这些技术做一些介绍,典型的有RouterOS的L7识别,Panabit的应用层识别等等。

2、如何有效的对队列进行管理

对队列进行管理的时候主要通过两个方面,一种是对队列的带宽进行管理(即流量监管),另一种是对队列的优先级进行管理(即流量整形)。

对此,我给出以下建议:分类层次应该为包大小——目的端口——IP地址。
下面说说我给出这种建议的依据:

1)包长小的包一般在网络中起控制作用,这种包的特点就是实时性要求特别高,占用带宽不高,为了保证上传流量不被过多的占用(有时候FTP上传也是需要占用带宽的),建议其CIR设置在可用上行带宽的一半以下,包长比较大的包可以将其进入一个队列。
2)下载队列中,可以不用去管大包小包,因为在用户看来,所接受的大包小包的重要程度是同等的。
3) 前面已经说了,上传和下载是分开的,在1)中也说了上传应该注意的,下面我们来说说下载的。迅雷下载和网页流量,哪个更重要?显然是网页,因此将网页的 80端口优先对于做网络优化的工程师来说是非常必要的。找到更多的对自己有用的端口,并对其进行优化使我们下一步的目标。
4)几个分类方法之间的配合
一般来说,小包中有也有各种服务的包,各种服务中,希望哪个IP请求的服务优先被满足?这就需要我们在标记的时候,对这些服务的包进去分类的区分。
5)PCQ的应用
如果某种服务下面,所有的IP的优先级都差不多,可以采用PCQ的方式,来让RouterOS根据环境中用户的在线数量去平分带宽。

需要注意几点:

1)标记数据包需要通过首先标记连接,再去标记数据包,这样比较准确;
2)标记的时候应该包含所有的情况,包含时需要根据Passthrough属性的值来确定标记是否终止,标记数据包应该紧接在所标记连接以后;
3)mangle中,标记的顺序是从上到下的,匹配成功以后还会继续向下匹配,除非Passthrough的值为no;
4) 将192.168.1.2的包分类标记有两种方法,一种是先标记192.168.1.2所有的数据连接,再标记192.168.1.2中80端口的连接, 再标记其他端口的连接,中间的Passthrough的值全为yes;另一种方法是先标记192.168.1.2中80端口的连接,再去标记其他所有的连 接,中间的Passthrough的值全部为no。显而易见,后者的方法更为科学,更为节省资源;
5)标记小包的时候,不要尝试着去标记小包的连接,应该是先标记连接以后再根据连接去标记该连接中的大包和小包。

3、我们来对上面的理论在实际环境中加以实践

步骤是先标记数据包,然后将这些数据包应用在Queue Tree中。

/queue type
add name=queue_up kind=pcq pcq-classifier=src-address pcq-limit=100 pcq-total-limit=2000
add name=queue_down kind=pcq pcq-classifier=dst-address pcq-limit=100 pcq-total-limit=2000
/ip firewall mangle
add chain=prerouting src-address=192.168.1.0/24 protocol=icmp  action=mark-connection new-connection-mark=all_icmp_con passthrough=yes
add chain=prerouting connection-mark=all_icmp_con action=mark-packet new-packet-mark=all_icmp_pack passthrough=no
add chain=prerouting src-address=192.168.1.0/24 protocol=tcp dst-port=80 action=mark-connection new-connection-mark=all_80_con passthrough=yes
add chain=prerouting connection-mark=all_80_con action=mark-packet packet-size=0-512 new-packet-mark=all_80_small_pack passthrough=no
add chain=prerouting connection-mark=all_80_con action=mark-packet new-packet-mark=all_80_big_pack passthrough=no
add chain=prerouting src-address=192.168.1.0/24 action=mark-connection new-connection-mark=all_other_con passthrough=yes
add chain=prerouting connection-mark=all_other_con action=mark-packet packet-size=0-512 new-packet-mark=all_other_small_pack passthrough=no
add chain=prerouting connection-mark=all_other_con action=mark-packet new-packet-mark=all_other_big_pack passthrough=no
/queue tree
add name=Down parent=lan
add name=icmp_d parent=Down packet-mark=all_icmp_pack priority=1
add name=80_small_d parent=Down packet-mark=all_80_small_pack priority=2
add name=80_big_d parent=Down packet-mark=all_80_big_pack priority=3
add name=other_small_d parent=Down packet-mark=all_other_small_pack priority=4
add name=other_big_d parent=Down packet-mark=all_other_big_pack priority=5
add name=Up parent=wan
add name=icmp_u parent=Up packet-mark=all_icmp_pack priority=1
add name=80_small_u parent=Up packet-mark=all_80_small_pack priority=2
add name=80_big_u parent=Up packet-mark=all_80_big_pack priority=3
add name=other_small_u parent=Up packet-mark=all_other_small_pack priority=4
add name=other_big_u parent=Up packet-mark=all_other_big_pack priority=5

未经允许不得转载:正能量 » ROS QOS 数据分类/队列(Queue)的理论

相关文章

评论 (0)

5 + 2 =