Checksum: CC_BASE, CC_EXT, CC_DMI, halaman CMIS
Setiap spesifikasi manajemen melindungi blok identitasnya dengan satu atau lebih checksum — satu byte yang memungkinkan host mendeteksi EEPROM yang rusak atau setengah tertulis sebelum ia memercayai isinya. Checksum ini sepele untuk dihitung dan mudah dilupakan: checksum yang kedaluwarsa setelah pengeditan adalah alasan paling umum sebuah modul yang baru saja di-coding dilaporkan sebagai invalid.
Algoritme
Semuanya menggunakan aturan yang sama: jumlahkan byte dari rentang yang dicakup sebagai nilai 8-bit tak bertanda dan simpan 8 bit terendah dari hasil penjumlahannya (jumlah modulo 256). Tidak ada CRC, tidak ada polinomial.
sum = 0
untuk setiap byte b dalam rentang:
sum = (sum + b) & 0xFF
checksum = sum
Contoh — lima byte pertama dari SFP 10GBASE-SR: 03 04 07 10 00 → 3 + 4 + 7 + 16 + 0 = 30 = 1Eh. Lanjutkan hingga byte 62 dan hasilnya adalah CC_BASE.
Tempat masing-masing checksum berada
| Spesifikasi | Checksum | Lokasi | Cakupan |
|---|---|---|---|
| SFF-8472 (SFP) | CC_BASE | A0h byte 63 | A0h byte 0–62 |
| SFF-8472 | CC_EXT | A0h byte 95 | A0h byte 64–94 |
| SFF-8472 | CC_DMI | A2h byte 95 | A2h byte 0–94 (ambang dan konstanta kalibrasi) |
| SFF-8636 (QSFP) | CC_BASE | byte 191 | halaman atas 00h byte 128–190 |
| SFF-8636 | CC_EXT | byte 223 | byte 192–222 |
| INF-8077i (XFP) | CC_BASE | byte 191 | byte 128–190 |
| INF-8077i | CC_EXT | byte 223 | byte 192–222 |
| CMIS | checksum halaman | halaman 00h byte 222 | halaman 00h byte 128–221 |
| CMIS | checksum halaman | halaman 01h byte 255 | halaman 01h byte 130–254 (128–129 menyimpan versi firmware tidak aktif dan dikecualikan) |
| CMIS | checksum halaman | halaman 02h byte 255 | halaman 02h byte 128–254 |
| CMIS | checksum halaman | halaman 04h byte 255 | halaman 04h byte 128–254 |
Tidak dicakup oleh checksum apa pun: area khusus vendor (SFP A0h 96–127, QSFP 224–255, CMIS 223–255), EEPROM pengguna, monitor dan flag yang live, ambang halaman 03h QSFP, dan halaman lane CMIS. Vendor dapat menambahkan bidang integritasnya sendiri di ruang vendor — bidang tersebut bukan bagian dari spesifikasi.
Apa yang dilakukan host terhadapnya
| Perilaku | Hasil dari checksum yang salah |
|---|---|
| Memvalidasi CC_BASE (sebagian besar switch dan router) | modul ditampilkan sebagai invalid, unsupported, atau EEPROM checksum error; port dapat errdisable; laser sering dibiarkan mati |
| Memvalidasi CC_EXT juga | sama, atau hanya entri log, tergantung platform |
| Memvalidasi CC_DMI | DDM ditampilkan sebagai not supported atau nilainya diabaikan; link itu sendiri tidak terpengaruh |
| Mengabaikan checksum (banyak NIC, sebagian switch terbuka) | modul berfungsi; kesalahan hanya muncul di tool |
Kegagalan checksum dilaporkan bersama identitas, sehingga modul yang juga memiliki masalah kebijakan menampilkan satu pesan yang menutupi pesan lainnya — periksa checksum terlebih dahulu, itu adalah perbaikan yang murah. Peta gejala: Indeks gejala.
Kapan Anda harus menghitung ulang
- Setelah mengedit apa pun dalam rentang yang dicakup — nama vendor, nomor part, serial, kode tanggal, kode kepatuhan, panjang gelombang, panjang, opsi, kelas daya.
- Setelah menerapkan ambang atau konstanta kalibrasi pada SFP (CC_DMI).
- Setelah memulihkan image parsial dari modul lain.
- Tidak diperlukan untuk perubahan di ruang vendor, EEPROM pengguna, atau byte kontrol A2h.
Urutan operasi: edit → hitung ulang setiap checksum yang terpengaruh → tulis → baca kembali → verifikasi. Menulis byte checksum sebelum data yang dicakupnya meninggalkan sebuah celah waktu ketika kehilangan daya menghasilkan modul yang tidak valid.
Checksum dan penguncian vendor
Checksum yang benar itu perlu, tetapi tidak cukup. Platform yang ketat juga memeriksa blok vendor dan, pada desain yang terkunci, sebuah signature proprietary di ruang vendor yang sama sekali tidak diketahui oleh checksum spesifikasi. Lolos CC_BASE dengan identitas yang ditolak terlihat seperti kasus penguncian vendor, bukan kasus checksum — Penguncian vendor, Bidang vendor.
Di CodingBox
CodingBox menghitung ulang CC_BASE, CC_EXT, CC_DMI, dan checksum halaman CMIS secara otomatis pada setiap penulisan dan menyorot ketidakcocokan saat membaca sebuah modul — bidang checksum berwarna merah pada Check transceiver atau di EEPROM editor berarti modul tersebut diedit di tempat lain tanpa memperbaikinya, atau EEPROM-nya rusak.
Tempat masing-masing checksum berada di antara tetangganya: SFF-8472 A0h (63, 95), A2h (95), SFF-8636 atas (191, 223), halaman atas CMIS (222, 255), XFP (191, 223).