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 計數器不在模組和編程器的範圍內,它們來自交換機。