一图看懂交换机镜像技术
曾几何时,在网络江湖上兴起一门武功绝学,凭借着“以彼之道还施彼身”的高超技术解决了网络上的多种疑难杂症。
那么他是谁?
他可以复制网络中的任何一种业务报文,可以是他,也可以是她。
他很有内涵,亦如他的名字——镜像。
他是网监设备的小伙伴,他默默地为他奉献着人生最绚烂的年华。
那么,什么是镜像?
镜像是指将经过指定源(可以是指定端口、指定流、指定VLAN或者是指定MAC地址)的报文复制一份到另指定目的,然后转发到网络监控设备,供网络管理员进行故障处理、网络监控与流量分析。
镜像不会改变镜像报文的任何信息,也不会影响原有报文的正常转发。同时对于源端口,目的端口的介质类型没有要求,可以是光口镜像到电口,也可以是电口的流量镜像到光口。对于源端口,目的端口的属性没有要求,可以是Access口镜像到Trunk口,也可以是Trunk口镜像到Access口;可以是二层口镜像到三层口,也可以是三层口镜像到二层口。对于源端口,目的端口的数量可以是1:N、N:1、M:N,具体数量受限于底层交换芯片能力。
那么,具体镜像技术中又有哪些专有名词呢?又有哪些细分领域呢?在实际使用中会不会遇到什么问题呢?下面,一张图带你看懂交换机镜像技术!
交换机镜像技术四问四答
01.、为什么观察端口要关闭STP功能?
STP(Spanning Tree Protocol,即生成树协议)主要作用是防止网桥网络中的冗余链路形成环路工作。运行STP协议的设备通过彼此交互BPDU报文发现网络中的环路,并有选择的对某个(些)端口进行阻塞,最终将环形网络结构修剪成一棵无环路的树形结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。在使用交换机镜像时,镜像端口除了用户流量、BPDU报文也同样会被复制一份到观察端口,如果该BPDU报文更优于观察端口的BPDU报文,则会导致观察端口被迫降为非指定端口而被阻塞。观察端口一旦被阻塞则所有用户流量都被丢弃,也就无法成功镜像报文。
02.、为什么二层远程镜像VLAN要关闭MAC学习?
根据二层远程镜像的原理,我们可以知道镜像报文是将原始报文再封装一层VLAN TAG(无论原始报文是否带TAG),然后通过二层网络传输至远端设备。如果中间二层网络上没有关闭远程镜像VLAN的MAC学习功能,那么就会学习到镜像报文的源MAC地址。如果仅仅是镜像了单向流量则一般不会出现问题,在二层网络中可以正常转发;但是如果镜像了双向流量,则二层网络会将双向流量的源MAC都学习到。在基于目的MAC地址+VLAN ID查询MAC地址表指导转发过程中就会发现一个数据包的源MAC和目的MAC都学习到了同一个接口上,此时该数据包就会被丢弃,从而无法转发到远端监控设备。
03.、如何解决观察端口不足的问题?
受限于芯片硬件资源,通常一台交换机上观察端口往往不会太多,极端情况下可能只允许配置一个观察端口。但是在实际工程上,尤其是在网络安全环境中,往往是多类型、多台安全设备都需要获取网络原始流量以便分析监控。这就需要交换机将一份流量复制到多个端口以供多台安全设备使用,常用方法有两种:
- 一种是镜像交换机自身泛洪,其思路为:
1)将所有需要镜像报文的端口划到同一个VLAN中;
2)将观察端口内部环回,即发出去的包又回到自己;
3)关闭观察端口MAC地址学习功能,以防影响业务流量转发。
- 另一种是借助中间交换机泛洪,其思路为:
1)本端交换机和安全设备之间不是直连,而是通过中间二层交换机连接;
2)中间二层交换机将与本端交换机互联端口、与安全设备互联端口都划到同一VLAN,并且关闭该VLAN的MAC地址学习功能;
3)本端交换机配置二层远程端口镜像,镜像报文通过观察端口再封装一层VLAN TAG并发送至中间二层交换机;
4)中间二层交换机在VLAN内泛洪,将流量分发至各安全设备。
04.、观察端口能否抓到带TAG报文?
这个问题与观察端口是什么类型的端口(如:Access口、Trunk口、三层路由口)没有任何关系,不影响报文输出是否携带VLAN TAG,也就是关键看镜像端口的属性。其本质上是交换机内部处理机制问题,是先进行报文复制流程、还是先进行标签处理流程。具体如下:
在入方向,若先进行报文复制流程、再进行标签处理流程,则观察端口报文就是原始报文,即使是Access口收到VID≠PVID的TAG报文也可以被镜像出来;
在入方向,若是先进行标签处理流程、再进行报文复制流程,则观察端口要么没有报文(Access端口收到VID≠PVID报文直接丢弃)、要么有报文一定带TAG(原始报文不带TAG,入端口打上PVID);
在出方向,若是先进行报文复制流程、再进行标签处理流程,则观察端口报文一定带TAG(交换机内部转发时必须带TAG);特殊的如果出接口是路由口则TAG为4095,该TAG只具有本地意义、正常的数据报文从路由口转发出去的时候不会带上该TAG字段;
在出方向,若是先进行标签处理流程、再进行报文复制流程,则观察端口报文不带TAG(报文VID=PVID时,Access/Trunk出口剥掉TAG)和带TAG(报文VID≠PVID时,Trunk口允许通过则带TAG转出)的情况都会出现。
