閾值、警報與旗標
光模組不僅報告數值,還攜帶用於判斷這些數值的限值,並在超出限值時置位旗標。交換機從模組記憶體中讀取這一切,不會憑空生成任何內容。這就是為甚麼兩個外觀相同的光模組在同一條鏈路上可能表現不同。
每個參數的四個閾值
每個 DDM 參數都有四個出廠編程的限值:
| 閾值 | 含義 |
|---|---|
| 高警報 | 數值高於此限 → 模組可能出現故障或鏈路不可用 |
| 高警告 | 接近高限值 |
| 低警告 | 接近低限值 |
| 低警報 | 數值低於此限 → 例如 Rx 低於接收靈敏度 |
這四個閾值劃出三個區間:正常(兩個警告值之間)、警告(警告值與對應警報值之間)和警報(超出警報值)。一款健康的 10 km 模組的 Rx 閾值大致為 +0.5 / −2 / −18 / −22 dBm(HA / HW / LW / LA),但具體數值由各廠商自行設定。
儲存位置 — SFF-8472
A2h byte 0–39,每個閾值佔兩個位元組,單位與監測值相同(參數與單位):
| 位元組 | 參數(HA、LA、HW、LW) |
|---|---|
| 0–7 | 溫度 |
| 8–15 | Vcc |
| 16–23 | Tx 偏置電流 |
| 24–31 | Tx 功率 |
| 32–39 | Rx 功率 |
| 40–55 | 可選擴展閾值(激光器溫度、TEC) |
每組內部的順序為高警報、低警報、高警告、低警告。
旗標 — 主機實際依據的內容
| A2h 位元組 | 內容 |
|---|---|
| 110 | 狀態/控制:TX_DISABLE 狀態、RS0/RS1 狀態、TX_FAULT、RX_LOS、data-ready |
| 112–113 | 警報旗標 — 每個參數各佔一位,分高、低 |
| 116–117 | 警告旗標 — 每個參數各佔一位,分高、低 |
數值越過閾值時,模組置位對應旗標,數值恢復時清零。主機顯示「Rx power low alarm」,實際只是讀取了 byte 113 的第 1 位,僅此而已。旗標是否實現,由 A0h byte 93 第 7 位聲明。
QSFP 與 CMIS
同樣的模型也適用,只是旗標按通道劃分:
- SFF-8636 — 模組閾值位於上層頁面 03h byte 128–175(溫度、Vcc),通道閾值位於 byte 176–223(Rx power、Tx bias、Tx power);旗標位於下層頁面 byte 3–14(LOS/fault/LOL 位於 3–5,溫度和 Vcc 警報位於 6–7,各通道功率和偏置警報位於 9–14)。
- CMIS — 模組閾值位於 page 02h,通道閾值位於同一頁面後續位置;模組旗標位於下層 byte 8–13,通道旗標位於 page 11h byte 134–153。
參見多通道診斷。
為甚麼「無警報」不等於「健康」
閾值是模組廠商對自身限值的判斷,而不是對鏈路的判斷。常見後果:
- 閾值設定寬鬆 — 某模組的 Rx 低警報設在 −24 dBm,而接收端在 −20 dBm 時已經開始出錯,此時模組仍不會警報。
- 虛假的 Tx 讀數 — 固定不變的 Tx 數值永遠不會越過閾值。
- 鏈路預算關乎餘量,而非限值:一條鏈路在 −17 dBm 運行、警報設在 −18 dBm,只有 1 dB 餘量,接頭稍有污染就會失效。
因此,運維警報應基於自有基線和變化量(監測),將模組旗標作為兜底手段。
編輯閾值
由於閾值存放在模組記憶體中,可以讀取和改寫。合理的用途包括:為寫入全零的模組恢復合理限值、統一一批模組的設定,或收緊警告值以更早獲得提醒。受保護的 A2h 區域通常需要模組的密碼。
在 CodingBox 中
DDM 介面直接在曲線圖上繪出模組的警報和警告閾值,並按區間對數值著色。閾值 byte 0–39 和旗標 112–117 在 EEPROM editor 中可見可編輯,寫入時自動重新計算校驗和 CC_DMI(byte 95)。
每個閾值、旗標和掩碼的確切位元組位置:SFF-8472 A2h 映射表、 SFF-8636 下層頁面與 03h 頁面、 CMIS 02h 頁面與 11h 頁面。