各 NOS 如何校验模块
从"检测到模块"到"端口 up"之间,每种网络操作系统都会对模块身份做一次校验。校验的内容、比对失败时的处理方式,以及管理员能否绕过校验,因厂商、平台和版本而不同——这种差异正是光模块兼容性问题的全部内容。本页把各厂商文档记载和现场观察到的行为并列呈现,使台架上读出的模块信息可以对照目标设备来判断。
可以检查的内容
| 检查项 | 涉及的字节 | 谁在做 |
|---|---|---|
| 校验和 CC_BASE / CC_EXT | SFP 63/95、QSFP 191/223、CMIS 222/255 | 几乎所有平台——失败即为无效 EEPROM(校验和) |
| 标识符/连接器/编码一致性 | SFP 0、2、11;QSFP 0、130、139 | 大多数平台;未知类型会如实显示 |
| 合规代码与端口匹配 | SFP 3–10、36;QSFP 131–138、192;CMIS Applications | 大多数平台——speed and type not supported(合规代码) |
| 厂商名称 + 部件号 与列表比对 | SFP 20–35、40–55;QSFP 148–163、168–183 | 严格和半严格平台(部件编号) |
| 厂商专有签名 | 厂商区域(SFP 96–127、QSFP 224–255、CMIS custom) | 少数 OEM;与序列号绑定的哈希值 |
| 序列号格式/日期代码 | SFP 68–91;QSFP 196–219 | 少见;由支持工程师人工查看 |
| 功率等级与端口匹配 | SFP 64;QSFP 129/107;CMIS 200–201 | 所有实现了功耗管理的平台(功率与散热) |
各厂商的行为
以下是近期版本中公开的命令和行为;细节因平台和版本而异。
| 厂商 / NOS | 检查内容 | 失败后的表现 | 绕过方式 | 第三方模块的 DDM |
|---|---|---|---|---|
| Cisco IOS / IOS-XE(Catalyst、ISR) | 厂商/PN 列表和厂商专有检查;校验和 | %PHY-4-UNSUPPORTED_TRANSCEIVER,端口 errdisabled(gbic-invalid),激光器关闭 | service unsupported-transceiver(隐藏命令)+ no errdisable detect cause gbic-invalid;并非所有平台都支持;TAC 不提供支持 | 接受后可显示;部分字段为空 |
| Cisco NX-OS(Nexus) | 同上,多数数据中心平台上更宽松 | 通常 up 并记录日志;严格的 SKU 会 errdisable | service unsupported-transceiver | 通常显示 |
| Cisco IOS-XR | 按平台的光模块列表、功率等级 | unsupported 状态,端口可能保持 down | 有限;因平台而异 | 部分支持 |
| Arista EOS | 校验和、类型一致性 | 记录 unsupported 日志;链路正常 up | 无需绕过 | 完整 |
| Juniper Junos | 厂商/PN 列表用于判定"supported"标签、校验和 | 链路通常 up;show chassis pic 标记为 unsupported;部分 EX/QFX 平台对未知 PN 不提供 DDM 或限制速率 | 无官方方式 | 已知 PN 完整,未知 PN 部分支持 |
| Huawei VRP | 厂商/PN;非华为模块 → 告警 | 链路 up,但持续出现 phony 光模块告警;部分平台会限制 | transceiver phony-alarm-disable(系统视图) | 完整 |
| H3C Comware | 与 VRP 相同 | 告警 | transceiver phony-alarm-disable | 完整 |
| HPE Aruba AOS-S / AOS-CX | 厂商/PN 列表 | unsupported,端口 down | allow-unsupported-transceiver | 完整 |
| Dell OS10 / OS9 / PowerConnect | 校验和;部分老设备有列表检查 | 记录日志;老设备:errdisable | service unsupported-transceiver(老版本) | 完整 |
| Extreme EXOS / VOSS | 校验和、类型 | 记录日志,up | — | 完整 |
| Ruckus/Brocade ICX(FastIron) | 校验和;部分平台仅对 Brocade PN 提供光功率监测 | up;DDM 可能缺失 | — | 部分支持 |
| Brocade FOS(SAN) | 大多数 Gen 5/6/7 平台要求 Brocade 品牌 PN 和序列号 | 端口 Mod_Inv,未启用 | 无 | 仅限 Brocade 光模块 |
| Nvidia/Mellanox(Onyx、Cumulus、IB) | 以太网:校验和、类型;InfiniBand:线缆信息由 fabric manager 校验 | 以太网 up 并记录日志;IB 可能降速运行或标记 | — | 完整 |
| SONiC / 白牌 | 平台插件:校验和、CMIS 解析 | up;未知字段按原始值显示 | — | 完整(取决于插件) |
| MikroTik RouterOS / SwOS | 除解析外无其他检查 | up | — | 完整 |
| Ubiquiti | 除解析外无其他检查 | up | — | 完整 |
| 服务器网卡(Intel、Broadcom、Mellanox) | 部分 Intel 系列有驱动白名单 | 驱动拒绝启用端口 | allow_unsupported_sfp=1 模块参数(Intel ixgbe/i40e) | 通过 ethtool -m |
厂商如果提供了绕过方式,通常是"按现状"提供的:模块可以工作,但厂商不承诺支持这种组合。是否在机队中使用,由网络负责人决定(第三方光模块)。
"改码为厂商 X"需要满足什么
| 平台类别 | 被接受的最低要求 | 还建议做到 |
|---|---|---|
| 宽松型(Arista、SONiC、MikroTik、Extreme…) | 校验和有效、类型代码一致 | 使用真实厂商名称和 PN——改码为 OEM 并无收益 |
| 列表检查型(Juniper、Aruba、Huawei/H3C,以及多数 NX-OS SKU) | 厂商名称和 PN 与平台列表完全一致,端口的合规代码正确 | 匹配的 PN 后缀/等级;合理的序列号和日期代码 |
| 签名检查型(Cisco IOS/IOS-XE,部分 XR) | 以上全部要求,加上针对该序列号计算出的厂商专有区域 | 身份字段与 PN 一致(波长、传输距离、技术类型) |
| 仅认品牌型(Brocade FOS) | Brocade 厂商字符串和 PN 系列、序列号格式 | — |
解读拒绝信息
| 日志/状态文本 | 含义 | 下一步 |
|---|---|---|
unsupported transceiver、Mod_Inv、phony | 身份不在列表中 | 使用绕过方式,或改码为列表内的 PN |
invalid EEPROM、checksum error | CC_BASE/CC_EXT 错误 | 重新计算(校验和) |
speed and type not supported、unknown media type | 合规代码与端口不匹配 | 修正代码,或使用其他端口模式(速率) |
power class exceeds,卡在 LowPwr | 功率等级与笼子不匹配 | 功率与散热 |
Module not ready,DP 状态卡住 | CMIS 启动过程 | CMIS 问题 |
各 NOS 下查看这些状态的命令:在交换机上验证光模块。
软件升级带来的变化
厂商在版本之间收紧或放宽检查:新的签名校验、新的支持光模块列表、被移除的隐藏命令、变化的 DDM 处理方式。昨天还能正常工作的一批第三方或改码光模块,升级后可能变成 errdisabled(兼容性矩阵与固件)。
在 CodingBox 中
CodingBox 会显示上述每项检查所读取的确切字节——厂商名称、PN、校验和、合规代码、功率等级——Code database 中保存着某个平台类别可以接受的身份信息。改码后要在测试端口上验证;最终结论由交换机而不是台架给出(Check transceiver)。
服务器侧的对应内容——各网卡厂商的驱动白名单、Intel 绕过方式、Windows 和 ESXi 的行为:网卡上的光模块兼容性。