主机侧流程:发现、校验与启动 · 规范与标准 · 光模块与线缆 · 文档 · CodingBox
CodingBox 文档

主机侧流程:发现、校验与启动

规范描述的是模块一侧——引脚、存储器、状态。本页描述的是 主机一侧:交换机、路由器或网卡从模块插入那一刻起到流量开始转发为止所执行的流程,以及每一步用到的引脚、字节和时序。了解这一流程,能把"端口显示 unsupported"变成"主机在第 4 步停住了",也能解释为什么一个在台架上完全正常的模块,插到端口里却依然可能失败。

按封装形式划分的低速信号

封装形式在位复位 / 电源中断 / 故障其他
SFP / SFP+ / SFP28MOD_ABS(低电平 = 已插入)—(TX_DISABLE 控制激光器开关)TX_FAULT、RX_LOSRS0、RS1 速率选择
XFPMod_ABSP_Down/RSTInterrupt、Mod_NR(未就绪)、RX_LOSTX_DIS、Mod_DeSel
QSFP+ / QSFP28ModPrsLResetL、LPModeIntLModSelL
QSFP-DDModPrsLResetL、LPModeIntLModSelL
OSFPPRSnRSTn、LPWnINT—(无选择引脚,每端口一条总线)
SFP-DD与 SFP 相同的在位检测方式低功耗请求中断速率选择与 SFP 相同

各系列的引脚功能与引脚定义:SFP 硬件、 QSFP 硬件、XFP。

完整流程

#步骤SFP (SFF-8472)QSFP (SFF-8636)CMIS故障表现
1检测MOD_ABS 变低;去抖ModPrsL 变低ModPrsL / PRSn 变低端口始终为空;模块"未检测到"
2上电与等待3.3 V 始终通电;等待 t_init 300 msLPMode 拉高上电(仅 class 1);等待 t_init 2 s,或轮询 Data_Not_Ready相同;等待模块状态离开 MgmtInit(≤ 2 s)读取返回 FFh / 00h;身份信息为空
3识别读取 A0h 0–95;字节 0 = 03h 时选用 SFF-8472 解析方式读取 0–127 及上页 00h;字节 0 = 0Dh/11h,字节 1 为版本读取低页及上页 00h;字节 0 = 18h/19h…,字节 1 为 CMIS 版本unknown module type
4校验CC_BASE、CC_EXT;标识符/连接器/编码的一致性CC_BASE、CC_EXT页 00h 校验和invalid EEPROM、checksum error — 校验和
5解码类型兼容性字节 3–10、36;速率字节 12/66;长度;波长字节 131–138、192;140/222介质类型字节 85、应用描述符speed and type not supported — 兼容性代码
6策略厂商名称/PN(有时还有签名)与兼容性表比对相同相同unsupported transceiver、errdisable — 厂商锁定
7功耗等级字节 64 等级位与端口功耗预算比对字节 129 等级;写字节 93 以释放低功耗 / 启用 class 5–8字节 200 等级与端口比对;拉低 LPMode 或清除 LowPwrRequestSW → 模块 PwrUp → Ready停留在低功耗,power exceeds — 功耗与热管理
8配置RS0/RS1 或软件速率选择;主机侧速率、FEC、SGMII/1000BASE-XCDR 开/关 (98)、速率选择 (87–88)、主机侧的拆分通道在 staged control set 中选择 AppSel/DataPathID → ApplyDPInit → 数据通路 Init → InitializedLOL、FEC 不匹配、拆分被拒绝 — 速度与速率
9使能 TxTX_DISABLE 引脚拉低,或清除软件位(A2h 110.6)字节 86 = 00h页 10h 字节 130 = 00h → DPTxTurnOn → DPActivated对端读到 −40 dBm — 无链路排查清单
10建链PHY/MAC 检测到信号;DAC 上进行 AN/链路训练每通道相同每条数据通路相同电平正常但链路不通
11监测每隔几秒轮询 A2h 监测量与标志位;TX_FAULT / RX_LOS 引脚IntL → 读取标志位 3–21;轮询监测量IntL → 模块标志位 + 页 11h 通道标志位;VDM告警、闪断 — DDM 数值范围、链路抖动
12拔出MOD_ABS 变高 → 清理状态ModPrsL 变高ModPrsL 变高去抖失败时残留旧状态

对 QSFP 和 CMIS 模块而言,第 3–6 步都发生在 低功耗 状态下:主机会先完成校验,再让光学部分耗电。这就是为什么被锁定或编码错误的模块永远不会点亮激光器,也是为什么一个电气上完全正常的模块,对端却读到 −40 dBm。

主机等待的各项时序

等待SFPQSFPCMIS
插入后管理接口就绪300 ms2 s≤ 2 s(MgmtInit),随后进入 LowPwr 状态
释放低功耗之后—直到 Data_Not_Ready 清零直到模块状态变为 Ready(最长耗时在页 01h 中广播)
数据通路初始化——按步骤广播(半字节编码:< 1 ms … < 50 min)
使能 Tx 到出光t_on ≤ 1 mston_txdis 100 ms / toff 400 msDPTxTurnOn 耗时由模块广播
标志位到中断—ton_IntL 200 ms按硬件规范

总线级时序(t_WR、clock stretch):双线接口。

各主机策略上的差异点

  • 白名单严格程度 — 从"只看厂商名称"到要求带签名的厂商专属信息块,各不相同。
  • 拒绝后的处理方式 — 禁用端口、关闭激光器,或允许链路建立但记录日志(第三方光模块)。
  • CMIS 支持深度 — 从完整的应用/数据通路控制,到仅仅"释放 LPMode、指望模块自己搞定" (CMIS 问题排查)。
  • FEC 与速率默认值 — 可能取自兼容性代码,也可能是静态配置。
  • DDM 轮询 — 轮询间隔、阈值是否触发端口关闭、是否应用外部校准(校准)。

查看主机具体停在哪一步的各厂商 CLI 命令:在交换机上核实光模块。

编程器与主机的区别

像 CodingBox 这样的编程器会执行第 1–5 步和第 11 步,但 没有策略判断:它会读取模块公开的所有内容,包括厂商区和密码字节,除非另行要求,否则会让 CMIS 模块保持在低功耗状态,并且永远不会自行使能激光器。这就是为什么一个模块在台架上看起来完全健康,插到端口里却依然会失败 — 台架环节没有第 6 步。

在 CodingBox 中

Check transceiver 会按主机的视角显示第 3–5 步的结果 — 类型、速率、校验和、功耗等级 — 并在模块进入端口之前标记出不一致之处; DDM 则用实时监测量和标志位覆盖第 11 步。

第 6 步(策略)背后的硬件基础,以及第 8 步背后的端口组限制: 交换机内部结构、各家 NOS 如何校验模块。


如果您发现本资料中有不准确之处或错误,请选中相应片段并按 Ctrl+Enter,即可。