思科交换机 err-disabled 端口的检测和恢复
工作中有时候会遇到用户前几天的网络是正常的,但某一天突然无法发送数据了,在交换机上查看用户连接的端口,可以看到对应端口没有被手动 shutdown,却被交换机自动置为一种 err-disabled 的特殊状态(俗称假死),这篇文章就来简单介绍一下怎么处理被置为 err-disabled 状态的端口。
工具/原料
一台IOS系统的思科交换机
一台可以管理交换机的PC
1、小科普—端口检测机制
1、 Err-disabled 实际上是思科交换机的端口状态检测机制对异常端口采取的一种处理机制。通常思科二层交换机都会自动开启端口检测机制,盐淬芪求该机制会根据内置的规则自动检测每个端口的物理状态、逻辑配置、安全性相关的多种因素,来判断其是否能正常工作或存在安全隐患,一旦发现异常就会将其置为 err-disabled 状态(对于某些检测项目也可以通过配置修改处理机制),防止对现有网络造成破坏,同时也可以提示管理员检查一下该端口的物理状态或配置是不是存在问题。被置为 err-disabled 状态的端口无法转发任何数据,通常情况下也无法正常恢复,需要管理员手动重启或开启端口检测机制的自动恢复功能才能恢复,这个我们在后边会具体介绍。 端口检测机制支持的检测项目(会导致端口被置为err-disabled状态的原因)如下图所示:
2、 这里简单介绍几种常见的检测项目:link-flap:检查端口街鹏袷敖链路抖动(及频繁的在Up和Down状态之间切换),默认检测到端口在10s内发生5次或5次以上的Up、Down切换时,端口会被置为err-disable状态。一般是由于物理层或数据链路层相关的异常导致。 udld:检测单向链路,单向链路是指一对光纤链路中其中的一条传输链路故障,只能进行单向通信(只能收不能发或只能发不能收),检测到这种情况后会将端口置为err-disabled bpduguard:生成树的一种保护机制,对于启用portfast时的端口通常认为不会收到BPDU报文,但也不能保证不会出现环路。这种检测机制可以使启用portfast的端口接收到BPDU数据时,自动被置为err-disable状态,防止引起环路。 loopback:检测端口是否发生环路,如果发生环路,则将其置为err-disabled状态。 gbic-invalid:检查光纤模块是否支持,如果端口上发现了不支持的光模块,会将该端口置为err-disabled状态。 psecure-violation:配合端口安全机制进行使用,如果端口启用了端口安全,一旦触发安全机制其置为err-disabled状态。 security-violation:配合802.1X认证进行使用,如果端口配置了802.1X,一旦发现终端没有通过802.1X认证,就会将其置为err-disabled状态。 sfp-config-mismatch:检测SFP光模块配置是否一致,如果不一致将其置为err-disabled状态。
2、端口状态检测机制相关命令
1、1)、查看端口检测机制对端口的哪些项目开启了状态检查命令:show err-disabled det髫潋啜缅ect 交换机的端口检测机制默认会开启所有支持的项目的状态检查,如下图所示,其中: ErrDisable Reason:表示检测的项目名称 Detection:表示是否启对用该项目的检测,Enabled 表示启用,Disabled 表示关闭 Mode:表示检测模式,port 表示针对整个端口进行检测,一旦发现异常,整个端口都会被置为 err-disabled 状态, port/vlan 表示对端口上的 vlan 进行检测,一旦发现某个vlan异常只会将该vlan的流量阻断,而不会关闭整个端口。
2、2)、开启/关闭端口检测机制对端口某个项目的检查命令:[no] errdisable detect cause <reason> 交换机的端口检测机制默认已经开启了所有支持的项目的状态检查,如果某个项目被关闭,只需要在全局配置模式下使用 errdisable detect cause <reason> 命令开启即可,reason为对应检测项目的关键字,可以使用 ? 查看,如下图所示:
3、 如果要关闭某个项目的检测,直接在该命令前加 no 即可,某些项目的检查是交换机默认开启的,无法关闭。
4、3)、err-disabled端口的检测 检查端口是否处于 err-disabled 端口可以使用以下两种方式: 方法1:show interfaces <interface-number> 方法2:show interfaces status err-disabled 使用第一种方式可以查看某个端口的详细物理状态信息,如果端口被置为 err-disabled 状态,在链路状态(line protocol)一栏中会标出(err-disabled),如下图所示:
5、 第二种方式可以列出所有处于 err-disabled 状态的端口,还可以看到被置为 err-disabled 的原因,如下图所示,Status列中会使用 err-disabled 进行标识端口状态,Reason 列中会显示被置为 err-disabled 状态的原因,如果是基于端口vlan的检测,还会在 Err-disabled 列中列出被置为 err-disabled 状态的vlan号:
6、 还有一种方式,就是查看日志,如果端口被置为 err-disabled 状态会生成日志信息。此外还可以通过端口指示灯来判断,被置为 err-disabled 状态的端口指示灯会显示为固定的橘黄色状态(正常情况为闪烁的淡绿色,如果千兆端口协商为百兆,则显示为闪烁的橙黄色)。
7、4)、err-disabled端口的恢复 默认情况下,一旦接口被置为 err-disabled 状态,交换机不会试图恢复对应接口,处于 err-disabled 状态的端口有两种恢复方式。 一种是在端口模式下手动将端口重启(先使用shutdown命令,再使用no shutdown命令),这种恢复方式只对本次操作有效:
8、 另一种方法是启用端口检测的自动恢复功能,端口检测的自动恢复功能可以在将端口置为err-disabled状态之后一定时间间隔内尝试自动恢复端口,这种恢复方式配置后持续生效,其相关命令如下:查看启用了哪些项目的自动恢复功能:show errdisable recovery配置自动恢复的时间间隔:errdisable recovery interval <time-out>启用/关闭指定项目的自动恢复:[no] errdisable recovery cause <reason> 默认情况下,交换机上没有为任何端口检测项目启用自动恢复功能,如下图所示,其中: ErrDisable Reason:表示对应的检测项目 Timer Disabled:表示自动恢复计时器状态,如果Enabled表示开启了自动恢复,Disabled表示没有开启自动恢复。
9、 通过 show errdisable recovery 命令可以看到端口检测机制默认的恢复间隔为300s,通过 errdisable recovery interval <time-out> 可以修改默认的恢复计时器值(单位为秒),通过 errdisable recovery cause <reason> 命令可以开启指定检测项目的自动恢复功能,如下图所示:
10、 开启针对某项目的端口恢复功能后,当端口因为该原因被置为err-disabled状态后,系统会在一个恢复计时器后试图恢复该端口。如果要关闭指定项目的恢复功能,只需在命令前加 no 即可。
3、Err-disabled端口的处理思路
1、 一般端口被置为Err-disabled状态后无法收发数据,如果是这个端口连接的是用户终端,这时候用户会直接反馈,如果是交换机的互连接口,可以通过监控告警平台或巡检发现。接下来通过一个实例来演示一下Err-disabled端口的一般处理步骤,如下发现一台2960交换机的一个上连光纤接口被置为Err-disabled的状态,其基本处理思路如下:
2、1)、锁定被置为Err-disabled状态的端口及其原因 通过 show interfaces status err-disabled 命令可以看到被置为 err-disabled 状态的端口为 te1/0/2,同时可以看到其被置为 err-disabled 状态的原因为link-flap,如下图所示:
3、2)、劐聂赞陶根据原因排查根本问题 虽然可以通过重启端口或开启自动恢复功能直接恢复端口,可以使其正常开始转发数据,但如果根本问题得不到解决,端口很快就又会被置为 err-disable颊俄岿髭d 状态(除非关闭针对该原因的状态检测,但不推荐),还可能会影响现有网络(如因环路被置为 err-disabled 状态),所以在恢复之前最好先解决根本的原因。 如这里光口被置为 err-disabled 状态的原因为 link-flap,通常这种情况是由于端口物理连接存在问题导致端口状态频繁发生变化导致,我们可以通过日志信息(show logging)来辅助进行排错,这里通过查看日志可以看到某短时间内经常报出端口 te1/0/2 的传输光功率异常(太低)的日志,由此可以基本确定是本端端口的光模块的问题(也可能是光纤的传输线路问题,但内网光纤线路出现问题的可能性较小):
4、 于是我们来具体看一下当前端口的光模块的收发功率,如下图所示,可以看到其发送功率确实存在异常:
5、 于是先将该端口的光模块更换后尝试一下,更换后再看下光功率,可以看到其收发功率都正常了:
6、3)、恢复端口 解决造成端口被置为 err-disabled 的根本问题后,就可以通过重启端口立即恢复该端口,如下图所示:
7、 也可以通过启用针对该原因的自动恢复功能等待恢复计时器到期后自动恢复(默认是没有启用的),如下图所示:
8、 启用自动恢复功能后,可以看到自动恢复生效的端口,以及恢复计时器剩余的时间,这里为277s,表示再经过277s后交换机就会尝试恢复该端口。 恢复之后,检查端口状态,可以看到其已经恢复正常,同时也要持续观察一段时间,确保其没有再次被置为 err-disabled 状态,如果再次被置为 err-disabled 状态,说明根本问题还没有被解决,需要重新进行排错
结语
1、 本篇文章详细地介绍了一下思科IOS交换机上的端口检测机制相关命令及其排错的基本思路,希望对大家有所帮助,如果感觉有用的话,请帮忙顶一下,如果有错误或不足的地方,也希望各位可以帮忙指出,非常感谢。 By 看星星的小王子 2020.4.30