交换机端口假死errdisable解决方法.docx
《交换机端口假死errdisable解决方法.docx》由会员分享,可在线阅读,更多相关《交换机端口假死errdisable解决方法.docx(9页珍藏版)》请在冰豆网上搜索。
![交换机端口假死errdisable解决方法.docx](https://file1.bdocx.com/fileroot1/2022-12/7/e6d48f7a-99c0-4687-9495-54d925dbb871/e6d48f7a-99c0-4687-9495-54d925dbb8711.gif)
交换机端口假死errdisable解决方法
交换机端口假死(err-disable)解决方法
出现了这个问题,我们不得不重视起交换机端口“假死”的现象,寻求在交换机不重启的状态下将该端口“拯救”回来的方法。
拯救步骤1:
查看日志/端口的状态
登录进入交换机后,执行showlog,会看到如下的提示:
21w6d:
%ETHCNTR-3-LOOP_BACK_DETECTED:
Keepalivepacketloop-backdetectedonFastEthernet0/20.
21w6d:
%PM-4-ERR_DISABLE:
loopbackerrordetectedonFa0/20,puttingFa0/20inerr-disablestate
以上信息就明确表示由于检测到第20端口出现了环路,所以将该端口置于了err-disable状态。
查看端口的状态
Switch#showinterfa0/20status
Port Name Status Vlan DuplexSpeedType
Fa0/20 linktodatabackuperr-disabled562 auto auto10/100BaseTX
这条信息更加明确的表示了该端口处于err-disabled状态。
既然看到了该端口是被置于了错误的状态了,我们就应该有办法将其再恢复成正常的状态。
拯救步骤2:
将端口从错误状态中恢复回来
进入交换机全局配置模式,执行errdisablerecoverycause?
,会看到如下信息:
Switch(config)#errdisablerecoverycause?
all Enabletimertorecoverfromallcauses
bpduguard EnabletimertorecoverfromBPDUGuarderrordisablestate
channel-misconfig Enabletimertorecoverfromchannelmisconfigdisablestate
dhcp-rate-limit Enabletimertorecoverfromdhcp-rate-limiterrordisablestate
dtp-flap Enabletimertorecoverfromdtp-flaperrordisablestate
gbic-invalid EnabletimertorecoverfrominvalidGBICerrordisablestate
l2ptguard Enabletimertorecoverfroml2protocol-tunnelerrordisablestate
link-flap Enabletimertorecoverfromlink-flaperrordisablestate
loopback Enabletimertorecoverfromloopbackdetecteddisablestate
pagp-flap Enabletimertorecoverfrompagp-flaperrordisablestate
psecure-violation Enabletimertorecoverfrompsecureviolationdisablestate
security-violationEnabletimertorecoverfrom802.1xviolationdisablestate
udld Enabletimertorecoverfromudlderrordisablestate
unicast-flood Enabletimertorecoverfromunicastflooddisablestate
vmps Enabletimertorecoverfromvmpsshutdownerrordisablestate
从列出的选项中,我们可以看出,有非常多的原因会引起端口被置于错误状态,由于我们明确的知道这台交换机上的端口是由于环路问题而被置于错误状态的,所以就可以直接键入命令:
Switch(config)#errdisablerecoverycauseloopback
是啊,就这么简单的一条命令,就把困挠我们很长时间的问题解决了,真的就这么神奇。
那么如何验证这条命令是生效了呢?
拯救步骤3:
显示被置于错误状态端口的恢复情况
Switch#showerrdisablerecovery
ErrDisableReason TimerStatus
----------------- --------------
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
Timerinterval:
300seconds
Interfacesthatwillbeenabledatthenexttimeout:
Interface Errdisablereason Timeleft(sec)
--------- ----------------- --------------
Fa0/8 loopback 276
Fa0/17 loopback 267
Fa0/20 loopback 250
从以上显示的信息可以看出,这台交换机有三个端口(Fa0/8、Fa0/17、Fa0/20)会分别在276、267、250秒之后恢复为正常的状态,实际情况也是这样,等了几分钟以后,我们找了一台笔记本电脑,分别接到这几个端口上试了一下,端口都可以正常工作了。
这下总算在不重交换机的情况下,将几个处于“假死”状态的端口“拯救”了回来。
关于接口处于err-disable的故障排查
故障症状:
线路不通,物理指示灯灭或者显示为橙色(不同平台指示灯状态不同)
showinterface 输出显示接口状态:
FastEthernet0/47isdown,lineprotocolisdown(err-disabled)
接口状态是err-disable。
sw1#showinterfacesstatus
PortNameStatusVlanDuplexSpeedType
Fa0/47err-disabled1autoauto10/100BaseTX
如果出现了接口状态为err-disable,showinterfacesstatuserr-disabled命令能查看触发err-disable的原因。
下面示例原因为bpduguard,在连接了交换机的端口配置了spanning-treebpduguardenable。
sw1#showinterfacesstatuserr-disabled
PortNameStatusReason
Fa0/47err-disabledbpduguard
接口产生err-disable的原因可以由以下的命令来查看,系统缺省的配置是所有列出的原因都能导致接口被置为err-disable。
sw1#showerrdisabledetect
ErrDisableReasonDetectionstatus
---------------------------------
udldEnabled
bpduguardEnabled
security-violatioEnabled
channel-misconfigEnabled
psecure-violationEnabled
dhcp-rate-limitEnabled
unicast-floodEnabled
vmpsEnabled
pagp-flapEnabled
dtp-flapEnabled
link-flapEnabled
l2ptguardEnabled
gbic-invalidEnabled
loopbackEnabled
dhcp-rate-limitEnabled
unicast-floodEnabled
从列表中,我们可以看出常见的原因有udld,bpduguard,link-flap以及loopback等。
具体由什么原因导致当前接口err-disable可以由showinterfacestatuserr-disable来查看。
在接口模式下采用shutdown,noshutdown进行手动的激活。
在缺省配置下,一旦接口被置为err-disable,IOS将不会试图恢复接口。
这个可以由showerrdisablerecovery来查看,timerstatus下面所有的值都是disable。
下面的示例中,由于手工配置了bpduguard恢复,所以timerstatus的值变为Enable。
sw1#showerrdisablerecovery
ErrDisableReasonTimerStatus
-------------------------------
udldDisabled
bpduguardEnabled
security-violatioDisabled
channel-misconfigDisabled
vmpsDisabled
pagp-flapDisabled
dtp-flapDisabled
link-flapDisabled
l2ptguardDisabled
psecure-violationDisabled
gbic-invalidDisabled
dhcp-rate-limitDisabled
unicast-floodDisabled
loopbackDisabled
Timerinterval:
300seconds
Interfacesthatwillbeenabledatthenexttimeout:
InterfaceErrdisablereasonTimeleft(sec)
----------------------------------------
Fa0/47bpduguard217
配置IOS重新激活errdisable的接口,使用以下命令:
sw1(config)#errdisablerecoverycausebpduguard
sw1(config)#errdisablerecoverycause?
allEnabletimertorecoverfromallcauses
bpduguardEnabletimertorecoverfromBPDUGuarderrordisablestate
channel-misconfigEnabletimertorecoverfromchannelmisconfigdisablestate
dhcp-rate-limitEnabletimertorecoverfromdhcp-rate-limiterrordisablestate
dtp-flapEnabletimertorecoverfromdtp-flaperrordisablestate
gbic-invalidEnabletimertorecoverfrominvalidGBICerrordisablestate
l2ptguardEnabletimertorecoverfroml2protocol-tunnelerrordisablestate
link-flapEnabletimertorecoverfromlink-flaperrordisablestate
loopbackEnabletimertorecoverfromloopbackdetecteddisablestate
pagp-flapEnabletimertorecoverfrompagp-flaperrordisablestate
psecure-violationEnabletimertorecoverfrompsecureviolationdisablestate
security-violationEnabletimertorecoverfrom802.1xviolationdisablestate
udldEnabletimertorecoverfromudlderrordisablestate
unicast-floodEnabletimertorecoverfromunicastflooddisablestate
vmpsEnabletimertorecoverfromvmpsshutdownerrordisable
配置完上述命令后,IOS在一段时间后试图恢复被置为err-disable的接口,这段时间缺省为300秒。
但是,如果引起err-disable的源没有根治,在恢复工作后,接口会再次被置为err-disable。
调整err-disable的超时时间,可以使用以下命令:
sw1(config)#errdisablerecoveryinterval?
<30-86400>timer-interval(sec)
可以调整在30-86400秒,缺省是300秒。
如果产生err-disable的原因是udld,下面有一条命令非常管用:
sw1#udldreset
NoportsaredisabledbyUDLD.
同时,接口在被置为err-disable的时候,通常有一系列的日志产生,如下:
*Mar1515:
47:
19.984:
%SPANTREE-2-BLOCK_BPDUGUARD:
ReceivedBPDUonportFastEthernet0/47withBPDUGuardenabled.Disablingport.
sw1#
*Mar1515:
47:
19.984:
%PM-4-ERR_DISABLE:
bpduguarderrordetectedonFa0/47,puttingFa0/47inerr-disablestate
sw1#
*Mar1515:
47:
21.996:
%LINK-3-UPDOWN:
InterfaceFastEthernet0/47,changedstatetodown
收集这些日志也非常管用。
所以建议配置一个syslogserver,收集log信息。
故障症状:
线路不通,物理指示灯灭或者显示为橙色(不同平台指示灯状态不同)
showinterface输出显示接口状态:
FastEthernet0/47isdown,lineprotocolisdown(err-disabled)
接口状态是err-disable。
sw1#showinterfacesstatus
PortNameStatusVlanDuplexSpeedType
Fa0/47err-disabled1autoauto10/100BaseTX
如果出现了接口状态为err-disable,showinterfacesstatuserr-disabled命令能查看触发err-disable的原因。
下面示例原因为bpduguard,在连接了交换机的端口配置了spanning-treebpduguardenable。
sw1#showinterfacesstatuserr-disabled[b]
PortName[b]StatusReason
Fa0/47err-disabled[b]bpduguard[b]
接口产生err-disable的原因可以由以下的命令来查看,系统缺省的配置是所有列出的原因都能导致接口被置为err-disable。
sw1#showerrdisabledetect
ErrDisableReasonDetectionstatus
---------------------------------
udldEnabled
bpduguardEnabled
security-violatioEnabled
channel-misconfigEnabled
psecure-violationEnabled
dhcp-rate-limitEnabled
unicast-floodEnabled
vmpsEnabled
pagp-flapEnabled
dtp-flapEnabled
link-flapEnabled
l2ptguardEnabled
gbic-invalidEnabled
loopbackEnabled
dhcp-rate-limitEnabled
unicast-floodEnabled
从列表中,我们可以看出常见的原因有udld,bpduguard,link-flap以及loopback等。
具体由什么原因导致当前接口err-disable可以由showinterfacestatuserr-disable来查看。
在接口模式下采用shutdown,noshutdown进行手动的激活。
在缺省配置下,一旦接口被置为err-disable,IOS将不会试图恢复接口。
这个可以由showerrdisablerecovery来查看,timerstatus下面所有的值都是disable。
下面的示例中,由于手工配置了bpduguard恢复,所以timerstatus的值变为Enable。
sw1#showerrdisablerecovery
ErrDisableReasonTimerStatus
-------------------------------
udldDisabled
bpduguardEnabled
security-violatioDisabled
channel-misconfigDisabled
vmpsDisabled
pagp-flapDisabled
dtp-flapDisabled
link-flapDisabled
l2ptguardDisabled
psecure-violationDisabled
gbic-invalidDisabled
dhcp-rate-limitDisabled
unicast-floodDisabled
loopbackDisabled
Timerinterval:
300seconds
Interfacesthatwillbeenabledatthenexttimeout:
InterfaceErrdisablereasonTimeleft(sec)
----------------------------------------
Fa0/47bpduguard217
配置IOS重新激活errdisable的接口,使用以下命令:
sw1(config)#errdisablerecoverycausebpduguard
sw1(config)#errdisablerecoverycause?
allEnabletimertorecoverfromallcauses
bpduguardEnabletimertorecoverfromBPDUGuarderrordisablestate
channel-misconfigEnabletimertorecoverfromchannelmisconfigdisablestate
dhcp-rate-limitEnabletimertorecoverfromdhcp-rate-limiterrordisablestate
dtp-flapEnabletimertorecoverfromdtp-flaperrordisablestate
gbic-invalidEnabletimertorecoverfrominvalidGBICerrordisablestate
l2ptguardEnabletimertorecoverfroml2