CodingBox ドキュメント

ホストの処理:検出、検証、起動

仕様書が記述するのはモジュール側、すなわちピン、メモリ、状態です。このページが記述するのは ホスト側、すなわちモジュールが挿入された瞬間からトラフィックが流れ始めるまでにスイッチ、ルーター、NIC がたどる手順であり、各ステップで使われるピン、バイト、タイミングです。これを知っていれば、「ポートが unsupported と言っている」が「ホストがステップ4で止まっている」に変わり、ベンチでは完璧に見えるモジュールがポートでは動かないことがある理由も分かります。

フォームファクターごとの低速信号

フォームファクター存在検出リセット/電源割り込み/障害その他
SFP / SFP+ / SFP28MOD_ABS(low = 装着)—(TX_DISABLE がレーザーをゲート)TX_FAULT、RX_LOSRS0、RS1 レート選択
XFPMod_ABSP_Down/RSTInterrupt、Mod_NR(not ready)、RX_LOSTX_DIS、Mod_DeSel
QSFP+ / QSFP28ModPrsLResetL、LPModeIntLModSelL
QSFP-DDModPrsLResetL、LPModeIntLModSelL
OSFPPRSnRSTn、LPWnINT—(セレクトピンなし、ポートごとに1本のバス)
SFP-DDSFP と同様にモジュール不在を示す低電力リクエスト割り込みSFP と同様のレート選択

ファミリーごとのピン機能とピン配列:SFP ハードウェアQSFP ハードウェアXFP

手順

#ステップSFP(SFF-8472)QSFP(SFF-8636)CMIS失敗の見え方
1検出MOD_ABS が low になる;デバウンスModPrsL が lowModPrsL / PRSn が lowポートが空のまま;モジュール「未検出」
2電源投入と待機3.3 V は常時オン;t_init 300 ms 待機LPMode を high にして電源投入(クラス 1 のみ);t_init 2 s 待機、または Data_Not_Ready をポーリング同様;モジュール状態が MgmtInit を抜けるまで待機(≤ 2 s)読み取り結果が FFh / 00h;識別情報が空白
3識別A0h 0–95 を読み取り;byte 0 = 03h で SFF-8472 パーサーを選択0–127 と上位 00h を読み取り;byte 0 = 0Dh/11h、byte 1 はリビジョン下位ページと上位 00h を読み取り;byte 0 = 18h/19h…、byte 1 は CMIS バージョンunknown module type
4検証CC_BASE、CC_EXT;識別子/コネクター/符号化方式の整合性CC_BASE、CC_EXTpage 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電力クラスbyte 64 のレベルビットとポートの予算を比較byte 129 のクラス;byte 93 に書き込んで低電力を解除/クラス 5–8 を有効化byte 200 のクラスとポートを比較;LPMode をネゲートするか LowPwrRequestSW をクリア → モジュール PwrUp → Ready低電力のまま保持、power exceeds電力と熱
8設定RS0/RS1 またはソフトレート選択;ホスト側の速度、FEC、SGMII/1000BASE-XCDR on/off(98)、レート選択(87–88)、ホスト側のブレークアウトレーンステージドコントロールセットで AppSel/DataPathID を選択 → ApplyDPInit → data path Init → InitializedLOL、FEC の不一致、ブレークアウト拒否 — 速度とレート
9Tx 有効化TX_DISABLE ピンを low にする、またはソフトビットをクリア(A2h 110.6)byte 86 = 00hpage 10h byte 130 = 00h → DPTxTurnOn → DPActivated遠端は −40 dBm を検出 — リンク不通チェックリスト
10リンク確立PHY/MAC が信号を検出;DAC では AN/リンクトレーニングレーンごとに同様データパスごとに同様レベルは正常なのにリンクダウン
11監視数秒ごとに A2h の監視項目とフラグをポーリング;TX_FAULT / RX_LOS ピンIntL → flags 3–21 を読み取り;監視項目をポーリングIntL → モジュールフラグ + page 11h のレーンフラグ;VDMアラーム、フラッピング — DDM の値リンクフラッピング
12取り外しMOD_ABS が high → 後処理ModPrsL が highModPrsL が highデバウンスを逃すと状態が残留

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、クロックストレッチ): 2線式インターフェース

ホストによってポリシーが分かれる点

  • ホワイトリストの厳格さ — 「ベンダー名のみ」から、署名付きのベンダー固有ブロックまで。
  • 拒否された場合の挙動 — ポート無効化、レーザーオフ、あるいはログを残してリンクを許可(サードパーティ製光モジュール)。
  • CMIS 対応の深さ — フルのアプリケーション/データパス制御か、「LPMode を解除して祈る」だけか(CMIS の問題)。
  • FEC と速度の既定値 — コンプライアンスコードから導くか、静的に設定するか。
  • DDM ポーリング — 間隔、しきい値超過でポートをシャットダウンするか、外部校正を適用するか(校正)。

ホストがどこで止まったかを確認するベンダーごとの CLI: スイッチでの光モジュール検証

プログラマーとホストの違い

CodingBox のようなプログラマーは、ステップ 1–5 と 11 を実行しますが、ポリシーはありません。ベンダー領域やパスワードバイトを含め、モジュールが公開するものすべてを読み取り、指示がない限り CMIS モジュールを低電力のまま保ち、レーザーを自ら有効化することは決してありません。ベンチでは健全に見えるモジュールがポートでは動かないことがあるのはこのためです — ベンチにはステップ6がないのです。

CodingBox では

Check transceiver は、ステップ 3–5 の結果をホストが見るのと同じ形で表示します。種別、レート、チェックサム、電力クラスです。モジュールがポートに届く前に不整合を検出します。DDM は、リアルタイムの監視項目とフラグでステップ 11 をカバーします。

ステップ 6(ポリシー)の背後にあるハードウェアと、ステップ 8 の背後にあるポートグループの制限:スイッチの内部NOS ごとのモジュール検証方法


この記事に不正確な点や誤りを見つけた場合は、該当する箇所を選択して Ctrl+Enter を押すと、できます。