Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7111627
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类:

2012-08-17 22:13:29


     出现了这个问题,我们不得不重视起交换机端口假死的现象,寻求在交换机不重启的状态下将该端口拯救回来的方法。 
拯救步骤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/8Fa0/17Fa0/20)会分别在276267250秒之后恢复为正常的状态,实际情况也是这样,等了几分钟以后,我们找了一台笔记本电脑,分别接到这几个端口上试了一下,端口都可以正常工作了。这下总算在不重交换机的情况下,将几个处于假死状态的端口拯救了回来。 
关于接口处于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-disableshow 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 
dtp-flap Enabled 
link-flap Enabled 
l2ptguard Enabled 
gbic-invalid Enabled 
loopback Enabled 
dhcp-rate-limit Enabled 
unicast-flood Enabled 
从列表中,我们可以看出常见的原因有udldbpduguardlink-flap以及loopback等。 
具体由什么原因导致当前接口err-disable可以由show interface status err-disable来查看。

在接口模式下采用shutdown,no shutdown进行手动的激活。 
在缺省配置下,一旦接口被置为err-disableIOS将不会试图恢复接口。 
这个可以由show errdisable recovery来查看,timer status下面所有的值都是disable 
下面的示例中,由于手工配置了bpduguard恢复,所以timer status的值变为Enable

sw1#show errdisable recovery 
ErrDisable Reason Timer Status 
----------------- -------------- 
udld Disabled 
bpduguard Enabled 
security-violatio Disabled 
channel-misconfig Disabled 
vmps Disabled 
pagp-flap Disabled 
dtp-flap Disabled 
link-flap Disabled 
l2ptguard Disabled 
psecure-violation Disabled 
gbic-invalid Disabled 
dhcp-rate-limit Disabled 
unicast-flood Disabled 
loopback Disabled 
Timer interval: 300 seconds 
Interfaces that will be enabled at the next timeout: 
Interface Errdisable reason Time left(sec) 
--------- ----------------- -------------- 
Fa0/47 bpduguard 217 
配置IOS重新激活errdisable的接口,使用以下命令:

