Checksums: CC_BASE, CC_EXT, CC_DMI, CMIS-pagina’s
Elke beheerspecificatie beschermt het identiteitsblok met één of meer checksums: een enkele byte waarmee de host een beschadigde of halfgeschreven EEPROM detecteert voordat hij de inhoud vertrouwt. Ze zijn eenvoudig te berekenen en worden gemakkelijk vergeten: een verouderde checksum na het bewerken is de meest voorkomende reden waarom een pas gecodeerde module als ongeldig wordt gemeld.
Het algoritme
Ze gebruiken allemaal dezelfde regel: tel de bytes van het gedekte bereik op als 8-bitwaarden zonder teken en behoud de onderste 8 bits van de som (som modulo 256). Geen CRC, geen polynoom.
sum = 0
for each byte b in range:
sum = (sum + b) & 0xFF
checksum = sum
Voorbeeld: de eerste vijf bytes van een 10GBASE-SR SFP: 03 04 07 10 00 → 3 + 4 + 7 + 16 + 0 = 30 = 1Eh. Ga door tot en met byte 62; het resultaat is CC_BASE.
Waar elke checksum staat
| Specificatie | Checksum | Locatie | Dekt |
|---|---|---|---|
| SFF-8472 (SFP) | CC_BASE | A0h byte 63 | A0h bytes 0–62 |
| SFF-8472 | CC_EXT | A0h byte 95 | A0h bytes 64–94 |
| SFF-8472 | CC_DMI | A2h byte 95 | A2h bytes 0–94 (drempels en kalibratieconstanten) |
| SFF-8636 (QSFP) | CC_BASE | byte 191 | upper page 00h bytes 128–190 |
| SFF-8636 | CC_EXT | byte 223 | bytes 192–222 |
| INF-8077i (XFP) | CC_BASE | byte 191 | bytes 128–190 |
| INF-8077i | CC_EXT | byte 223 | bytes 192–222 |
| CMIS | paginachecksum | page 00h byte 222 | page 00h bytes 128–221 |
| CMIS | paginachecksum | page 01h byte 255 | page 01h bytes 130–254 (128–129 bevatten de inactieve firmwareversie en zijn uitgesloten) |
| CMIS | paginachecksum | page 02h byte 255 | page 02h bytes 128–254 |
| CMIS | paginachecksum | page 04h byte 255 | page 04h bytes 128–254 |
Niet door een checksum gedekt zijn de fabrikantspecifieke gebieden (SFP A0h 96–127, QSFP 224–255, CMIS 223–255), de gebruikers-EEPROM, de actuele monitors en vlaggen, QSFP page 03h-drempels en CMIS-lanepagina's. Fabrikanten kunnen eigen integriteitsvelden in de fabrikantruimte toevoegen; die maken geen deel uit van de specificatie.
Wat hosts ermee doen
| Gedrag | Resultaat van een slechte checksum |
|---|---|
| CC_BASE valideren (de meeste switches en routers) | module weergegeven als ongeldig, niet ondersteund of EEPROM checksum error; poort kan errdisable krijgen; laser blijft vaak uit |
| Ook CC_EXT valideren | hetzelfde, of alleen een logvermelding, afhankelijk van het platform |
| CC_DMI valideren | DDM weergegeven als niet ondersteund of waarden genegeerd; de link zelf blijft onaangetast |
| Checksums negeren (veel NICs, enkele open switches) | module werkt; de fout verschijnt alleen in tools |
Een checksumfout wordt samen met de identiteit gemeld. Een module met ook een beleidsprobleem toont dus één melding die de andere verbergt. Controleer eerst de checksums; dat is de eenvoudige oplossing. Symptoomkaart: Symptoomindex.
Wanneer opnieuw berekenen nodig is
- Na het bewerken van alles binnen de gedekte bereiken: fabrikantnaam, artikelnummer, serienummer, datumcode, conformiteitscodes, golflengte, lengtes, opties, vermogensklasse.
- Na het toepassen van drempels of kalibratieconstanten op SFP (CC_DMI).
- Na het herstellen van een gedeeltelijke image van een andere module.
- Niet nodig voor wijzigingen in fabrikantruimte, gebruikers-EEPROM of A2h-besturingsbytes.
Volgorde van bewerkingen: bewerken → elke betrokken checksum opnieuw berekenen → schrijven → teruglezen → verifiëren. De checksumbyte vóór de gegevens schrijven die hij dekt, laat een venster waarin stroomuitval een ongeldige module veroorzaakt.
Checksums en fabrikantvergrendelingen
Correcte checksums zijn noodzakelijk, maar niet voldoende. Een strikt platform controleert ook het fabrikantblok en bij vergrendelde ontwerpen een bedrijfseigen handtekening in de fabrikantruimte waar de checksums uit de specificatie niets van weten. Een geldige CC_BASE met afgewezen identiteit wijst op een geval van fabrikantvergrendeling, niet op een checksumprobleem: Fabrikantvergrendeling, Fabrikantvelden.
In CodingBox
CodingBox berekent CC_BASE, CC_EXT, CC_DMI en de CMIS-paginachecksums automatisch opnieuw bij elke schrijfbewerking en markeert een afwijking bij het lezen van een module. Een rood checksumveld in Check transceiver of in de EEPROM editor betekent dat de module elders is bewerkt zonder dit te corrigeren, of dat de EEPROM beschadigd is.
Waar elke checksum tussen de aangrenzende velden staat: SFF-8472 A0h (63, 95), A2h (95), SFF-8636 bovenste pagina's (191, 223), CMIS bovenste pagina's (222, 255), XFP (191, 223).