二层环路的危害,上过数通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、集线器这类设备不支持生成树协议,不会自动阻塞端口,此时就需要逐一排查其是否连
接成环。在排查时为了不影响其余网络,可以先在交换机上把连接此类设备的接口断开。