什么是镜像?端口镜像、VLAN镜像、MAC镜像、流镜像等,一文带你了解

2022-10-31 11:18:29 浏览数 (2)

前言

镜像功能主要用于网络检测和故障管理,可能涉及使用个人用户某些通信内容。本公司无法单方采集或存储用户通信内容。建议您只有在所适用法律法规允许的目的和范围内方可启用相应的功能。在使用、存储用户通信内容的过程中,您应采取足够的措施以确保用户的通信内容受到严格保护。

01

镜像概念

1.1 定义

镜像是指将指定源的报文复制一份到目的端口。指定源被称为镜像源,目的端口被称为观察端口,复制的报文被称为镜像报文。

镜像可以在不影响设备对原始报文正常处理的情况下,将其复制一份,并通过观察端口发送给监控设备,从而判断网络中运行的业务是否正常。

图1-1 镜像示意图

1.2 镜像端口和观察端口

如图1-1所示,原始报文经过的端口被称为镜像端口;连接监控设备的端口被称为观察端口,用于将镜像报文发送给监控设备。根据监控设备在网络中位置的不同,可以将观察端口分为三类。

  • 本地观察端口:与监控设备直连的端口被称为本地观察端口。此时的镜像被称为本地镜像。
  • 二层远程观察端口:通过二层网络与监控设备相连的端口被称为二层远程观察端口。此时的镜像被称为二层远程镜像。
  • 三层远程观察端口:通过三层网络与监控设备相连的端口被称为三层远程观察端口。此时的镜像被称为三层远程镜像。仅部分交换机支持三层远程镜像;

观察端口专门用于镜像报文的转发,因此不要在上面配置其他业务,防止镜像报文与其他业务的数据报文在观察端口上同时转发会互相影响。

在设备上应用镜像功能时,如果镜像过多,会占用较多的设备内部转发带宽,影响其他业务转发。另外,如果镜像端口的带宽大于观察端口的带宽,比如,镜像端口的带宽是1000Mbit/s,观察端口的带宽是100Mbit/s,会导致观察端口因带宽不足而不能及时转发全部的镜像报文,发生丢包。

1.3 镜像源

镜像源可以是:

  • 端口:将指定端口接收或发送的报文复制到观察端口,此时的镜像被称为端口镜像。
  • VLAN:将指定VLAN内所有活动接口接收的报文复制到观察端口,此时的镜像被称为VLAN镜像。
  • MAC地址:将指定VLAN内源MAC地址或目的MAC地址为指定MAC地址的报文复制到观察端口,此时的镜像被称为MAC镜像。
  • 报文流:将符合指定规则的报文流复制到观察端口,此时的镜像被称为流镜像。

1.4 镜像方向

镜像方向是指将镜像端口指定方向的报文复制到观察端口,包括:

  • 入方向:将镜像端口接收的报文复制到观察端口上。此时的镜像被称为入方向镜像。
  • 出方向:将镜像端口发送的报文复制到观察端口上。此时的镜像被称为出方向镜像。
  • 双向:将镜像端口接收和发送的报文都复制到观察端口上。

02

镜像原理描述

2.1 端口镜像

端口镜像是指将指定端口接收或发送的报文复制到观察端口。根据观察端口的不同,端口镜像分为本地端口镜像和二层远程端口镜像。

【1】本地端口镜像

观察端口为本地观察端口的端口镜像,被称为本地端口镜像。如图1-2所示,本地观察端口将镜像端口复制来的报文转发到与其直连的监控设备。

图1-2 本地端口镜像示意图

【2】二层远程端口镜像

观察端口为二层远程观察端口的端口镜像,被称为二层远程端口镜像。如图1-3所示,二层远程端口镜像中镜像报文的具体转发过程如下。

  • 镜像端口将流经的原始报文复制到二层远程观察端口。
  • 二层远程观察端口收到镜像端口复制过来的镜像报文,在原始报文VLAN标签(VLAN 10)外层再添加一层VLAN标签(VLAN 20),以便将镜像报文向中间二层网络转发。值得注意的是,这一步不需要通过端口加入VLAN来完成,是直接通过配置二层远程观察端口来实现的。
  • SwitchC在接收到二层远程观察端口发来的镜像报文后,就将镜像报文向监控设备转发。为了实现这一步,需要将中间二层设备(SwitchC)与二层远程观察端口、监控设备相连的端口加入VLAN 20,保证SwitchB、SwitchC与监控设备间能够二层通信。

