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 EEPROMchecksum 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,即可