思科cisco交换机端口显示err-disable错误的解决办法

思科交换机出现“err-disable”错误的问题该怎么解决?关于接口处于err-disable的故障该再怎么排查,下面本文将详细的讲解关于cisco交换机出现“err-disable”问题的解决办法:

一:查看原因

登录到交换机后,查看日志:

>show log

会发现其中有以下信息(以我遇到的问题举例):

Keepalive packet link-flap detected on FastEthernet0/17

linkflap error detected on Fa0/17, putting Fa0/17 in err-disable state

所以,所在端口是因为link-flap才会造成频繁假死。link-flap是链路抖动,基本上是由于物理链路的问题导致,只要端口在10秒内出现了5次up/down,就会假死。那么,这种情况无非就是网口或网线本身的问题,还有一种可能是因为网卡的设置有问题(尤其是单双工模式设置)。

cisco交换机

二:端口恢复

当然,直接重启端口当然可以解决问题,但也只是权宜之计,根本问题不解决,下次再次连设备的时候依然会出现异常。既然假死是由于交换机的防护机制,那么我们就按照具体情况把相应的防护机制禁用掉。

(config)#no errdisable detect cause ******

会导致 err-disabled 状态的原因,可以通过下面的命令查看:

#show errdisable detect

你会看到很多造成假死的原因。

当然,你也可以暴力点:

(config)#no errdisable detect cause all

禁用全部防护机制,这样不管你怎么折腾,都不会errdisable了。

三:自动恢复

上面的方法虽然直接,但无疑会让交换机置于隐患之中,那么我们可以设置端口的自动恢复机制。

可以通过下面的命令查看有哪些防护会在timeout后会自动恢复:

#show errdisable recovery

会出现各种防护的自动恢复状态,Disable是不会自动恢复,Enable是可以自动恢复。

默认情况下,一旦某个端口被置为err-disabled的状态,该端口将会一直保持该状态,系统并不会使它自动恢复。

因此,要使其有自动恢复的功能,需要如下的配置:

#conf t

#(config)errdisable recovery cause ******

还可以设置一下 recovery 的 timerout:

(config)#errdisable recovery interval 300

系统会在设置的时间后尝试恢复err-disabled状态的端口。如果在这期间引起err-disabled状态的原因没有得到解决,该端口会再次的变为err-disabled,这就会造成flapping 的状态。

四:原因分析

一般出现err-disable的情况有以下几种:

1.Ether-Channel两端的配置不匹配。包括协议类型、pagp和lacp的模式、speed、deplex等。

2.duplex的问题。手动置顶双方的deplex即可,先查看端口当前情况:

#show interface fa0/17

然后手工指定:

#conf t

(config)#interface fa0/17

(config-if)#speed 1000

(config-if)#duplex full

3.BPDU(Bridge Protocol Data Unit 网桥协议数据单元)问题。也就是在同一个接口上做了 portfast以及BPDU Guard:

#show run interface fa0/17

interface FastEthernet0/17

spanning-tree bpduguard enable

spanning-tree portfast enable

直接禁用或重置即可:

(config-if)#spanning-tree portfast bpduguard disable

(config-if)#spanning-tree portfast bpduguard default

4.UDLD(UnidDrectional Link Detection 单向链路检测)的问题。这是Cisco的私有协议问题,两边的配置必须要同步。

5.link-flap的问题。造成此问题的原因大多是物理链路,上面有提到。

6.另外还有诸如keepalived、security-violation、l2ptguard、异常的SFPz Cable等都会造成err-disable。