分类: 系统运维
2009-02-26 21:12:25
交换机端口假死 用“重启”来应付
“假死”现象蔓延 不得不根治?
拯救步骤1:查看日志/端口的状态
拯救步骤3:显示被置于错误状态端口的恢复情况
交换机端口假死 用“重启”来应付
单位中有若干台CISCO3550的交换机,分别放在相应的网络中担当着骨干交换机的角色,有一台用在单位上互联网的局域网中,还有一台则用在单位的数字电视前端系统的局域网中。不知道大家有没有遇见过跟我一样的现象,即CISCO交换机上的某些正在工作的端口,突然变成关闭状态了,该端口上即使插着网线,端口上的指示灯仍然不亮(这种故障往往是在下面所连接的网络出现故障的时侯出现)。以前这种情况多出现在位于单位上互联网的那台交换机上,当这种情况发生时,为了迅速排除故障,我们会先调整一个端口,即将网线从有问题的端口上拨下来,再插到一个空闲的端口上,这时一般网络故障就排除了。
而且时间一长我们发现,那个处于关闭状态的端口并不是真正损坏了,当我们重新启动一下交换机后,那个端口又“复活”了。由于那台上互联网的交换机还有一些空闲端口,而且我们可以指定这台交换机在一个网络使用相对较少的时间重启(比如凌晨4点),所以端口“假死”这个故障虽然存在,但由于我们一般可以通过重启交换机的方法解决,所以也就没有放在心上。
“假死”现象蔓延 不得不根治?
但是最近几天单位那台连接数字电视前端系统的交换机上也出现了端口“假死”的现象,故障原因很快查清了:是因为该端口下面连接的一台交换机出现了环路,这台CISCO交换机上相应的端口就被系统自动关闭了,这种措势是必要的,因为可以防止环路的扩散,但是当下面的交换机环路故障解除后,该端口并没有又恢复到正常工作状态,更要命的是:一、更换端口; 二、重启交换机都无法实现,因为一来这台交换机上空闲端口很少了,二来这台交换机需要始终处于工作状态,如果一旦重新启动,这几分钟的网络中断就会影响到数字电视的播出,所以是绝对不能重启的。
出现了这个问题,我们不得不重视起交换机端口“假死”的现象,寻求在交换机不重启的状态下将该端口“拯救”回来的方法。
拯救步骤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 PortName StatusVlan DuplexSpeed Type Fa0/20link to databackup err-disabled 562auto auto10/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-flapEnable timer to recover from dtp-flap error disable state gbic-invalidEnable 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 loopbackEnable 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-violationEnable timer to recover from 802.1x violation disable state udldEnable timer to recover from udld error disable state unicast-flood Enable timer to recover from unicast flood disable state vmpsEnable timer to recover from vmps shutdown error disable state |
从列出的选项中,我们可以看出,有非常多的原因会引起端口被置于错误状态,由于我们明确的知道这台交换机上的端口是由于环路问题而被置于错误状态的,所以就可以直接键入命令:
Switch(config)#errdisable recovery cause loopback |
是啊,就这么简单的一条命令,就把困挠我们很长时间的问题解决了,真的就这么神奇。那么如何验证这条命令是生效了呢?
拯救步骤3:显示被置于错误状态端口的恢复情况
Switch# show errdisable recovery ErrDisable ReasonTimer Status ------------------------------- udld Disabled bpduguardDisabled security-violatioDisabled channel-misconfigDisabled vmps Disabled pagp-flapDisabled dtp-flap Disabled link-flapDisabled gbic-invalid Disabled l2ptguardDisabled psecure-violationDisabled gbic-invalid Disabled dhcp-rate-limitDisabled unicast-floodDisabled loopback Enabled Timer interval: 300 seconds Interfaces that will be enabled at the next timeout: InterfaceErrdisable reasonTime left(sec) ---------------------------------------- Fa0/8loopback276 Fa0/17 loopback267 Fa0/20 loopback250 |
从以上显示的信息可以看出,这台交换机有三个端口(Fa0/8、Fa0/17、Fa0/20)会分别在276、267、250秒之后恢复为正常的状态,实际情况也是这样,等了几分钟以后,我们找了一台笔记本电脑,分别接到这几个端口上试了一下,端口都可以正常工作了。这下总算在不重交换机的情况下,将几个处于“假死”状态的端口“拯救”了回来。
作为一名网络管理员,除了日常网络故障的处理外,还会不时碰到自己知识范围以外的东西,但只要引起足够的重视,总会找到解决问题的办法。如果您在工作中也遇到交换机端口“假死”的情况,不妨用这个办法试一下。