曾幾何時,在網絡江湖上興起一門武功絕學,憑借著“以彼之道還施彼身”的高超技術解決了網絡上的多種疑難雜癥。

那么他是誰?

他可以復制網絡中的任何一種業務報文,可以是他,也可以是她。

他很有內涵,亦如他的名字——鏡像。

他是網監設備的小伙伴,他默默地為他奉獻著人生最絢爛的年華。

那么,什么是鏡像?

鏡像是指將經過指定源(可以是指定端口、指定流、指定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轉出)的情況都會出現。