二層環路的危害,上過數通HCIA課程的同學都應該知道,產生二層環路時會導致MAC地址表震盪和廣播風暴,
今天我們就舉例來給大家講解出現二層環路應該如何排查。學過數通HCIA的同學都知道出現二層環路,可以
采用生成樹等二層破環協議破除環路,我們今天主要講解的是在非正常情況下產生的二層環路應該如何定位及
排查,比如某個接口未使能生成樹協議。二層環路的定位及排查總體而言可以分為三個步驟:確認是否發生環
路、定位、排查產生環路具體原因。
一、是否發生環路
發生二層環路最顯著的特點就是流量異常增大,環路中心產生的廣播幀會向整個廣播域泛洪,導致處於同一個
廣播域下的設備都會一直收到此類廣播幀。此類廣播幀會占用設備的接口帶寬,導致正常單播幀帶寬不夠而丟
包。因為其流量異常大,所以我們可以通過對比流量大小或者設備CPU的利用率來確定是否發生環路。當然這
種方式的前提就是了解正常流量的大小。下面我們以圖1中所示拓撲講解其確認過程。
假設圖中SW1-SW2-SW3三台設備間發生二層環路,可以在網絡中任何一台設備(前提是這類設備處於同一個
廣播域下)上使用命令“display interface brief | include up”來查看流量是否異常,如果發生環路,SW4上很可
能看到以下現象。
[SW4]dis int brief | include up
……
InUti/OutUti: input utility/output utility
Interface PHY Protocol InUti OutUti inErrors outErrors
GigabitEthernet0/0/1 up up 93% 0.01% 0 0
GigabitEthernet0/0/2 up up 0.01% 93% 0 0
NULL0 up up(s) 0% 0% 0 0
多次查看會發現SW4的GigabitEthernet0/0/1和GigabitEthernet0/0/2口下帶寬利用率達到90%以上,和平時正
常時流量大小做對比會發現其異常大(例如平時帶寬利用率為30%)。那可能有同學要有疑問假設平時帶寬
利用率也幾乎是這個值能不能診斷為環路?如果平時流量也那么大不能診斷其為環路,但可以確定的是這個
網絡帶寬該升級了,交換機長時間處於這種高負荷運轉是很容易出問題的,正常流量大小都應該低於百分之
七八十。在查看時注意要多次查看,單次查看到的可能只是某一小會的突發流量,多次查看都是這樣可以很
大概率確定網絡有環。除了查看接口帶寬使用情況,還可以查看CPU利用率,使用命令“display cpu-usage”
[SW4]display cpu-u
CPU Usage Stat. Cycle: 60 (Second)
CPU Usage : 7% Max: 91%
CPU Usage Stat. Time : 2008-01-01 00:32:33
CPU utilization for five seconds: 7%: one minute: 7%: five minutes: 5%.
……
環路發生,CPU利用率也會伴隨升高。
還有種確定環路發生的方式就是查看是否發生MAC地址表振盪,先在設備上使用“mac-address flapping detection”開啟
MAC地址漂移檢測,然后使用“display mac-address flapping record”可查看到漂移記錄。當然這個結果不是所有設備都
能看到結果,只有出在環路中心的設備才能看到現象,如圖1中的SW1、SW2、SW3三台設備可以看到漂移記錄,SW4、
SW5上則不能看到結果。
[SW1]dis mac-address flapping record
S:starttime
E:endtime
(Q):quitvlan
(D):errordown
------------------------------------------------------------------------
Move-Time VLAN MAC-Address Original-Port Move-Ports MoveNum
------------------------------------------------------------------------
S:2021-12-09 15:21:021 5489-9853-278d GE0/0/1 GE0/0/2 2782
E:2021-12-09 15:22:32 GE0/0/3
------------------------------------------------------------------------
Total items on slot 0: 1
綜上所示三種方式可以確定是否發生環路:
(1)查看接口帶寬利用率並和平時流量做對比。
(2)查看設備CPU利用率和平時利用率做對比。
(3)開啟MAC地址漂移檢測並查看漂移記錄(環路中心設備有效)。
二、定位
細心的同學在上面確認是否發生環路時,根據查看的現象就可以判斷環路的位置,例如SW4的帶寬利用率,
GigabitEthernet0/0/1的進流量特別大,出流量特別小,而GigabitEthernet0/0/2的進流量特別小,出流量特
別大。因為環路中心在SW4設備的GigabitEthernet0/0/1下,該環路會一直發廣播包給SW4,
SW4的GigabitEthernet0/0/1一直收到流量所以進流量異常大。通過這個方式我們就可以根據網絡拓撲圖依
次排查環路位置。
[SW4]dis int brief | include up
……
InUti/OutUti: input utility/output utility
Interface PHY Protocol InUti OutUti inErrors outErrors
GigabitEthernet0/0/1 up up 93% 0.01% 0 0
GigabitEthernet0/0/2 up up 0.01% 93% 0 0
NULL0 up up(s) 0% 0% 0 0
排查到環路中心點的設備,例如SW3其帶寬利用率就會呈現如下現象。
[SW3]dis int brief | include up
……
InUti/OutUti: input utility/output utility
Interface PHY Protocol InUti OutUti inErrors outErrors
GigabitEthernet0/0/1 up up 93% 93% 0 0
GigabitEthernet0/0/2 up up 93% 93% 0 0
GigabitEthernet0/0/3 up up 0.01% 93% 0 0
NULL0 up up(s) 0% 0% 0 0
SW3的GigabitEthernet0/0/1和GigabitEthernet0/0/2進出流量都很大,而GigabitEthernet0/0/3口只有出流量比較大,
因為1口和2口處於環路中心。同理SW1、SW2的1口和2口進出流量也會很大。通過此方式就可以判斷環路的位置。
三、環路原因具體排查
知道環路位置,接下來排查具體原因,交換機所在的網絡正常情況都會運行破環協議,例如生成樹、RRPP等,其
基本原理都是依靠阻塞端口達到破環的目的。所以排查原因時先根據網絡運行的破環協議,判斷其應該阻塞的端口
是哪個端口,然后去查看該端口是否有正常阻塞。例如圖1中的交換機運行STP,但是由於某種原因導致端口沒有
阻塞。首先應該查看設備的橋優先級和MAC地址,判斷誰是根橋,然后判斷哪個端口應該阻塞。選舉出阻塞端口后,
在設備下查看其沒有阻塞的原因。原因可能有如下幾點。
(1)設備接口下STP被手動undo。
(2)設備運行異常,可能需要重啟設備或單板。
(3)網線、光纖等線路問題或者線路帶寬不夠導致STP協議數據包丟包而沒有阻塞。
以上是交換機網絡出環的舉例,現實生活也有可能是終端一側出環。例如交換機下接主機一側接了AP、TP-link或者
集線器,而他們相互之間接成環路。此類環路定位時方法與上述相同,最終會發現連接終端一側的接口進流量會比
較大。因為AP、TP-link、集線器這類設備不支持生成樹協議,不會自動阻塞端口,此時就需要逐一排查其是否連
接成環。在排查時為了不影響其余網絡,可以先在交換機上把連接此類設備的接口斷開。