防火墙Mangle-连接标记和包标记-从零开始学Router
本章主要用途:连接标记和包标记的关系
QOS里面的连接标记,对于主要是对于符合规则的数据包进行归类,用于其他模块的调用,如常见的队列Queue,策略路由,PCC多拨等。我们先讲解一下连接标记和包标记,这是为了后面的队列树做前提。
首先连接是什么?当我们发起一个请求的话,请求网站提供图片下载,就是一条连接。
那么图片很大,需要很多次数据包才能下载完成。
这就是连接和数据包的关系。一个连接可能含有一个以上的数据包。
在ROS里面,我们可以直接对数据包进行标记,如下面命令:
/ip firewall mangle
add protocol=tcp dst-port=80 src-address=192.168.11.0/24 out-interface=ether4 chain=forward action=mark-packet new-packet-mark=test
可以看到这条命令,是关于包标记的,这时候防火墙就会先匹配
1.是否TCP协议?
2.目的端口是否80?
3.源地址是否192.168.11.0/24?
4.出去的接口否ether4?
这样对每个数据包都要匹配四次。在流量大的时候,严重拖累的CPU。
所以正常的流程就是先标记连接,再把连接标记成为包标记。
如下面的两条命令:
/ip firewall mangle
add protocol=tcp dst-port=80 src-address=192.168.11.0/24 out-interface=ether4 chain=forward action=mark-connection new-connection-mark=test passthrough=yes
add connection-mark=test chain=forward action=mark-packet new-packet-mark=test
现在,第一条命令检查第一个数据包后匹配后,并设置连接标记。
1.是否TCP协议?
2.目的端口是否80?
3.源地址是否192.168.11.0/24?
4.出去的接口否pppoe-out1?
此后,只需要检查一下每条连接的第一个数据包就可以。第二条命令对于属于这条连接里面的每个后续数据包,直接快速进行包标记,而无需检查每个数据包。
由此可见,正确的标记姿势,可以获得更高的路由器处理效率!