主機端流程:發現、驗證與啟動
規範描述的是模組一側——引腳、記憶體、狀態。本頁描述的是 主機一側:交換機、路由器或網卡從模組插入那一刻起到流量開始轉發為止所執行的流程,以及每一步用到的引腳、位元組和時序。了解這一流程,能把「端口顯示 unsupported」變成「主機在第 4 步停住了」,也能解釋為甚麼一個在台架上完全正常的模組,插到端口裏卻依然可能失敗。
按封裝形式劃分的低速信號
| 封裝形式 | 在位 | 復位 / 電源 | 中斷 / 故障 | 其他 |
|---|---|---|---|---|
| SFP / SFP+ / SFP28 | MOD_ABS(低電平 = 已插入) | —(TX_DISABLE 控制激光器開關) | TX_FAULT、RX_LOS | RS0、RS1 速率選擇 |
| XFP | Mod_ABS | P_Down/RST | Interrupt、Mod_NR(未就緒)、RX_LOS | TX_DIS、Mod_DeSel |
| QSFP+ / QSFP28 | ModPrsL | ResetL、LPMode | IntL | ModSelL |
| QSFP-DD | ModPrsL | ResetL、LPMode | IntL | ModSelL |
| OSFP | PRSn | RSTn、LPWn | INT | —(無選擇引腳,每端口一條總線) |
| 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 ms | LPMode 拉高上電(僅 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-X | CDR 開/關 (98)、速率選擇 (87–88)、主機側的拆分通道 | 在 staged control set 中選擇 AppSel/DataPathID → ApplyDPInit → 數據通路 Init → Initialized | LOL、FEC 不匹配、拆分被拒絕 — 速度與速率 |
| 9 | 使能 Tx | TX_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。
主機等待的各項時序
| 等待 | SFP | QSFP | CMIS |
|---|---|---|---|
| 插入後管理介面就緒 | 300 ms | 2 s | ≤ 2 s(MgmtInit),隨後進入 LowPwr 狀態 |
| 釋放低功耗之後 | — | 直到 Data_Not_Ready 清零 | 直到模組狀態變為 Ready(最長耗時在頁面 01h 中廣播) |
| 數據通路初始化 | — | — | 按步驟廣播(半位元組編碼:< 1 ms … < 50 min) |
| 使能 Tx 到出光 | t_on ≤ 1 ms | ton_txdis 100 ms / toff 400 ms | DPTxTurnOn 耗時由模組廣播 |
| 旗標到中斷 | — | 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 如何校驗模組。