二层远程镜像中,在二层远程观察端口与监控设备之间的二层网络中,需要预留一个VLAN专门用于转发镜像流量,如图1-3中的VLAN 20,该VLAN被称为二层远程镜像传输VLAN。

  • 配置镜像的交换机与监控设备之间的二层网络中的所有中间设备必须创建并配置相应接口加入该VLAN,以保证镜像报文能够通过该VLAN被泛洪到监控设备。
  • 必须在所有中间设备上关闭该VLAN的MAC地址学习功能。
  • 该VLAN不能和原始报文所属VLAN相同。

图1-3 二层远程端口镜像示意图

2.2 VLAN镜像

VLAN镜像是指将指定VLAN接收的报文复制到观察端口。如图1-4所示,通过VLAN镜像,交换机仅将来自VLAN 10的报文镜像到监控设备。同端口镜像类似,根据观察端口的不同,VLAN镜像也可以分为本地VLAN镜像和二层远程VLAN镜像。值得注意的是:

  • 仅S系列盒式交换机支持VLAN镜像。
  • 交换机仅支持入方向VLAN镜像,即仅支持将指定VLAN接收的报文复制到观察端口。
  • 二层远程VLAN镜像中,原始报文所属VLAN和中间二层网络用于转发镜像报文的二层远程镜像VLAN不能相同。

图1-4 VLAN镜像示意图

2.3 MAC镜像

MAC镜像是指将指定VLAN接收的源MAC地址或目的MAC地址为指定MAC地址的报文复制到观察端口。MAC镜像提供了一种更加精确的镜像方式,用户可以对网络中特定设备的报文进行监控。如图1-5所示,通过MAC镜像,交换机仅将来自HostA的报文镜像到监控设备。同端口镜像类似,根据观察端口的不同,MAC镜像也可以分为本地MAC镜像和二层远程MAC镜像。

值得注意的是:

  • 仅S系列盒式交换机支持MAC镜像。
  • 交换机仅支持将入方向MAC镜像,即仅支持将指定VLAN接收的源MAC地址或目的MAC地址为指定MAC地址的报文复制到观察端口。
  • 二层远程MAC镜像中,原始报文所属VLAN和中间二层网络用于转发镜像报文的二层远程镜像VLAN不能相同。

图1-5 MAC镜像示意图

2.4 流镜像

【1】原理描述

流镜像是指将符合指定规则的报文流复制到观察端口。如图1-6所示,镜像端口将匹配规则的业务流2复制到观察端口,然后观察端口再将复制的业务流2转发到监控设备。同端口镜像类似,根据观察端口的不同,流镜像也可以分为本地流镜像和二层远程流镜像。

图1-6 流镜像示意图

【2】流镜像中的规则

流镜像属于流行为的一种,在设备上应用时,实际是在全局、VLAN或者端口上应用了包含流镜像行为的流策略。流镜像中的规则有两种配置方式:基于MQC和基于ACL。

  • 基于MQC方式:配置复杂,但是支持匹配的规则比基于ACL方式多,而且基于MQC方式的流镜像既支持入方向流镜像,也支持出方向流镜像。
  • 基于ACL方式:配置简单,但是支持匹配的规则比基于MQC方式少,而且基于ACL方式的流镜像仅支持入方向流镜像。

值得注意的是,二层远程流镜像中,如果包含流镜像行为的流策略应用在VLAN上,该VLAN和中间二层网络用于转发镜像报文的二层远程镜像VLAN不能相同。

03

配置镜像

3.1 配置观察端口

【1】背景信息

观察端口专门用于镜像报文的转发,因此不要在上面配置其他业务,防止镜像报文与其他业务的数据报文在观察端口上同时转发会互相影响。根据配置方式的不同,可以将观察端口分为两类:

  • 单个观察端口
  • 观察端口组:一般用于1:N镜像,既可以简化配置,还可以节约观察端口索引(一个观察端口组无论包含多少个端口,仅占用一个观察端口索引)。

