Cisco交换机error:link-flap
MA实验室全部无法获取IP地址,检查物理线路正常之后,发现上行端口灯不亮,进入交换机后show logging:%PM-4-ERR_DISABLE: link-flap error detected on Gi1/0/51, putting Gi1/0/51 in err-disable state
端口进入假死状态是交换机本身的防护机制,那么我总结了下面的解决方法,供大家参考。
一:查看原因
登录到交换机后,查看日志:
>show logging
会发现其中有以下信息(以我遇到的问题举例):
%PM-4-ERR_DISABLE: link-flap error detected on Gi1/0/51, putting Gi1/0/51 in err-disable state
所以,他所在端口是因为link-flap才造成的假死。link-flap是链路抖动,基本上是由于物理链路的问题导致,只要端口在10秒内出现了5次up/down,就会假死。那么,这种情况无非就是网口或网线本身的问题,还有一种可能是因为网卡的设置有问题(尤其是单双工模式设置)。然而,我给他重启了端口,他再也没有call过来了,具体什么情况也未可知了。
二:端口恢复
当然,直接重启端口当然可以解决问题,但也只是权宜之计,根本问题不解决,他下次在连设备的时候依然会出现异常。既然假死是由于交换机的防护机制,那么我们就按照具体情况把相应的防护机制禁用掉。
(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 60
系统会在设置的时间后尝试恢复err-disabled状态的端口。如果在这期间引起err-disabled状态的原因没有得到解决,该端口会再次的变为err-disabled,这就会造成 flapping 的状态。
四:原因分析
一般出现err-disable的情况有以下几种:
1.EC两端的配置不匹配。包括协议类型、pagp和lacp的模式、speed、deplex等。
2.duplex的问题。手动置顶双方的deplex即可,先查看端口当前情况:
#show interface Gi1/0/51
然后手工指定:
#conf t
(config)#interface Gi1/0/51
(config-if)#speed 1000
(config-if)#duplex full
3.BPDU(Bridge Protocol Data Unit 网桥协议数据单元)问题。也就是在同一个接口上做了 portfast以及BPDU Guard:
#show run interface Gi1/0/51
interface Gi1/0/51
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。
注:以上方法本人并未解决过实际问题,只是个人研究,仅供参考。且以上方法仅针对Cisco思科交换机讨论,华为、DELL等其他品牌或许有差异。