日常网络性能不正常现象(如网络很卡、丢包严重、频繁断网等),最有效的手段是对网络中的特定用户、协议、端口、VLAN中的流量进行捕获,然后用专门工具软件进行分析。需要做的第一件事就是在网络设备上配置好镜像功能,把要监控的流量复制一份到监控设备上,以便在监控设备捕获要监控的流量。
“镜像”:在不影响报文正常处理流程的情况下,将镜像端口(源端口)的报文复制一份(并不是重定向原来的报文)到观察端口(目的端口),利用数据监控设备(如安装了Sniffer、Wireshark等数据分析软件的设备)来分析复制到观察端口的报文,进行网络监控和故障排除。
镜像又分为“端口镜像”、“流镜像”、“VLAN镜像”和“MAC地址镜像”四大类。有本地镜像和远程镜像之分,其中“端口镜像”和“流镜像”的远程镜像中又有二层远程镜像和三层远程镜像之分,而“VLAN镜像”和“MAC地址镜像”中的远程镜像只有二层远程镜像。
镜像基础
“镜像”涉及两个重要的概念——镜像端口和观察端口。
“镜像端口”是指被监控的端口,也称镜像源端口,从镜像端口流经的所有指定方向或匹配流分类规则的报文将被复制到观察端口。而“观察端口”是指连接监控设备的端口,也称镜像目的端口,用于输出从镜像端口复制过来的报文,从而可以使用户监控到需要被监控的报文。
一、基本镜像原理
镜像不是报文的重定向,数据原来的传输路径不会改变,根据镜像端口的数量不同,又分为“1:1镜像”和“N:1镜像”两大类。
1:1镜像是指仅镜像一个端口上的报文到观察端口,即此时为一个镜像端口、一个观察端口。如下图,镜像端口B的报文被复制到观察端口C。
N:1镜像是指镜像多个端口的报文到观察端口,即此时为多个镜像端口,一个观察端口,表示多个镜像端口上的报文可以镜像到同一个观察端口上。如下图,镜像端口B和镜像端口D的报文分别被复制了一份到观察端口C。
二、镜像分类
华为S系列交换机,支持几种类型的镜像:端口镜像、流镜像、VLAN镜像和MAC地址镜像。但在所有类型镜像中,“镜像端口”与“观察端口”只能在同一台交换机上配置。
除了端口镜像可以监控入方向或出方向,或同时监控入方向和出方向外,其他类型镜像都仅可监控入方向的报文。
1、端口镜像
“端口镜像”也就是“基于端口的镜像”,是指复制一份从镜像端口流经的报文,然后传送到指定的观察端口的过程。
基于端口的镜像,端口镜像监控的报文可以是任意方向,以下3种:
(1)入方向:仅对流入端口的报文进行镜像。
(2)出方向:仅对从端口上流出的报文进行镜像。
(3)双向:同时对流入端口和从端口上流出的报文进行镜像。
端口镜像分为本地端口镜像和远程端口镜像。“本地端口镜像”是指监控设备与观察端口直接相连,如下图:
“远程端口镜像”是指监控设备与观察端口不是直接相连。又分两种情况。
(1)二层远程端口镜像RSPAN(RemoteSwitched Port Analyzer,远程交换端口分析器):监控设备与观察端口所连监控设备之间通过二层网络相连。被监控设备将流经镜像端口的报文封装在镜像VLAN中,然后通过被监控设备的观察端口在远程镜像VLAN中广播,在将报文转发至监控设备,如下图:
在二层远程端口镜像中,“观察端口”和监控设备直接连接的交换机端口都必须同时加入到镜像VLAN中,但“镜像端口”不能加入VLAN中。
另外,从监控设备所连接的交换机到观察端口的所有二层设备相连的Trunk或带标签的Hybrid端口必须允许镜像VLAN通过,以实现二层互通。
——镜像端口和观察端口不能在同一个VLAN中??
(2)三层远程端口镜像ERSPAN(Encapsulated Remote SPAN,封装的远程交换端口分析器):监控设备与观察端口所在设备之间通过三层网络相连。被监控设备将流经镜像端口的报文以GRE协议进行封装,然后GRE隧道通过三层IP网络传送到监控设备,如下图:
隧道起始于被监控设备,终止于监控设备所连三层设备,GRE报文源地址为被监控主机IP地址,目的地址为监控设备IP地址。首先要确保三层网络路由畅通。
这里涉及到GRE协议:
GRE(Generic Routing Encapsulation,通用路由封装)协议是对某些网络层协议(IPX, AppleTalk, IP, IPSec, DVMRP, etc.)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IP)中传输。GRE采用了Tunnel(隧道)技术,是VPN(Virtual Private Network)的第三层隧道协议。
Tunnel是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel的两端分别对数据报进行封装及解封装。
GRE首部各字段解释如下:
字段 | 长度 | 描述 |
C | 1 bit | 校验和验证位。如果该位置1,表示GRE头插入了校验和(Checksum)字段;该位为0表示GRE头不包含校验和字段。 |
K | 1 bit | 关键字位。如果该位置1,表示GRE头插入了关键字(Key)字段;该位为0表示GRE头不包含关键字字段。 |
Recursion | 3 bits | 用来表示GRE报文被封装的层数。完成一次GRE封装后将该字段加1。如果封装层数大于3,则丢弃该报文。该字段的作用是防止报文被无限次的封装。 |
Flags | 5 bits | 预留字段。当前必须设为0。 |
Version | 3 bits | 版本字段,必须置为0。Version为1是使用在RFC2637的PPTP中。 |
Protocol Type | 16 bits | 乘客协议的协议类型。 |
Checksum | 16 bits | 对GRE头及其负载的校验和字段。 |
Key | 31 bits | 关键字字段,隧道接收端用于对收到的报文进行验证。 |
因为VRP中的GRE头不包含源路由字段,因此Bit 1、Bit 3和Bit 4都置为0。
感觉GRE就是将一种网络层协议包装成另一种网络层协议报文进行转发。
2、流镜像
“流镜像”也就是“基于流的镜像”,就是根据用户配置的策略,将镜像端口上指定的入方向(不支持出方向的流镜像)报文复制到观察端口进行分析和监控。在流镜像中,要在镜像端口入方向应用包含流镜像行为的流策略。如果从镜像端口流经的报文匹配流分类规则,则将被复制到观察端口如下图:
流镜像也分本地流镜像和远程流镜像两大类,远程流镜像也分二层远程流镜像和三层远程流镜像。
3、VLAN镜像
VLAN镜像也就是“基于VLAN的镜像”,是指将指定VLAN内所有活动接口的入方向(不支持出方向的VLAN镜像)上的报文镜像到观察端口。用户可以对某个VLAN或者某些VLAN内的报文进行监控。
VLAN镜像仅分本地VLAN镜像和二层远程VLAN镜像两类,无三层远程VLAN镜像。
4、MAC地址镜像
MAC地址镜像即“基于MAC地址的镜像”,是指将匹配源或目的MAC地址的入方向(不支持出方向的MAC地址镜像)报文镜像到观察端口。MAC地址镜像提供了一种更加精确的镜像方式,用户可以对网络中特定设备的报文进行监控。
MAC地址镜像也仅分为本地MAC地址镜像和二层远程MAC地址镜像两类,无三层远程MAC地址镜像。
端口镜像配置与管理
端口镜像是基于端口的镜像,可以对流经端口的入方向、出方向的报文进行单独镜像,或者两个方向的报文同时进行镜像。端口镜像又分为本地端口镜像和远程端口镜像两种,而远程端口镜像又分为二层远程端口镜像和三层远程端口镜像。
配置好后,可通过display observe-port任意视图命令查看镜像的观察端口;通过display port-mirroring任意视图命令查看镜像的配置信息。
一、配置本地端口镜像
通过配置本地端口镜像,可以将端口流经的报文复制到与本地观察端口连接的监控设备进行分析和监控。
1、配置本地观察端口
在本地镜像中,监控设备与观察端口是直接相连的,所以观察端口就是监控设备所连接的本地交换机上的端口。
2、配置镜像端口
镜像端口就是要被监控流量的端口,可以是以太网端口或Eth-Trunk端口,可以配置多个镜像端口到同一个观察端口的镜像。如果配置Eth-Trunk为镜像端口,则不能在单独配置其他成员接口为镜像端口。相反,如果要配置Eth-Trunk口下某成员接口为镜像端口,则不能在配置该成员对应的Eth-Trunk口为镜像端口。
二、配置远程端口镜像
通过配置远程端口镜像,可以将端口流经的报文复制到远端监控设备进行分析和监控。远端端口镜像又分二层远程端口镜像和三层远程端口镜像。
远程端口镜像的主要配置任务如下,配置前,需要确保观察端口所在设备与监控设备之间二层或三层网络互通。
1、配置远程观察端口
远程镜像中,监控设备与观察端口所在设备之间跨越二层或三层网络相连。设备将镜像报文封装VLAN或GRE IP报文,然后通过观察端口在远程镜像VLAN中广播,将报文转发至监控设备。
2、配置镜像端口
镜像端口可以是以太网端口或Eth-Trunk端口。
三、本地端口镜像配置示例
如上拓扑,HostA通过Gigabitethernet1/0/1接口接入SwitchA。监控设备Server直连在SwitchA的接口Gigabitethernet1/0/2上。用户希望通过监控设备Server对HostA发送的报文进行监控。
本地端口进行配置很简单,分别配置观察端口和镜像端口。观察端口为SwitchA的Gigabitethernet1/0/2,镜像端口为SwitchA的Gigabitethernet1/0/1接口。
(1)在SwitchA上配置Gigabitethernet1/0/2接口为观察端口。
<Huawei>system-view
[Huawei]sysname SwitchA
[SwitchA]observe-port 1 interface gigabitethernet 1/0/2
(2)在SwitchA上配置Gigabitethernet1/0/1接口为镜像端口,以监控HostA发送的报文。
[SwitchA]interface Gigabitethernet 1/0/1
[SwitchA-Gigabitethernet1/0/1]port-mirroringto observe-port 1 inbound
[SwitchA-Gigabitethernet1/0/1]quit
配置好后,通过displayobserv-port查看观察端口的配置情况
模拟器测试:
没有配置镜像前,在GE0/0/2抓包,应该没有CP1进入LSW1的报文信息:
配置后,从PC1对PC2进行PING操作,结果在GE0/0/2抓包也没有,不知道是不是模拟器不支持的原因,配置上应该没有什么问题。
四、二层远程端口镜像配置示例
如上拓扑所示,HostA通过Gigabitethernet1/0/2接口接入SwitchA。监控设备Server接在SwitchC的Gigabitethernet1/0/1接口上。SwitchA与SwitchC通过二层网络互连。用户希望通过监控设备Server对HostA发送的报文进行远程监控。
二层远程端口镜像与本地端口镜像配置差不多,主要不同是需要事先配置好各二层交换机端口中的VLAN属性,以实现各二层设备间二层可达。另外在二层网络各交换机上创建镜像VLAN,把观察端口以及监控设备相连的交换机端口加入镜像VLAN中,同时要确保二层网络传输中各交换机相连的Trunk端口允许镜像VLAN通过。
(1)配置各交换机接口类型,并按图中所示加入对应的VLAN中,使各设备间二层可达。
SwitchA上的配置:
<Huawei>system-view
[Huawei]sysname SwitchA
[SwitchA]vlan batch 2 to 3 #-- VLAN2作为镜像VLAN
[SwitchA]interface gigabitethernet 1/0/1
[SwitchA-Gigabitethernet1/0/1]portlink-type trunk
[SwitchA-Gigabitethernet1/0/1]port trunkallow-pass vlan 2 #--在观察端口上允许镜像VLAN2通过
[SwitchA-Gigabitethernet1/0/1]quit
[SwitchA]interface gigabitethernet 1/0/2
[SwitchA-Gigabitethernet1/0/2]portlink-type access
[SwitchA-Gigabitethernet1/0/2]port defaultvlan 3 #-- 把镜像端口加入VLAN3中
[SwitchA-Gigabitethernet1/0/2]quit
SwitchB上的配置
<Huawei>system-view
[Huawei]sysname SwitchB
[SwitchB]vlan 2
[SwitchB-Vlan2]quit
[SwitchB]interface gigabitethernet 1/0/1
[SwitchB-Gigabitethernet1/0/1]portlink-type trunk
[SwitchB-Gigabitethernet1/0/1]port trunkallow-pass vlan 2 #--在二层设备间的链路上允许镜像VLAN2通过
[SwitchB-Gigabitethernet1/0/1]quit
[SwitchB]interface gigabitethernet 1/0/2
[SwitchB-Gigabitethernet1/0/2]portlink-type trunk
[SwitchB-Gigabitethernet1/0/2]port trunkallow-pass vlan 2#--在二层设备间的链路上允许镜像VLAN2通过
[SwitchB-Gigabitethernet1/0/2]quit
SwitchC上的配置
<Huawei>system-view
[Huawei]sysname SwitchC
[SwitchC]vlan 2
[SwitchC-Vlan2]quit
[SwitchC]interface gigabitethernet 1/0/1
[SwitchC-Gigabitethernet1/0/2]portlink-type access #--把监控设备相连端口加入镜像VLAN中
[SwitchC-Gigabitethernet1/0/2]port defaultvlan 2
[SwitchC-Gigabitethernet1/0/2]quit
[SwitchC]interface gigabitethernet 1/0/2
[SwitchC-Gigabitethernet1/0/2]portlink-type trunk
[SwitchC-Gigabitethernet1/0/2]port trunkallow-pass vlan 2 #--在二层设备间的链路上允许镜像VLAN2通过
[SwitchC-Gigabitethernet1/0/2]quit
(2)在SwitchA上配置Gigabitethernet1/0/1接口为远程观察端口,并且指定通过镜像VLAN2广播。
[SwitchA]oberve-port 1 interfacegigabitethernet 1/0/1 vlan 2
(3)在SwitchA上配置Gigabitethernet1/0/2接口为镜像端口,并监控入方向的报文。
[SwitchA]interface gigabitethernet 1/0/2
[SwitchA-Gigabitethernet1/0/2]port-mirroringto observe-port 1 inbound
[SwitchA-Gigabitethernet1/0/2]quit
模拟器测试:
经过抓包,还是没有在相关链路上抓到镜像的数据包。
五、三层远程端口镜像配置示例
如上拓扑,HostA通过Gigabitethernet1/0/2接口接入SwitchA。监控设备Server连接在SwitchB的Gigabitethernet1/0/2接口上。HostA与Server之间跨越三层网络且路由可达。现希望通过监控设备Server对HostA发送的报文进行远程监控。
假设已经配置好了三层网络间的路由,三层远程端口镜像的配置就很简单,配置好观察端口和镜像端口就行了。
(1)在SwitchA上配置Gigabitethernet1/0/1接口为三层远程观察端口,并指定封装的GRE报文报头中的目的IP地址为Server的IP地址,源IP地址为被监控主机HostA的IP地址。
<Huawei>system-view
[Huawei]sysname SwitchA
[SwitchA]observe-port 1 interfacegigabitethernet 1/0/1 destination-ip 10.2.1.1 source-ip 10.1.1.1
(2)在SwitchA上配置Gigabitethernet1/0/2接口为镜像端口,并指定仅监控该端口上的入方向报文。
[SwitchA]interface gigabitethernet 1/0/2
[SwitchA-Gigabitethernet1/0/2]port-mirroringto observe-port 1 inbound
[SwitchA-Gigabitethernet1/0/2]quit
模拟器上不支持此命令:
不支持destination-ip选项
对于上面的配置,有一个疑点:这里的source-ip写的是HostA的地址,如果这个端口是连接的交换机,并且有多台主机,那这个source-ip写什么??
流镜像配置与管理
流镜像(即“基于流的镜像”)是通过QoS中的复杂流策略对特定的报文进行监控的方法(仅支持入方向的报文监控),也分为本地流镜像和远程流镜像两类,而远程流镜像又分为二层远程流镜像和三层远程流镜像。
一、配置本地流镜像
通过配置本地流镜像,可将镜像端口上流经的特定入方向报文复制到本地的监控设备进行分析和监控。
(1)配置本地观察端口
本地镜像中,监控设备与观察端口直接相连。
(2)配置流分类
需要根据实际应用,选择合适的流分类规则,定义对应的复杂流分类。
(3)配置流镜像行为
定义符合流分类规则的所有报文镜像到观察端口的流行为。
(4)配置流镜像策略
创建一个流镜像策略,将以上定义的流分类和流行为关联起来。
(5)应用流镜像策略
将关联了流行为与流分类的完整流策略应用到全局、接口或VLAN上。
二、配置远程流镜像
通过配置远程流镜像,可以将端口流经的特定入方向报文复制到远端的监控设备进行分析和监控。同样可分为二层远程流镜像和三层远程流镜像。在配置远程流镜像之前,需要确保观察端口所在设备与监控设备之间二层或三层网络互通。
三、本地流镜像配置示例
如上,HostA通过Gigabitethernet1/0/1接口接入SwitchA。监控设备Server直连在SwitchA的Gigabitethernet1/0/2接口上。希望通过监控设备Server对HostA发出的802.1p优先级为6的报文进行监控。
最关键是要根据802.1p优先级进行流分类,然后定义远程流镜像行为、创建一个流策略,将定义的流分类和流行为进行关联,然后应用到镜像端口入方向上。
(1)在SwitchA上配置Gigabitethernet1/0/2接口为观察端口
<Huawei>system-view
[Huawei]sysname SwitchA
[SwitchA]observe-port 1 interfacegigabitethernet 1/0/2
(2)在SwitchA上创建流分类c1,并配置流分类规则为匹配802.1p优先级为6的报文。
[SwitchA]traffic classifier c1
[SwitchA-classifier-c1]if-match 8021p 6
[SwitchA-classifier-c1]quit
(3)在SwitchA上创建流行为b1,并配置流镜像动作。
[SwitchA]traffic behavior b1
[SwitchA-behavior-b1]mirroring toobserve-port 1
[SwitchA-behavior-b1]quit
(4)在SwitchA上创建流策略p1,将以上定义的流分类c1和对应的流行为b1进行关联,然后将创建的流策略应用镜像端口——Gigabitethernet1/0/1接口入方向上,以实现对HostA发出的802.1p优先级为6的报文进行监控。
[SwitchA]traffic policy p1
[SwitchA-trafficpolicy-p1]classifier c1behavior b1
[SwitchA-trafficpolicy-p1]quit
[SwitchA]interface gigabitethernet1/0/1
[SwitchA-GigabitEthernet1/0/1]traffic-policyp1 inbound
[SwitchA-GigabitEthernet1/0/1]quit
VLAN镜像配置与管理
通过VLAN镜像可将指定VLAN内所有活动接口的入方向报文镜像到观察端口。用户可以对某个VLAN或者某些VLAN内的报文进行监控。同样分为本地VLAN镜像和远程VLAN镜像,但是因为VLAN镜像仅是二层网络中的镜像动作,所以只有二层网络远程VLAN镜像,没有三层远程VLAN镜像。
一、配置本地VLAN镜像
通过配置本地VLAN镜像,可以将某些VLAN中所有活动接口的入方向报文复制到本地的监控设备进行分析和监控。配置如下:
(1)配置本地观察端口
本地VLAN镜像中,监控设备与观察端口直接相连。
(2)配置VLAN镜像
指定要监控的VLAN,将VLAN中所有活动接口上入方向的二层报文镜像到观察端口。
二、配置远程VLAN镜像
通过配置远程VLAN镜像,可以对某些VLAN中所有活动接口的入方向报文复制到远程监控设备记性分析和监控。在配置远程VLAN镜像前,需确保观察端口所在设备与监控设备之间二层网络互通。
远程VLAN镜像的配置:
(1)配置远程观察端口
远程镜像中,监控设备与观察端口所在设备之间跨越二层网络相连。设备将镜像报文封装VLAN,然后通过观察端口在远程镜像VLAN中广播,将报文转发至监控设备。
(2)配置VLAN镜像
指定要监控的VLAN。
三、本地VLAN镜像配置示例
如上图,HostA和HostB通过Gigabitethernet0/0/1与Gigabitethernet0/0/2接口接入SwitchA,HostA和HostB同属于VLAN10。监控设备Server直连在SwitchA的Gigabitethernet0/0/3接口上。现希望通过监控设备Server对VLAN10的所有活动接口的入流量进行监控。
(1)配置接口类型及所属VLAN
<Huawei>system-view
[Huawei]sysname SwitchA
[SwitchA]vlan 10
[SwitchA-Vlan10]quit
[SwitchA]interface gigabitethernet0/0/1
[SwitchA-GigabitEthernet0/0/1]portlink-type access
[SwitchA-GigabitEthernet0/0/1]port defaultvlan 10
[SwitchA-GigabitEthernet0/0/1]quit
[SwitchA]interface gigabitethernet0/0/2
[SwitchA-GigabitEthernet0/0/2]portlink-type access
[SwitchA-GigabitEthernet0/0/2]port defaultvlan 10
[SwitchA-GigabitEthernet0/0/2]quit
(2)配置Gigabitethernet0/0/3接口为观察端口
[SwitchA]observe-port 1 interfacegigabitethernet 0/0/3
(3)配置监控VLAN10中所有活动接口入方向报文。
[SwitchA]vlan 10
[SwitchA-Vlan10]mirroring to observe-port 1inbound
[SwitchA-Vlan10]quit
MAC地址镜像配置与管理
MAC地址镜像(即基于MAC地址的镜像)是将匹配源或目的MAC地址的入方向报文镜像到观察端口,提供了一种更加精确的镜像方式,用户可以对网络中特定设备的报文进行监控,也有本地MAC地址镜像和远程MAC地址镜像两大类。因为是基于二层报文的报文镜像,所以在远程MAC地址镜像中也仅有二层远程MAC地址镜像一种。
一、配置本地MAC地址镜像
通过配置本地MAC地址镜像,可以将指定源或目的MAC地址的报文复制到本地的监控设备进行分析和监控。配置方法:
(1)配置本地观察端口
在本地镜像中,监控设备与观察端口直接相连。
(2)配置MAC地址镜像
指定用于匹配报文的源MAC地址或目的MAC地址,将符合条件的入方向的二层报文镜像到观察端口。
MAC地址镜像需要在VLAN中进行,与VLAN镜像不同的是配置命令。
二、配置远程MAC地址镜像
通过配置远程MAC地址镜像,可以将指定源或目的MAC地址的报文复制到远程的监控设备进行分析和监控。远程MAC地址镜像只有二层远程MAC地址镜像。
三、本地MAC地址镜像配置示例
HostA和HostB通过Gigabitethernet0/0/1与Gigabitethernet0/0/2接口接入SwitchA,HostA和HostB同属于VLAN10。监控设备Server直连在SwitchA的Gigabitethernet0/0/3接口上。希望对VLAN10中源或目的MAC地址为0001-0001-0001的入方向流量进行监控。
本地MAC地址镜像的配置很简单,只需配置SwitchA的Gigabitethernet0/0/3接口为观察端口,使直连的监控设备Server能够接收到镜像报文。然后在VLAN10视图下配置基于MAC地址的镜像动作即可,配置步骤:
(1)配置各接口类型和所属VLAN
<Huawei>system-view
[Huawei]sysname SwitchA
[SwitchA]vlan 10
[SwitchA-Vlan10]quit
[SwitchA]interface gigabitethernet0/0/1
[SwitchA-GigabitEthernet0/0/1]portlink-type access
[SwitchA-GigabitEthernet0/0/1]port defaultvlan 10
[SwitchA-GigabitEthernet0/0/1]quit
[SwitchA]interface gigabitethernet0/0/2
[SwitchA-GigabitEthernet0/0/2]portlink-type access
[SwitchA-GigabitEthernet0/0/2]port defaultvlan 10
[SwitchA-GigabitEthernet0/0/2]quit
(2)配置Gigabitethernet0/0/3接口为观察端口
[SwitchA]observe-port 1 interfacegigabitethernet 0/0/3
(3)配置基于MAC地址的镜像动作。
[SwitchA]vlan 10
[SwitchA-Vlan10]mac-mirroring0001-0001-0001 to observe-port 1 inbound