【2】操作步骤

A、配置单个本地观察端口

① 执行命令system-view,进入系统视图。

执行命令observe-port [ observe-port-index ] interface interface-type interface-number [ untag-packet ],配置单个本地观察端口。

③(建议)执行命令observe-port observe-port-index forwarding disable,配置观察端口不再转发数据报文。

缺省情况下,观察端口能够转发数据报文。

B、配置本地观察端口组

① 执行命令system-view,进入系统视图。

②执行命令observe-port [ observe-port-index ] interface-range { interface-type interface-number [ to interface-type interface-number ] } &<1-n> [ untag-packet ],配置本地观察端口组。

③ (可选)执行命令observe-portobserve-port-index interface-range { add | delete } interface-type interface-number,向已存在的本地观察端口组添加或者删除指定的端口。

④(建议)执行命令observe-port observe-port-index forwarding disable,配置观察端口不再转发数据报文。

缺省情况下,观察端口能够转发数据报文。

C、配置单个二层远程观察端口

① 执行命令system-view,进入系统视图。

②执行命令observe-port [ observe-port-index ] interfaceinterface-type interface-number vlanvlan-id,配置单个二层远程观察端口并指定二层远程镜像传输VLAN。

③(建议)执行命令observe-port observe-port-indexforwarding disable,配置观察端口不再转发数据报文。

缺省情况下,观察端口能够转发数据报文。

D、配置二层远程观察端口组

① 执行命令system-view,进入系统视图。

②执行命令observe-port[ observe-port-index ]interface-range{ interface-type interface-number [ to interface-type interface-number ] } &<1-n> vlan vlan-id,配置二层远程观察端口组并指定二层远程镜像传输VLAN。

③(可选)执行命令observe-portobserve-port-index interface-range { add | delete } interface-type interface-number,向已存在的二层远程观察端口组添加或者删除指定的端口。

④(建议)执行命令observe-portobserve-port-index forwarding disable,配置观察端口不再转发数据报文。

缺省情况下,观察端口能够转发数据报文。

【3】检查配置结果

# 执行命令display observe-port,查看观察端口的配置信息(以下显示信息仅为示例)。

代码语言:javascript复制
<HUAWEI> display observe-port
  ----------------------------------------------------------------------
  Index          : 1
  Untag-packet   : No
  Forwarding     : Yes
  Interface      : GigabitEthernet0/0/1
  ----------------------------------------------------------------------
  Index          : 2
  Untag-packet   : No
  Forwarding     : Yes
  Interface-range: GigabitEthernet0/0/2
  Vlan           : 20
  ----------------------------------------------------------------------
  Index          : 3
  Untag-packet   : No
  Forwarding     : Yes
  Interface-range: GigabitEthernet0/0/3 to GigabitEthernet0/0/5
  ----------------------------------------------------------------------

3.2 配置镜像方式

【1】操作步骤

A、端口镜像

① 执行命令system-view,进入系统视图。

②执行命令interface interface-type interface-number,进入接口视图。

③执行命令port-mirroring to observe-portobserve-port-index { both | inbound | outbound },将接口接收或发送的报文镜像至指定观察端口。

B、VLAN镜像

①执行命令system-view,进入系统视图。

②执行命令vlan vlan-id,进入VLAN视图。

③执行命令mirroring to observe-portobserve-port-index inbound,将VLAN内所有活动接口接收的报文镜像至指定观察端口。

C、MAC镜像

①执行命令system-view,进入系统视图。

②执行命令vlanvlan-id,进入VLAN视图。

③执行命令mac-mirroring mac-address to observe-portobserve-port-indexinbound,将该VLAN内指定MAC地址的报文镜像至指定观察端口。

D、流镜像

基于MQC方式:

①执行命令system-view,进入系统视图。

②创建流分类,指定被镜像的报文需要满足的规则。

  • 执行命令traffic classifier classifier-name,创建一个流分类并进入流分类视图。
  • 执行命令if-match,定义流分类中的匹配规则。
  • 执行命令quit,退出流分类视图。

