FC 端口诊断:计数器、slow drain 与 SFP 检查
SAN 交换机会统计端口上出现的每一种异常,这些计数器与物理原因一一对应——前提是你知道哪个计数器意味着「连接器脏污」,哪个意味着「主机没有及时释放缓冲区」。本页列出两大主流平台上的计数器、每个计数器指向的原因、慢速排空拥塞的表现形式,以及如何从交换机上读取 SFP 本身。
计数器
计数器(Brocade porterrshow) | Cisco MDS 对应项(show interface fc… counters) | 含义 | 指向 |
|---|---|---|---|
| enc_out——帧外编码错误 | invalid transmission words | 帧间出现坏符号 | 光模块、线缆、连接器、速率不匹配——典型的物理层计数器 |
| enc_in——帧内编码错误 | invalid transmission words / CRC | 帧内符号损坏 | 原因相同,但更严重 |
| crc_err | CRC errors | 帧未通过 CRC 校验 | 链路处于边缘状态:端面脏污、Rx 偏低、SFP 故障;ISL 上要检查两端 |
| crc_g_eof | CRC with good EOF | CRC 错误但帧正确终止——错误产生于本端口的上游 | 查看上一跳 |
| too_shrt / too_long / bad_eof | frame too short / too long / bad EOF | 帧格式异常 | 通常是 enc_in 的后果,或设备故障 |
| link_fail | link failures | 链路中断 | 拔线、SFP 故障、供电问题、远端复位 |
| loss_sync / loss_sig | sync loss / signal loss | 信号或字同步丢失 | Rx 偏低、LOS、抖动——链路抖动 |
| frjt / fbsy | F_RJT / F_BSY | 光纤架构拒绝/忙碌帧 | 架构或分区(zoning)问题,与光模块无关 |
| disc_c3——第 3 类丢弃 | timeout discards | 帧在交换机中超时后被丢弃 | 慢速排空/拥塞 |
| c3timeout tx/rx | — | 超时方向 | tx 超时:所连设备处理缓慢;rx:上游存在问题 |
| pcs_err(16G+) | — | 64B/66B PCS 块错误 | 16/32GFC 的物理层 |
| uncor_err(16G+,带 FEC) | FEC uncorrected | FEC 无法修复该块 | 链路处于极限状态——VDM 与 FEC 指标 |
credit loss(portstatsshow:tim_txcrd_z) | credit loss / tx credit not available | 发送信用为零的持续时间 | 拥塞或链路脏污导致 R_RDY 丢失 |
经验法则:enc_out、crc_err、loss_sync、pcs_err 随物理层问题增长;disc_c3、c3timeout、tim_txcrd_z 随拥塞问题增长; frjt/fbsy 随架构问题增长。清空计数器、等待一段时间,然后观察速率而非总量。
慢速排空(Slow drain)
某个末端设备缓慢释放信用(过载的主机、故障的 HBA、路径上的速率不匹配)会使帧滞留在交换机缓冲区中;这些帧超时后被丢弃,拥塞会通过 ISL 向后蔓延到不相关的设备。这是最具破坏性的 SAN 问题,起初看起来像是随机的性能问题。
| 迹象 | 位置 |
|---|---|
| F_Port 上 tim_txcrd_z 持续攀升 | 该端口上的设备释放信用缓慢 |
| 同一端口上 disc_c3 / c3timeout tx 上升 | 发往该设备的帧正在超时 |
| ISL 及其他 F_Port 上出现 disc_c3 | 拥塞已经扩散 |
Bottleneck/MAPS「延迟」告警(Brocade)、show logging onboard flow-control request-timeout、拥塞丢弃/慢速排空检测(Cisco) | 平台工具 |
缓解措施:修复或隔离慢速设备(端口隔离、隔离到低优先级虚拟通道)、缩短边缘端口的拥塞丢弃超时时间、避免路径上出现速率台阶、保持 ISL 超订比例合理(SAN 设计)。光模块几乎从不是慢速排空的成因——但 R_RDY 丢失的边缘链路可能表现相似,因此应先检查 enc_out/crc。
从交换机检查 SFP
| 任务 | Brocade FOS | Cisco MDS / NX-OS |
|---|---|---|
| SFP 身份与 DDM | sfpshow <port> | show interface fc1/1 transceiver details |
| 端口状态与速率 | portshow <port>、switchshow | show interface fc1/1、show interface brief |
| 错误计数器 | porterrshow、portstatsshow <port> | show interface fc1/1 counters [detailed] |
| 清空计数器 | portstatsclear / statsclear | clear counters interface fc1/1 |
| 链路测试 | portloopbacktest、D_Port 诊断(portcfgdport、portdporttest) | show interface fc1/1 transceiver details + 通过诊断工具环回 |
| 健康策略 | MAPS(CRC、ITW、信用丢失、SFP 功率/温度的阈值) | port-monitor 策略(RX/TX 功率、CRC、ITW、信用丢失) |
sfpshow 和 transceiver details 会显示厂商、料号、序列号、速率以及带阈值的 DDM 数值——与 CodingBox 在台架上读取的字节相同。两个平台都会标记不受支持的光模块;端口卡在 Mod_Inv、 No_Module 或「unsupported transceiver」是策略拒绝,而非故障(厂商锁定、 FC 光模块)。
故障 FC 端口的诊断顺序
porterrshow/ 计数器:区分物理层问题(enc_out、crc、sync)、拥塞问题(disc_c3、信用)和架构问题(rjt/bsy)。- SFP DDM:对照等级区间检查两端的 Rx 光功率(典型数值);观察 Tx 偏置趋势判断老化情况。
- 清洁并检查连接器;更换跳线;在同速率下重新检查计数器。
- 速率:强制协商到更低的世代速率,看错误是否消失(边缘状态的 32G 链路在 16G 下可能是干净的)—— 速率与传输速度。
- D_Port / 环回测试,以区分交换机、SFP 和线缆。
- 若为拥塞:通过 tim_txcrd_z 找到慢速设备,而不是根据报错的端口来判断。
在 CodingBox 中
从交换机上取下的可疑 FC SFP 可以在台架上读取:身份信息、FC 速率/介质代码、校验和以及实时 DDM,见 Check transceiver 和 DDM。如果模块在台架上正常而在端口上报错,那么怀疑对象就转向线缆、连接器或远端。