sw1(config)#errdisable recovery cause bpduguard 
sw1(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

配置完上述命令后,IOS在一段时间后试图恢复被置为err-disable的接口,这段时间缺省为300秒。 
但是,如果引起err-disable的源没有根治,在恢复工作后,接口会再次被置为err-disable 
调整err-disable的超时时间,可以使用以下命令:

sw1(config)#errdisable recovery interval ? 
<30-86400> timer-interval(sec) 
可以调整在3086400秒,缺省是300秒。 
如果产生err-disable的原因是udld,下面有一条命令非常管用:

sw1#udld reset

No ports are disabled by UDLD. 
同时,接口在被置为err-disable的时候,通常有一系列的日志产生,如下: 
*Mar 15 15:47:19.984: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port FastEthernet0/47 with BPDU Guard enabled. Disabling port. 
sw1# 
*Mar 15 15:47:19.984: %PM-4-ERR_DISABLE: bpduguard error detected on Fa0/47, putting Fa0/47 in err-disable state 
sw1# 
*Mar 15 15:47:21.996: %LINK-3-UPDOWN: Interface FastEthernet0/47, changed state to down 
收集这些日志也非常管用。 
所以建议配置一个syslog server,收集log信息。

故障症状: 
线路不通,物理指示灯灭或者显示为橙色(不同平台指示灯状态不同)
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-disableshow interfaces status err-disabled命令能查看触发err-disable的原因。 
下面示例原因为bpduguard,在连接了交换机的端口配置了spanning-tree bpduguard enable
sw1#show interfaces status err-disabled[b]
Port Name [b]Status Reason 
Fa0/47 err-disabled [b]bpduguard[b]
接口产生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 
dtp-flap Enabled 
link-flap Enabled 
l2ptguard Enabled 
gbic-invalid Enabled 
loopback Enabled 
dhcp-rate-limit Enabled 
unicast-flood Enabled
从列表中,我们可以看出常见的原因有udldbpduguardlink-flap以及loopback等。 
具体由什么原因导致当前接口err-disable可以由show interface status err-disable来查看。
在接口模式下采用shutdown,no shutdown进行手动的激活。
在缺省配置下,一旦接口被置为err-disableIOS将不会试图恢复接口。 
这个可以由show errdisable recovery来查看,timer status下面所有的值都是disable 
下面的示例中,由于手工配置了bpduguard恢复,所以timer status的值变为Enable
sw1#show errdisable recovery 
ErrDisable Reason Timer Status 
----------------- -------------- 
udld Disabled 
bpduguard Enabled 
security-violatio Disabled 
channel-misconfig Disabled 
vmps Disabled 
pagp-flap Disabled 
dtp-flap Disabled 
link-flap Disabled 
l2ptguard Disabled 
psecure-violation Disabled 
gbic-invalid Disabled 
dhcp-rate-limit Disabled 
unicast-flood Disabled 
loopback Disabled
Timer interval: 300 seconds
Interfaces that will be enabled at the next timeout:
Interface Errdisable reason Time left(sec) 
--------- ----------------- -------------- 
Fa0/47 bpduguard 217
配置IOS重新激活errdisable的接口,使用以下命令:
sw1(config)#errdisable recovery cause bpduguard
sw1(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
配置完上述命令后,IOS在一段时间后试图恢复被置为err-disable的接口,这段时间缺省为300秒。 
但是,如果引起err-disable的源没有根治,在恢复工作后,接口会再次被置为err-disable
调整err-disable的超时时间,可以使用以下命令: 
sw1(config)#errdisable recovery interval ? 
<30-86400> timer-interval(sec) 
可以调整在3086400秒,缺省是300秒。
如果产生err-disable的原因是udld,下面有一条命令非常管用: 
sw1#udld reset 
No ports are disabled by UDLD.
同时,接口在被置为err-disable的时候,通常有一系列的日志产生,如下:
*Mar 15 15:47:19.984: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port FastEthernet0/47 with BPDU Guard enabled. Disabling port. 
sw1# 
*Mar 15 15:47:19.984: %PM-4-ERR_DISABLE: bpduguard error detected on Fa0/47, putting Fa0/47 in err-disable state 
sw1# 
*Mar 15 15:47:21.996: %LINK-3-UPDOWN: Interface FastEthernet0/47, changed state to down 
收集这些日志也非常管用。 
所以建议配置一个syslog server,收集log信息。
sw1#show interfaces status Port Name Status Vlan Du...
开启errdisable功能,这样可以使用show errdisable来查看引发errdisable的原因是什么,再更加信息内容进行解决。
你要是想不影响使用的话,先用 no errdisable detect cause loopback 执行一下,将已经死掉的端口,no sh 一下 如果没问题,肯定是环路了,你可再找时间,对怀疑有问题的switch用拔插法,一个一个拔掉网线去查,当然,有更有效的方法,你可查看有问题的switch的所有rj45gi口的状态,哪个有errdisable信息哪个就有问题。
switch#show interfaces status err-disabled 
Port Name Status Reason 
Fa0/22 err-disabled link-flap 
Fa0/37 For office in 100K err-disabled link-flap 
Fa0/41 unknow err-disabled link-flap 
Fa0/42 Training Dc066 err-disabled link-flap
Fa0/45 Production line VM err-disabled link-flap 
switch#show errdisable detect 
ErrDisable Reason Detection status 
----------------- ---------------- 
pagp-flap Enabled dtp-flap Enabled link-flap Enabled l2ptguard Enabled gbic-invalid Enabled loopback Enabled 
switch#show interfaces status err-disabled 
Port Name Status Reason 
Fa0/22 err-disabled link-flap 
Fa0/37 For office in 100K err-disabled link-flap 
Fa0/41 unknow err-disabled link-flap 
Fa0/42 Training Dc066 err-disabled link-flap 
Fa0/45 Production line VM err-disabled link-flap 
switch#sh errdisable flap-values 
ErrDisable Reason Flaps Time (sec) ----------------- ------ ----------
pagp-flap 3 30 dtp-flap 3 30 link-flap 5 10 ( link-flap
这就是因为链路质量不好导致的) 关闭errdisable detectswitch#no errdisable detect cause all
导致交换机接口出现err-disable的几个常见原因: 
    1. EtherChannel misconfiguration
    2. Duplex mismatch
    style="TEXT-INDENT
2em">3. BPDU port guard
    4. UDLD
    5. Link-flap error
    6. Loopback error
    7. Port security violation
   
第一个当F EC两端配置不匹配的时候就会出现err-disable.假设Switch AFEC模式配置为on,这时Switch A是不会发送PAgP包和相连的Switch B去协商FEC的,它假设Switch B已经配置好FEC了。但实事上Swtich B并没有配置FEC,当Switch B的这个状态超过1分钟后,Switch ASTP就认为有环路出现,因此也就出现了err-disable.解决办法就是把FEC的模式配置为channel-group 1 mode desirable non-silent这个意思是只有当双方的FEC协商成功后才建立channel,否则接口还处于正常状态。
   
第二个原因就是双工不匹配。一端配置为half-duplex后,他会检测对端是否在传输数据,只有对端停止传输数据,他才会发送类似于ack的包来让链路up,但对端却配置成了full-duplex,他才不管链路是否是空闲的,他只会不停的发送让链路up的请求,这样下去,链路状态就变成err-disable了。
   
三、第三个原因BPDU,也就是和portfastBPDU guard有关。如果一个接口配置了portfast,那也就是说这个接口应该和一个pc连接,pc是不会发送spanning-treeBPDU帧的,因此这个口也接收BPDU来生成spanning-tree,管理员也是出于好心在同一接口上配置了BPDU guard来防止未知的BPDU帧以增强安全性,但他恰恰不小心把一个交换机接到这个同时配置了portfastBPDU guard接口上,于是这个接口接到了BPDU帧,因为配置了BPDU guard,这个接口自然要进入到err-disable状态。解决办法:no spanning-tree portfast bpduguard default,或者直接把portfast关了。
   
第四个原因是UDLD.UDLDcisco的私有2层协议,用于检测链路的单向问题。有的时候物理层是up的,但链路层就是down,这时候就需要UDLD去检测链路是否是真的up的。当AB两端都配置好UDLD后,AB发送一个包含自己port idUDLD帧,B收到后会返回一个UDLD帧,并在其中包含了收到的Aport id,当A接收到这个帧并发现自己的port id也在其中后,认为这链路是好的。反之就变成err-disable状态了。假设A配置了UDLD,而B没有配置UDLDAB发送一个包含自己port id的帧,B收到后并不知道这个帧是什么,也就不会返回一个包含Aport idUDLD帧,那么这时候A就认为这条链路是一个单向链路,自然也就变成err-disable状态了。
   
第五个原因就是链路的抖动,当链路在10秒内反复updown五次,那么就进入err-disable状态。
   
第六个原因就是keepalive loopback.12.1EA之前,默认情况下交换机会在所有接口都发送keepalive信息,由于一些不通交换机协商spanning-tree可能会有问题,一个接口又收到了自己发出的keepalive,那么这个接口就会变成err-disable了。解决办法就是把keepalive关了。或者把ios升到12.2SE.
   
最后一个原因,相对简单,就是由于配置了port-security violation shutdown

 

阅读(2581) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~