③创建流行为,并指定动作是流镜像。

  • 执行命令traffic behaviorbehavior-name,创建一个流行为并进入流行为视图。
  • 执行命令mirroring to observe-port observe-port-index,将匹配流分类的报文镜像至指定观察端口。
  • 执行命令quit,退出流行为视图。

④创建流策略。

  • 执行命令traffic policypolicy-name,创建一个流策略并进入流策略视图。
  • 执行命令classifierclassifier-namebehavior behavior-name,将第3~4步配置好的流分类和流行为绑定到流策略。
  • 执行命令quit,退出流策略视图。

⑤应用流策略。

流策略可以应用在多个VLAN或者接口上,即可以将多个VLAN或者接口上的指定流镜像到同一个观察端口。

  • 全局 在系统视图下执行命令traffic-policy policy-name global { inbound | outbound } [ slot slot-id ],在全局应用流策略。
  • VLAN 执行命令vlanvlan-id,进入VLAN视图。 执行命令traffic-policypolicy-name { inbound | outbound },在VLAN上应用流策略。
  • 接口 执行命令interface interface-type interface-number,进入接口视图。 执行命令traffic-policypolicy-name { inbound | outbound },在接口上应用流策略。

基于ACL方式:

全局或者VLAN

  • 引用“基本ACL/高级ACL/命名型ACL/二层ACL/用户自定义ACL”(IPv4) traffic-mirror [ vlan vlan-id ] inbound acl { bas-acl | adv-acl | name acl-name | l2-acl | user-acl } [ rule rule-id ] to observe-port observe-port-index
  • 引用“基本ACL/高级ACL/命名型ACL”(IPv6) traffic-mirror [ vlan vlan-id ] inbound acl ipv6 { bas-acl | adv-acl | name acl-name } [ rule rule-id ] to observe-port observe-port-index
  • 同时引用“二层ACL” “基本ACL/高级ACL/命名型ACL”(IPv4) traffic-mirror [ vlan vlan-id ] inbound acl l2-acl [ rule rule-id ] acl { bas-acl | adv-acl | name acl-name } [ rule rule-id ] to observe-port observe-port-index
  • 同时引用“基本ACL/高级ACL” “二层ACL/命名型ACL”(IPv4) traffic-mirror [ vlan vlan-id ] inbound acl { bas-acl | adv-acl } [ rule rule-id ] acl { l2-acl | name acl-name } [ rule rule-id ] to observe-port observe-port-index
  • 同时引用“命名型ACL” “基本ACL/高级ACL/二层ACL/命名型ACL”(IPv4) traffic-mirror [ vlan vlan-id ] inbound acl name acl-name [ rule rule-id ] acl { bas-acl | adv-acl | l2-acl | name acl-name } [ rule rule-id ] to observe-port observe-port-index

接口(先执行命令interface interface-type interface-number,进入接口视图)

  • 引用“基本ACL/高级ACL/命名型ACL/二层ACL/用户自定义ACL”(IPv4) traffic-mirror inbound acl { bas-acl | adv-acl | name acl-name | l2-acl | user-acl } [ rulerule-id ]to observe-portobserve-port-index
  • 引用“基本ACL/高级ACL/命名型ACL”(IPv6) traffic-mirror inbound acl ipv6 { bas-acl | adv-acl |nameacl-name } [ rulerule-id ]to observe-portobserve-port-index
  • 同时引用“二层ACL” “基本ACL/高级ACL/命名型ACL”(IPv4) traffic-mirror inbound acll2-acl [ rule rule-id ] acl{ bas-acl | adv-acl | name acl-name } [rule rule-id ] to observe-port observe-port-index
  • 同时引用“基本ACL/高级ACL” “二层ACL/命名型ACL”(IPv4) traffic-mirror inbound acl { bas-acl | adv-acl } [rulerule-id ] acl { l2-acl | name acl-name } [ rulerule-id ]to observe-port observe-port-index
  • 同时引用“命名型ACL” “基本ACL/高级ACL/二层ACL/命名型ACL”(IPv4) traffic-mirror inbound acl nameacl-name [ rule rule-id ] acl { bas-acl | adv-acl | l2-acl | name acl-name } [ rule rule-id ] to observe-port observe-port-index

