Checksum: CC_BASE, CC_EXT, CC_DMI, pagine CMIS · Specifiche e standard · Ricetrasmettitori ottici e cavi · Documentazione · CodingBox
CodingBox Documentazione

Checksum: CC_BASE, CC_EXT, CC_DMI, pagine CMIS

Ogni specifica di gestione protegge il proprio blocco di identità con uno o più checksum — un singolo byte che permette all’host di rilevare una EEPROM corrotta o scritta a metà prima di fidarsi del contenuto. Sono banali da calcolare e facili da dimenticare: un checksum non aggiornato dopo una modifica è la causa più comune per cui un modulo appena codificato viene segnalato come invalid.

L’algoritmo

Usano tutti la stessa regola: sommare i byte dell’intervallo coperto come valori senza segno a 8 bit e conservare gli 8 bit bassi della somma (somma modulo 256). Nessun CRC, nessun polinomio.

sum = 0
per ogni byte b nell’intervallo:
    sum = (sum + b) & 0xFF
checksum = sum

Esempio — i primi cinque byte di un SFP 10GBASE-SR: 03 04 07 10 00 → 3 + 4 + 7 + 16 + 0 = 30 = 1Eh. Continua fino al byte 62 e il risultato è CC_BASE.

Dove vive ciascun checksum

SpecificaChecksumPosizioneCopre
SFF-8472 (SFP)CC_BASEA0h byte 63A0h byte 0–62
SFF-8472CC_EXTA0h byte 95A0h byte 64–94
SFF-8472CC_DMIA2h byte 95A2h byte 0–94 (soglie e costanti di calibrazione)
SFF-8636 (QSFP)CC_BASEbyte 191pagina superiore 00h byte 128–190
SFF-8636CC_EXTbyte 223byte 192–222
INF-8077i (XFP)CC_BASEbyte 191byte 128–190
INF-8077iCC_EXTbyte 223byte 192–222
CMISchecksum di paginapagina 00h byte 222pagina 00h byte 128–221
CMISchecksum di paginapagina 01h byte 255pagina 01h byte 130–254 (128–129 contengono la versione del firmware inattivo e sono esclusi)
CMISchecksum di paginapagina 02h byte 255pagina 02h byte 128–254
CMISchecksum di paginapagina 04h byte 255pagina 04h byte 128–254

Non coperti da alcun checksum: le aree specifiche del produttore (SFP A0h 96–127, QSFP 224–255, CMIS 223–255), l’EEPROM utente, i monitor e i flag in tempo reale, le soglie della pagina 03h di QSFP e le pagine di lane di CMIS. I produttori possono aggiungere propri campi di integrità nello spazio del produttore — questi non fanno parte della specifica.

Cosa fanno gli host con essi

ComportamentoRisultato di un checksum errato
Convalidano CC_BASE (la maggior parte di switch e router)il modulo viene mostrato come invalid, unsupported o EEPROM checksum error; la porta può passare a errdisable; il laser spesso resta spento
Convalidano anche CC_EXTlo stesso, oppure solo una voce di log, a seconda della piattaforma
Convalidano CC_DMIil DDM viene mostrato come not supported oppure i valori sono ignorati; il collegamento in sé non ne risente
Ignorano i checksum (molte NIC, alcuni switch aperti)il modulo funziona; l’errore emerge solo negli strumenti

Un errore di checksum viene segnalato insieme all’identità, quindi un modulo che ha anche un problema di policy mostra un messaggio che ne nasconde un altro — verifica prima i checksum, è la correzione più economica. Mappa dei sintomi: Indice dei sintomi.

Quando devi ricalcolare

  • Dopo aver modificato qualsiasi cosa negli intervalli coperti — nome del produttore, numero di parte, numero di serie, date code, codici di conformità, lunghezza d’onda, lunghezze, opzioni, classe di potenza.
  • Dopo aver applicato soglie o costanti di calibrazione su SFP (CC_DMI).
  • Dopo aver ripristinato un’immagine parziale da un altro modulo.
  • Non necessario per modifiche nello spazio del produttore, nell’EEPROM utente o nei byte di controllo A2h.

Ordine delle operazioni: modificare → ricalcolare ogni checksum interessato → scrivere → rileggere → verificare. Scrivere il byte di checksum prima dei dati che copre lascia una finestra in cui un’interruzione di corrente produce un modulo non valido.

Checksum e blocchi del produttore

I checksum corretti sono necessari, ma non sufficienti. Una piattaforma rigorosa verifica anche il blocco del produttore e, sui progetti bloccati, una firma proprietaria nello spazio del produttore di cui i checksum della specifica non sanno nulla. Superare CC_BASE con un’identità rifiutata sembra un caso di blocco del produttore, non un caso di checksum — Blocco del produttore, Campi del produttore.

In CodingBox

CodingBox ricalcola automaticamente CC_BASE, CC_EXT, CC_DMI e i checksum di pagina CMIS a ogni scrittura ed evidenzia una discrepanza durante la lettura di un modulo — un campo checksum rosso su Check transceiver o nell’EEPROM editor significa che il modulo è stato modificato altrove senza correggerlo, oppure che l’EEPROM è corrotta.

Dove si colloca ciascun checksum tra i byte vicini: SFF-8472 A0h (63, 95), A2h (95), SFF-8636 superiore (191, 223), pagine superiori CMIS (222, 255), XFP (191, 223).


Se trovi un’imprecisione o un errore in questo articolo, seleziona il passaggio corrispondente e premi Ctrl+Enter per .