交换机端口假死(err-disable)解决方法
出现了这个问题,我们不得不重视起交换机端口“假死”的现象,寻求在交换机不重启的状态下将该端口“拯救”回来的方法。 拯救步骤1:查看日志/端口的状态
登录进入交换机后,执行show 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 state
以上信息就明确表示由于检测到第20端口出现了环路,所以将该端口置于了err-disable状态。
查看端口的状态
Switch# show inter fa0/20 status
Port Name Status Vlan Duplex Speed Type Fa0/20 link to databackup err-disabled 562 auto auto 10/100BaseTX
这条信息更加明确的表示了该端口处于err-disabled状态。 既然看到了该端口是被置于了错误的状态了,我们就应该有办法将其再恢复成正常的状态。
拯救步骤2:将端口从错误状态中恢复回来
进入交换机全局配置模式,执行errdisable recovery cause ?,会看到如下信息:
Switch(config)#errdisable recovery cause ?
all Enable timer to recover from all causes
bpduguard Enable timer to recover from BPDU Guard error disable state
channel-misconfig Enable timer to recover from channel misconfig disable state
dhcp-rate-limit Enable timer to recover from dhcp-rate-limit error disable state
dtp-flap Enable timer to recover from dtp-flap error disable state gbic-invalid Enable timer to recover from invalid GBIC error disable state
l2ptguard Enable timer to recover from l2protocol-tunnel error disable state
link-flap Enable timer to recover from link-flap error disable state loopback Enable timer to recover from loopback detected disable state
pagp-flap Enable timer to recover from pagp-flap error disable state psecure-violation Enable timer to recover from psecure violation disable state
security-violation Enable timer to recover from 802.1x violation disable state
udld Enable timer to recover from udld error disable state
unicast-flood Enable timer to recover from unicast flood disable state vmps Enable timer to recover from vmps shutdown error disable state
从列出的选项中,我们可以看出,有非常多的原因会引起端口被置于错误状态,由于我们明确的知道这台交换机上的端口是由于环路问题而被置于错误状态的,所以就可以直接键入命令:
Switch(config)#errdisable recovery cause loopback
是啊,就这么简单的一条命令,就把困挠我们很长时间的问题解决了,真的就这么神奇。那么如何验证这条命令是生效了呢? 拯救步骤3:显示被置于错误状态端口的恢复情况
Switch# show errdisable recovery ErrDisable Reason Timer Status ----------------- -------------- udld Disabled bpduguard Disabled security-violatio Disabled channel-misconfig Disabled vmps Disabled pagp-flap Disabled dtp-flap Disabled link-flap Disabled gbic-invalid Disabled l2ptguard Disabled psecure-violation Disabled gbic-invalid Disabled dhcp-rate-limit Disabled unicast-flood Disabled loopback Enabled Timer interval: 300 seconds
Interfaces that will be enabled at the next timeout: Interface Errdisable reason Time left(sec) --------- ----------------- --------------
Fa0/8 loopback 276 Fa0/17 loopback 267 Fa0/20 loopback 250
从以上显示的信息可以看出,这台交换机有三个端口(Fa0/8、Fa0/17、Fa0/20)会分别在276、267、250秒之后恢复为正常的状态,实际情况也是这样,等了几分钟以后,我们找了一台笔记本电脑,分别接到这几个端口上试了一下,端口都可以正常工作了。这下总算在不重交换机的情况下,将几个处于“假死”状态的端口“拯救”了回来。
关于接口处于err-disable的故障排查 故障症状:
线路不通,物理指示灯灭或者显示为橙色(不同平台指示灯状态不同) show interface 输出显示接口状态:
FastEthernet0/47 is down, line protocol is down (err-disabled) 接口状态是err-disable。
sw1#show interfaces status
Port Name Status Vlan Duplex Speed Type Fa0/47 err-disabled 1 auto auto 10/100BaseTX
如果出现了接口状态为err-disable,show interfaces status err-disabled命令能查看触发err-disable的原因。
下面示例原因为bpduguard,在连接了交换机的端口配置了spanning-tree bpduguard enable。
sw1#show interfaces status err-disabled Port Name Status Reason
Fa0/47 err-disabled bpduguard
接口产生err-disable的原因可以由以下的命令来查看,系统缺省的配置是所有列出的原因都能导致接口被置为err-disable。
sw1#show errdisable detect
ErrDisable Reason Detection status ----------------- ---------------- udld Enabled
bpduguard Enabled
security-violatio Enabled channel-misconfig Enabled psecure-violation Enabled dhcp-rate-limit Enabled unicast-flood Enabled vmps Enabled pagp-flap Enabled