【2】检查配置结果

# 执行命令display port-mirroring,查看镜像的配置信息(以下显示信息仅为示例)。

代码语言:javascript复制
<HUAWEI> display port-mirroring
 ----------------------------------------------------------------------
  Observe-port 1 : GigabitEthernet0/0/1
  Observe-port 2 : GigabitEthernet0/0/2
  Observe-port 3 : GigabitEthernet0/0/3
  Observe-port 4 : GigabitEthernet0/0/4
  ----------------------------------------------------------------------
  Port-mirror:
  ----------------------------------------------------------------------
       Mirror-port               Direction  Observe-port
  ----------------------------------------------------------------------
  1    GigabitEthernet0/0/15     Inbound    Observe-port 1
  ----------------------------------------------------------------------
  Stream-mirror:
  ----------------------------------------------------------------------
       Behavior                  Direction  Observe-port
  ----------------------------------------------------------------------
  1    b1                        -          Observe-port 2
  ----------------------------------------------------------------------
  Vlan-mirror:
  ----------------------------------------------------------------------
  Mirror-vlan              Direction     Observe-port
  ----------------------------------------------------------------------
  10                       Inbound       Observe-port 3
  ----------------------------------------------------------------------
  Mac-mirror:
  ----------------------------------------------------------------------
  Mirror-mac       Vlan    Direction     Observe-port
  ----------------------------------------------------------------------
  0001-0001-0001   10      Inbound       Observe-port 4
  ----------------------------------------------------------------------

04

删除镜像配置

4.1 背景信息

在使用完镜像功能之后,如果希望删除镜像配置,将观察端口恢复成正常的业务口,可以按照如下步骤进行操作。

删除镜像配置前,可以执行display port-mirroring命令和display current-configuration命令查看设备上的镜像配置,后续操作步骤仅提供具体的删除示例作为参考。

4.2 操作步骤

删除端口镜像配置

代码语言:javascript复制
<HUAWEI> system-view
代码语言:javascript复制
[HUAWEI] interface gigabitethernet 0/0/2
代码语言:javascript复制
[HUAWEI-GigabitEthernet0/0/2] undo port-mirroring to observe-port 1 inbound   //取消镜像端口与观察端口的绑定关系
代码语言:javascript复制
[HUAWEI-GigabitEthernet0/0/2] quit
代码语言:javascript复制
[HUAWEI] undo observe-port 1   //删除观察端口

删除VLAN镜像配置

代码语言:javascript复制
<HUAWEI> system-view
代码语言:javascript复制
[HUAWEI] vlan 10
代码语言:javascript复制
[HUAWEI-vlan10] undo mirroring to observe-port 1 inbound   //取消VLAN与观察端口的绑定关系
代码语言:javascript复制
[HUAWEI-vlan10] quit
代码语言:javascript复制
[HUAWEI] undo observe-port 1   //删除观察端口

删除MAC镜像配置

<HUAWEI> system-view

[HUAWEI] vlan 10

[HUAWEI-vlan10] undo mac-mirroring 1-1-1 to observe-port 1 inbound //取消MAC地址与观察端口的绑定关系

[HUAWEI-vlan10] quit[HUAWEI] undo observe-port 1 //删除观察端口

删除流镜像配置

代码语言:javascript复制
<HUAWEI> system-view
代码语言:javascript复制
[HUAWEI] interface gigabitethernet 0/0/2
代码语言:javascript复制
[HUAWEI-GigabitEthernet0/0/2] undo traffic-policy p1 inbound   //取消应用的流策略[HUAWEI-GigabitEthernet0/0/2] quit
代码语言:javascript复制
[HUAWEI] undo traffic policy p1   //删除流策略
代码语言:javascript复制
[HUAWEI] undo traffic behavior b1   //删除流行为
代码语言:javascript复制
[HUAWEI] undo traffic classifier c1   //删除流分类(可选操作,如果该流分类被其他流策略引用,可以不删除)
代码语言:javascript复制
[HUAWEI] undo observe-port 1   //删除观察端口

---END---

0 人点赞