CodingBox ドキュメント

チェックサム:CC_BASE、CC_EXT、CC_DMI、CMIS ページ

どの管理仕様も、識別ブロックを1つ以上のチェックサムで保護しています。これは、ホストが内容を信頼する前に破損または書きかけの EEPROM を検出できるようにする1バイトの値です。計算は簡単ですが忘れやすく、編集後にチェックサムを更新し忘れることが、コーディングしたばかりのモジュールがinvalidと報告される最も多い原因です。

アルゴリズム

すべて同じ規則に従います。対象範囲のバイトを符号なし8ビット値として加算し、合計の下位8ビットを保持する(合計を256で割った余り)。CRC も多項式も使いません。

sum = 0
for each byte b in range:
    sum = (sum + b) & 0xFF
checksum = sum

例 — 10GBASE-SR SFP の最初の5バイト:03 04 07 10 00 → 3 + 4 + 7 + 16 + 0 = 30 = 1Eh。バイト62まで続けると、その結果が CC_BASE になります。

各チェックサムの位置

仕様チェックサム位置対象範囲
SFF-8472(SFP)CC_BASEA0h バイト 63A0h バイト 0–62
SFF-8472CC_EXTA0h バイト 95A0h バイト 64–94
SFF-8472CC_DMIA2h バイト 95A2h バイト 0–94(しきい値と校正定数)
SFF-8636(QSFP)CC_BASEバイト 191上位ページ 00h バイト 128–190
SFF-8636CC_EXTバイト 223バイト 192–222
INF-8077i(XFP)CC_BASEバイト 191バイト 128–190
INF-8077iCC_EXTバイト 223バイト 192–222
CMISページチェックサムページ 00h バイト 222ページ 00h バイト 128–221
CMISページチェックサムページ 01h バイト 255ページ 01h バイト 130–254(128–129 は非アクティブ側のファームウェアバージョンが格納されており、対象外)
CMISページチェックサムページ 02h バイト 255ページ 02h バイト 128–254
CMISページチェックサムページ 04h バイト 255ページ 04h バイト 128–254

どのチェックサムにも保護されない範囲:ベンダー固有領域(SFP A0h 96–127、QSFP 224–255、CMIS 223–255)、ユーザー EEPROM、リアルタイムの監視値とフラグ、QSFP のページ 03h のしきい値、CMIS のレーンページです。ベンダーは独自の整合性フィールドをベンダー領域に追加することがありますが、それらは仕様の一部ではありません。

ホストの挙動

挙動チェックサム不正時の結果
CC_BASE を検証する(ほとんどのスイッチとルーター)モジュールが invalidunsupportedEEPROM checksum error のいずれかとして表示される。ポートが errdisable になることがある。レーザーが無効のままになることが多い
CC_EXT も検証する同様、またはプラットフォームによってはログに記録されるだけ
CC_DMI を検証するDDM が not supported と表示されるか、値が無視される。リンク自体には影響しない
チェックサムを無視する(多くの NIC、一部のオープンスイッチ)モジュールは動作する。エラーはツール上にのみ現れる

チェックサムエラーは識別情報と一緒に報告されるため、ポリシーの問題も抱えるモジュールでは一方のメッセージがもう一方を隠してしまいます。まずチェックサムを確認してください、修正は簡単です。症状の一覧:症状インデックス

再計算が必要な場合

  • 対象範囲内の何かを編集した後 — ベンダー名、型番、シリアル、日付コード、コンプライアンスコード、波長、長さ、オプション、電力クラス。
  • SFP にしきい値または校正定数を適用した後(CC_DMI)。
  • 別のモジュールから部分的なイメージを復元した後。
  • ベンダー領域、ユーザー EEPROM、A2h の制御バイトの変更では不要です。

操作の順序:編集 → 影響を受けるすべてのチェックサムを再計算 → 書き込み → 読み戻し → 検証。対象データより前にチェックサムバイトを書き込むと、その間に電源が失われた場合にモジュールが無効になる可能性があります。

チェックサムとベンダーロック

正しいチェックサムは必要条件であって十分条件ではありません。厳格なプラットフォームは、ベンダーブロックも確認し、ロックされた設計では仕様のチェックサムが関知しない、ベンダー領域内の専用署名も確認します。CC_BASE は通過するのに識別情報が拒否される場合は、チェックサムの問題ではなくベンダーロックの問題です — ベンダーロックベンダーフィールド

CodingBox では

CodingBox は書き込みのたびに CC_BASE、CC_EXT、CC_DMI、CMIS のページチェックサムを自動的に再計算し、モジュールを読み取る際に不一致があれば強調表示します。Check transceiver または EEPROM editor でチェックサムのフィールドが赤く表示されている場合、モジュールが他の場所で編集されて修正されていないか、EEPROM が破損していることを意味します。

各チェックサムが周囲のバイトの中でどこに位置するか:SFF-8472 A0h(63、95)、A2h(95)、SFF-8636 上位ページ(191、223)、CMIS 上位ページ(222、255)、XFP(191、223)。


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