转:https://www.2cto.com/net/201303/198724.htmlhtml
交换机出现err-disable的缘由及解决方法ios
LOG示例:安全
21w6d: %ETHCNTR-3-LOOP_BACK_DETECTED: Keepalive packet loop-back detected on FastEthernet0/20.并发
21w6d: %PM-4-ERR_DISABLE: loopback error detected on Fa0/20, putting Fa0/20 in err-disable stateoop
的信息,端口处于err-disabled状态,后来用errdisable recovery cause loopback恢复了。spa
因为err-disable的缘由比较多,因此须要进一步确认,致使交换机接口出现err-disable的几个常见缘由:htm
1. EtherChannel misconfiguration接口
2. Duplex mismatchci
3. BPDU port guardget
4. UDLD
5. Link-flap error
6. Loopback error
7. Port security violation
第一个当F EC两端配置不匹配的时候就会出现err-disable。假设Switch A把FEC模式配置为on,这时Switch A是不会发送PAgP包和相连的Switch B去协商FEC的,它假设Switch B已经配置好FEC了。但实事上Swtich B并无配置FEC,当Switch B的这个状态超过1分钟后,Switch A的STP就认为有环路出现,所以也就出现了err-disable。解决办法就是把FEC的模式配置为channel-group 1 mode desirable non-silent这个意思是只有当双方的FEC协商成功后才创建channel,不然接口还处于正常状态。
第二个缘由就是双工不匹配。一端配置为half-duplex后,他会检测对端是否在传输数据,只有对端中止传输数据,他才会发送相似于ack的包来让链路up,但对端却配置成了full-duplex,他才无论链路是不是空闲的,他只会不停的发送让链路up的请求,这样下去,链路状态就变成err-disable了。
第三个缘由BPDU,也就是和portfast和BPDU guard有关。若是一个接口配置了portfast,那也就是说这个接口应该和一个pc链接,pc是不会发送spanning-tree的BPDU帧的,所以这个口也接收BPDU来生成spanning-tree,管理员也是出于好心在同一接口上配置了BPDU guard来防止未知的BPDU帧以加强安全性,但他偏偏不当心把一个交换机接到这个同时配置了portfast和BPDU guard接口上,因而这个接口接到了BPDU帧,由于配置了BPDU guard,这个接口天然要进入到err-disable状态。解决办法:no spanning-tree portfast bpduguard default,或者直接把portfast关了。
第四个缘由是UDLD。UDLD是cisco的私有2层协议,用于检测链路的单向问题。有的时候物理层是up的,但链路层就是down,这时候就须要UDLD去检测链路是不是真的up的。当AB两端都配置好UDLD后,A给B发送一个包含本身port id的UDLD帧,B收到后会返回一个UDLD帧,并在其中包含了收到的A的port id,当A接收到这个帧并发现本身的port id也在其中后,认为这链路是好的。反之就变成err-disable状态了。假设A配置了UDLD,而B没有配置UDLD:A给B发送一个包含本身port id的帧,B收到后并不知道这个帧是什么,也就不会返回一个包含A的port id的UDLD帧,那么这时候A就认为这条链路是一个单向链路,天然也就变成err-disable状态了。
第五个缘由就是链路的抖动,当链路在10秒内反复up、down五次,那么就进入err-disable状态。
第六个缘由就是keepalive loopback。在12.1EA以前,默认状况下交换机会在全部接口都发送keepalive信息,因为一些不通交换机协商spanning-tree可能会有问题,一个接口又收到了本身发出的keepalive,那么这个接口就会变成err-disable了。解决办法就是把keepalive关了。或者把ios升到12.2SE。
最后一个缘由,相对简单,就是因为配置了port-security violation shutdown。