VDM 与 FEC 指标:PAM4 链路
在每通道 50G 及以上速率下,光功率本身已不足以说明链路的健康状况:一条 Rx 功率完全正常的 PAM4 链路,可能只差一个脏污连接器就会出现不可纠正错误,而最先出现的征兆不是某个 dBm 读数,而是误码率。这个数字来自两个来源:在模块内部,CMIS 的 VDM(多功能诊断监测)按通道报告 pre-FEC BER、SNR 和激光器健康状态;在主机侧,FEC 解码器统计已纠正和未纠正的码字数量。两者结合,可以在链路仍无损传输业务时,显示它距离失效还有多远。
FEC 为何改变了诊断方式
每一种基于 PAM4 的 25G+ 以太网 PMD(以及大多数 25G NRZ PMD)都以 Reed-Solomon FEC 为前提。光模块允许输出 10⁻⁵–10⁻⁴ 的原始误码率,因为 FEC 会将其修正到 10⁻¹² 或更好。由此带来的后果是:一条正在劣化的链路,在 MAC 层看来完全没有错误,直到越过 FEC 的纠正极限才会突然失效。pre-FEC BER 是唯一能平滑反映余量变化的指标。
| FEC | 编码 | 每码字纠正能力 | 输出达到 10⁻¹² 所需的 pre-FEC BER 上限(近似值) | 应用场景 |
|---|---|---|---|---|
| BASE-R(“FC-FEC”,Clause 74) | Fire 码 (2112, 2080) | 11 位突发 | ≈ 10⁻⁷ … 10⁻⁸,增益约 2 dB | 10G/25G NRZ、CA-25G-S |
| RS-FEC KR4(Clause 91/108) | RS(528, 514) 基于 GF(2¹⁰) | 7 个符号 | ≈ 5 × 10⁻⁵ | 25GBASE-CR/SR/LR、100GBASE-SR4/CWDM4/CR4 |
| RS-FEC KP4(Clause 119/134) | RS(544, 514) | 15 个符号 | ≈ 2.4 × 10⁻⁴ | 所有 50G PAM4 通道:50G/100G/200G/400G/800G |
| 级联码 / oFEC(相干) | 内码 + 外码 | — | ≈ 10⁻² … 2 × 10⁻² | 400ZR (CFEC)、OpenZR+ (oFEC) |
配置不匹配的情况:FEC、自动协商与链路训练。
VDM:模块报告的内容
VDM 位于 CMIS 页 20h–2Fh 中(按每 8 通道分 bank),并在页 01h 中声明其支持能力。每个可观测量都有一个描述符(类型、通道)、一个实时采样值、四个阈值和标志位,与经典监测量完全一样。
| 页 | 内容 |
|---|---|
| 20h–23h | 描述符:对应哪个可观测量、哪个通道、使用哪一组阈值 |
| 24h–27h | 采样值(每个 2 字节) |
| 28h–2Bh | 阈值:高/低告警,高/低预警 |
| 2Ch–2Fh | 标志位与掩码 |
可观测量类型(CMIS 4.0/5.x)
| ID | 可观测量 | 单位/格式 | 含义 |
|---|---|---|---|
| 1 | 激光器寿命消耗 | % (U16) | 厂商估算的已消耗寿命 |
| 2 | TEC 电流 | 占最大值的 % (S16) | 制冷器负载,参见 温度与电压 |
| 3 | 激光器频率误差 | MHz (S16) | DWDM/ZR:偏离标准频率栅格的程度 |
| 4 | 激光器温度 | °C (S16, 1/256) | 制冷型激光器 |
| 5 / 6 | eSNR,媒质侧/主机侧输入 | dB (U16, 1/256) | 均衡后的电域信噪比,即 PAM4 的“眼高”;> 18–20 dB 为理想水平,< 15 dB 为临界水平(因厂商而异) |
| 7 / 8 | PAM4 电平转换参数,媒质侧/主机侧 | dB | 四个电平的线性度 |
| 9 / 10 | pre-FEC BER 最小值,媒质侧/主机侧 | F16 | 统计区间内的最优值 |
| 11 / 12 | pre-FEC BER 最大值 | F16 | 统计区间内的最差值,是应设置告警的数值 |
| 13 / 14 | pre-FEC BER 平均值 | F16 | — |
| 15 / 16 | pre-FEC BER 当前值 | F16 | 最近一次采样 |
| 17–24 | FERC(帧误码率计数,frame error ratio count)最小/最大/平均/当前值,媒质侧/主机侧 | F16 | FEC 之后仍不可纠正的帧数,应为 0 |
| 128+ | 相干参数集(CMIS 5.x):调制器偏置、CD、DGD、SOPMD、OSNR、eSNR、Q 因子、Rx 总功率/信号功率、载波频率偏移… | 各不相同 | 400ZR/ZR+ 模块 |
F16 是 CMIS 的 16 位比率格式:5 位指数加 11 位尾数,数值 = 尾数 × 10^(指数 − 24)。例如 1.5 × 10⁻⁶ 的 pre-FEC BER 存储为尾数 1500、指数 15。媒质侧指光纤线路;主机侧指到交换机 ASIC 的电接口:主机侧 BER 异常,说明问题出在连接器或板卡,而不是光纤。
主机侧 FEC 计数器
交换机或网卡按端口(通常也按通道)统计以下计数:
| 计数器 | 健康 | 警戒 | 故障 |
|---|---|---|---|
| 已纠正码字数 | 缓慢增长(pre-FEC BER 10⁻⁸ … 10⁻⁶) | 快速增长(KP4 下达到 10⁻⁵) | 接近极限 |
| 不可纠正码字数 | 0 | 出现任何增量 | 持续增长 = 丢帧 |
| 每通道符号错误数 | 各通道均衡 | 某一通道明显偏高 | 该通道的光纤/连接器/激光器有问题 |
| pre-FEC BER(推算值) | < 10⁻⁷ | 10⁻⁶ … 10⁻⁵ | > 10⁻⁴ (KP4) |
查看位置:大多数 NOS 上是 show interfaces … fec / phy detail(验证光模块);Linux 上是 ethtool -S(fec_corrected_blocks、fec_uncorrectable_blocks)和 ethtool --show-fec;SONiC 上是 show interfaces counters fec。计数器是累计值,应先清零,再观察其变化速率。
综合解读两类指标
| Rx 功率 | Pre-FEC BER / eSNR | 不可纠正错误 | 诊断结论 |
|---|---|---|---|
| 在窗口内 | < 10⁻⁷,eSNR 高 | 0 | 健康且有余量 |
| 在窗口内 | 10⁻⁵,某一通道 eSNR 下降 | 0 | 该通道正在劣化:MPO 光纤污染、VCSEL 老化、连接器接近临界,应在失效前处理(逐通道诊断) |
| 偏低 | 偏高 | 有 | 预算问题,参见 Rx 功率与链路预算 |
| 在窗口内,两端均是 | 主机侧偏高 | 有 | 电气问题:笼子/连接器接触、板卡、DAC 质量、均衡设置错误 |
| 在窗口内 | 媒质侧偏高,所有通道 | 有 | 色散、传输距离等级不匹配、波长偏离复用器通道、极性部分接反 |
| 正常 | 0 错误,链路闪断 | 0 | 不是信号问题:FEC/自动协商不匹配、热问题或软件问题 |
阈值与告警
VDM 阈值由厂商设定;pre-FEC BER 的典型高预警值约为 FEC 极限的十分之一(KP4 下为 2 × 10⁻⁵)。用于告警时应关注变化速率和趋势:只要 pre-FEC BER 在一周内上升一个数量级,无论是否越过阈值都应作为工单处理(监测)。FEC 之后仍出现的不可纠正错误,任何时候都是一次事故。
VDM 缺失的场景
SFF-8472 和 SFF-8636 模块没有 VDM:10G/25G/100G NRZ 链路只能依靠主机侧 FEC 计数器和 Rx 功率。部分 SFF-8636 模块会在页 20h–21h 或厂商自定义字节中提供厂商私有的 SNR 或 BER,但只能用厂商自己的工具读取。对于没有 FEC 的 NRZ 链路(10G LR、1G),接口上的 CRC/输入错误计数器是唯一的比特级视图。
在 CodingBox 中
对于 CMIS 模块,CodingBox 会读取 VDM 描述符和采样值,并在 DDM 页面中按通道与经典监测量一并显示,同时将 F16 比率解码为普通数值。主机侧的 FEC 计数器不在模块和编程器的范围内,它们来自交换机。