CMIS — gemeenschappelijke beheerinterface
CMIS, de Common Management Interface Specification, is het beheermodel voor elke nieuwe snelle vormfactor: QSFP-DD, OSFP, OSFP-XD, QSFP112, SFP-DD en SFP112 (als SFP+ met CMIS), DSFP, COBO en QSFP met CMIS-ondersteuning. Het begon bij de QSFP-DD MSA (CMIS 3.0, 2018), werd overgenomen door de OSFP- en COBO-groepen en wordt sinds versie 5.0 (2021) beheerd door de OIF. Vergeleken met SFF-8636 is het geen grotere geheugenmap maar een ander model: gebankte pagina's voor maximaal 32 lanes, expliciete toestandsmachines voor de module en elk datapad, applicaties in plaats van conformiteitsbitvelden, uitgebreide diagnostiek (VDM) en een opdrachtkanaal (CDB) voor firmware en uitgebreide functies. Versiebyte en geschiedenis: Specificatierevisies.
Geheugenmodel
| Regio | Adressering | Inhoud |
|---|---|---|
| Onderste pagina (bytes 0–127) | altijd zichtbaar | identifier, revisie, modulestatus, flags, modulemonitors, globale besturing, mediatype, applicatiebeschrijvingen 1–8, wachtwoord, bank select 126, page select 127 |
| Bovenste pagina 00h (128–255) | pagina 127 = 00h | fabrikantsblok, vermogensklasse, connector, kabellengtes, mediatechnologie, checksum |
| 01h | gemelde module-eigenschappen | firmware-/hardwarerevisies, linklengtes, golflengte, ondersteunde pagina's en banken, tijdsduren, signaalintegriteitsbesturing, beschrijvingen 9–15 |
| 02h | drempels | alarm-/waarschuwingsdrempels voor module en lane |
| 04h | lasermogelijkheden | rasters en bereiken voor afstembare lasers (SFF-TA-1004-lijn) |
| 10h (gebankt) | lanebesturing | datapad-deinit, Tx disable, polariteit, squelch, egalisatie, voorbereide besturingssets |
| 11h (gebankt) | lanestatus | datapadtoestanden, flags per lane, lanemonitors, configuratiestatus, actieve besturingsset |
| 12h (gebankt) | besturing afstembare laser | kanaal/golflengte per lane |
| 13h–14h (gebankt) | diagnostiek | loopbacks, PRBS-generatoren en -checkers |
| 20h–2Fh (gebankt) | VDM | beschrijvingen, samples, drempels, flags |
| 9Fh | CDB | opdrachtblok: opdracht-ID, lengtes, checksum, lokale payload |
| A0h–AFh | CDB EPL | uitgebreide payload voor grote overdrachten (firmware-images) |
| 80h–FFh (overig) | fabrikant | aangepaste pagina's |
Een bank adresseert 8 lanes: bank 0 omvat lanes 1–8, bank 1 lanes 9–16 enzovoort; het aantal geïmplementeerde lanes meldt de module op pagina 01h. Modules met alleen pagina 00h zetten de flat memory-bit (byte 2 bit 7). Bus: enkel adres A0h, maximaal 400 kHz, ModSelL per slot — tweedraadsinterface.
Onderste pagina — de bytes waarop een host draait
| Bytes | Veld | Opmerkingen |
|---|---|---|
| 0 | Identifier | 18h QSFP-DD, 19h OSFP, 1Eh QSFP met CMIS… (SFF-8024) |
| 1 | CMIS-revisie | major.minor-nibbles: 50h = 5.0, 40h = 4.0, 30h = 3.0 |
| 2 | Geheugenkenmerken | bit 7 flat memory, plus stepped-config-only en andere capaciteitsbits |
| 3 | Modulestatus | bits 3–1: 1 LowPwr, 2 PwrUp, 3 Ready, 4 PwrDn, 5 Fault; bit 0 interrupt gedeactiveerd |
| 8–11 | Moduleflags | status gewijzigd, temperatuur/Vcc-alarmen, aux-alarmen, aangepast; gelatcht, gewist bij lezen |
| 14–25 | Modulemonitors | temperatuur, Vcc, Aux1–Aux3 (TEC-stroom, lasertemperatuur, extra voeding), aangepast |
| 26 | Globale besturing | 5.x: bit 6 LowPwrAllowRequestHW, bit 5 squelchmethode, bit 4 LowPwrRequestSW, bit 3 softwarereset (4.x: bit 6 LowPwr, bit 4 ForceLowPwr) |
| 37–38 | CDB-status | bezig / geslaagd / mislukt voor opdrachtblokken 1 en 2 |
| 39–40 | Actieve firmware | major.minor van het actieve image |
| 85 | Mediatype | 01h MMF, 02h SMF, 03h passief koper, 04h actieve kabel, 05h BASE-T |
| 86–117 | Applicatiebeschrijvingen 1–8 | elk 4 bytes: host-interface-ID, media-interface-ID, aantallen host-/media-lanes, opties voor toewijzing van host-lanes |
| 118–121 | Wachtwoordwijziging | fabrikantgedefinieerd |
| 122–125 | Wachtwoordinvoer | fabrikantgedefinieerd — hier komen wachtwoorden voor schrijfbeveiliging |
| 126 | Bank select | — |
| 127 | Page select | — |
Toestandsmachine van de module
Reset ──► MgmtInit ──► ModuleLowPwr ──► ModulePwrUp ──► ModuleReady
▲ │
└──────── ModulePwrDn ◄────────┘
(ModuleFault from any state on a fatal error)
- MgmtInit — de module start de controller op; identiteit is nog niet leesbaar (maximaal 2 s volgens de hardwarespecificaties).
- ModuleLowPwr — identiteit, gemelde module-eigenschappen en drempels zijn leesbaar; vermogen beperkt tot klasse 1; de host valideert de module hier.
- ModulePwrUp → ModuleReady — de host deactiveert de LPMode-pin (of wist LowPwrRequestSW) en de module schakelt de optica in; datapaden kunnen nu worden geïnitialiseerd.
- ModulePwrDn — het omgekeerde bij een LPMode-assertie.
Een module die LowPwr nooit verlaat, is het klassieke CMIS-ticket: CMIS-problemen, Vermogen & thermisch.
Applicaties en het datapad
In plaats van conformiteitsbits meldt een CMIS-module applicaties — paren van elektrische host-interface en media-interface, met lane-aantallen:
| Beschrijving | Host-interface | Media-interface | Host-lanes / media-lanes | Voorbeeld |
|---|---|---|---|---|
| App 1 | 12h 400GAUI-8 C2M | 1Ch 400GBASE-DR4 | 8 / 4 | één 400G-link |
| App 2 | 0Eh 100GAUI-2 C2M | 14h 100GBASE-DR | 2 / 1 | 4 × 100G-breakout |
De host kiest een applicatie per lane door AppSel (bits 7–4), een DataPathID (bits 3–1) en de expliciete-besturingsbit naar de Staged Control Set 0 (pagina 10h bytes 145–152) te schrijven en vervolgens ApplyDPInit te activeren (pagina 10h byte 143). De module antwoordt in ConfigStatus (pagina 11h bytes 202–205: geaccepteerd, afgewezen, ongeldige AppSel, ongeldige lanecombinatie…) en kopieert de geaccepteerde waarden naar de Active Control Set (pagina 11h 206–221). Elk datapad doorloopt vervolgens zijn eigen toestandsmachine:
DPDeactivated ──► DPInit ──► DPInitialized ──► DPTxTurnOn ──► DPActivated
▲ │
└────────── DPDeinit ◄───────── DPTxTurnOff ◄──────────────┘
Toestanden worden per lane gemeld in pagina 11h bytes 128–131 (één nibble per lane), en de maximale tijdsduren voor elke stap meldt de module in pagina 01h, zodat de host weet hoe lang te wachten. Tx disable per lane staat in pagina 10h byte 130. Breakout die de module niet als applicatie vermeldt, is eenvoudigweg niet beschikbaar — Snelheid & rate.
Monitoring: flags, monitors, VDM
- Modulemonitors (onderste pagina 14–25) en lanemonitors (pagina 11h: Tx power 154–169, Tx bias 170–185, Rx power 186–201, 2 bytes per lane) gebruiken dezelfde 16-bitformaten als SFP/QSFP (eenheden).
- Drempels staan op pagina 02h; flags worden gelatcht en bij lezen gewist, met masks per flag; IntL signaleert elke ongemaskeerde flag.
- VDM (pagina's 20h–2Fh) voegt observeerbare waarden toe die de oude specificaties nooit hadden: pre-FEC BER, oncorrigeerbare FEC-frames, SNR per lane, lasertemperatuur en -leeftijd, eSNR, PAM4-niveauovergangsparameters — elk met eigen beschrijving, drempels en flags. Zo rapporteert een 400G-module de linkkwaliteit voordat fouten de host bereiken (DDM monitoren in productie).
CDB — Command Data Block
Pagina 9Fh is een mailbox: de host schrijft een opdracht-ID (bytes 128–129), payloadlengtes (130–132), een checksum (133) en maximaal 120 bytes lokale payload (136–255), optioneel meer in de EPL-pagina's A0h–AFh; de module voert de opdracht uit en meldt dit in statusbytes 37–38 met een antwoord-payload. Standaardopdrachten zijn onder meer:
| Opdracht | Doel |
|---|---|
| 0000h | status opvragen |
| 0040h / 0041h | modulefuncties / functies voor firmwarebeheer |
| 0100h | firmware-informatie ophalen (actieve en inactieve images) |
| 0101h | firmwaredownload starten |
| 0103h / 0104h | firmwareblok schrijven via LPL / EPL |
| 0107h | download voltooien |
| 0109h / 010Ah | image uitvoeren / image vastleggen |
| 0102h | afbreken |
CDB is hoe fabrikantstools modulefirmware in het veld bijwerken en hoe sommige fabrikanten configuratie- en ontgrendelfuncties implementeren. Ondersteuning en functies meldt de module op pagina 01h.
Checksums en wachtwoorden
Pagina 00h byte 222 is de checksum van bytes 128–221; pagina's 01h, 02h en 04h hebben een paginachecksum in byte 255 (Checksums). Wachtwoorden (122–125) en fabrikantontgrendelingsschema's vallen buiten de specificatie — EEPROM-hercodering.
Hostondersteuning
Netwerkbesturingssystemen implementeren CMIS 4.0 en 5.x in uiteenlopende mate: sommige doorlopen de volledige applicatie-/datapadstroom, andere schakelen LPMode vrij en verwachten dat de module zichzelf opstart. Het verschil ligt achter de meeste tickets voor ‘herkend maar nooit gereed’ — CMIS-problemen, Wat de host doet.
In CodingBox
CodingBox detecteert CMIS aan de hand van identifier en revisiebyte, leest lager geheugen, pagina's 00h, 01h, 02h en de gebankte lanepagina's, decodeert applicatiebeschrijvingen volgens SFF-8024, toont module- en datapadtoestanden en monitors per lane in DDM, en bewerkt identiteit met opnieuw berekende paginachecksums in de EEPROM editor. Firmwarebewerkingen via CDB zijn fabrikantspecifiek en vallen buiten het bereik van de editor.
Tabellen op registerniveau: Kaart van de onderste pagina, Kaart van bovenste pagina's 00h/01h/02h, Kaart van lanepagina's 10h/11h, VDM, CDB.