鏡像概念
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 鏡像方向
鏡像方向是指將鏡像埠指定方向的報文複製到觀察埠,包括:
- 入方向:將鏡像埠接收的報文複製到觀察埠上。此時的鏡像被稱為入方向鏡像。
- 出方向:將鏡像埠發送的報文複製到觀察埠上。此時的鏡像被稱為出方向鏡像。
- 雙向:將鏡像埠接收和發送的報文都複製到觀察埠上。
鏡像原理描述
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不能相同。
配置鏡像
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,查看觀察埠的配置信息(以下顯示信息僅為示例)。
<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,查看鏡像的配置信息(以下顯示信息僅為示例)。
<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
----------------------------------------------------------------------
刪除鏡像配置
4.1 背景信息
在使用完鏡像功能之後,如果希望刪除鏡像配置,將觀察埠恢復成正常的業務口,可以按照如下步驟進行操作。
刪除鏡像配置前,可以執行display port-mirroring命令和display current-configuration命令查看設備上的鏡像配置,後續操作步驟僅提供具體的刪除示例作為參考。
4.2 操作步驟
刪除埠鏡像配置
<HUAWEI> system-view
[HUAWEI] interface gigabitethernet 0/0/2
[HUAWEI-GigabitEthernet0/0/2] undo port-mirroring to observe-port 1 inbound //取消鏡像埠與觀察埠的綁定關係
[HUAWEI-GigabitEthernet0/0/2] quit
[HUAWEI] undo observe-port 1 //刪除觀察埠
刪除VLAN鏡像配置
<HUAWEI> system-view
[HUAWEI] vlan 10
[HUAWEI-vlan10] undo mirroring to observe-port 1 inbound //取消VLAN與觀察埠的綁定關係
[HUAWEI-vlan10] quit
[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 //刪除觀察埠
刪除流鏡像配置
<HUAWEI> system-view
[HUAWEI] interface gigabitethernet 0/0/2
[HUAWEI-GigabitEthernet0/0/2] undo traffic-policy p1 inbound //取消應用的流策略[HUAWEI-GigabitEthernet0/0/2] quit
[HUAWEI] undo traffic policy p1 //刪除流策略
[HUAWEI] undo traffic behavior b1 //刪除流行為
[HUAWEI] undo traffic classifier c1 //刪除流分類(可選操作,如果該流分類被其他流策略引用,可以不刪除)
[HUAWEI] undo observe-port 1 //刪除觀察埠
希望本文對你有所幫助~~如果對軟體測試、接口測試、自動化測試、性能測試、面試經驗交流感興趣可以私聊我或關注公眾號「特斯汀軟體測試」。免費領取最新軟體測試大廠面試資料和Python自動化、接口、框架搭建學習資料!技術大牛解惑答疑,同行一起交流。