CMIS – gemeinsames Management
CMIS, die Common Management Interface Specification, ist das Verwaltungsmodell für jeden neuen High-Speed-Formfaktor: QSFP-DD, OSFP, OSFP-XD, QSFP112, SFP-DD und SFP112 (als SFP+ mit CMIS), DSFP, COBO und CMIS-fähige QSFP. Es begann in der QSFP-DD-MSA (CMIS 3.0, 2018), wurde von den OSFP- und COBO-Gruppen übernommen und wird seit Version 5.0 (2021) beim OIF gepflegt. Im Vergleich zu SFF-8636 ist es keine größere Speicherkarte, sondern ein anderes Modell: gebankte Seiten für bis zu 32 Lanes, explizite Zustandsautomaten für das Modul und jeden Datenpfad, Anwendungen statt Compliance-Bitfeldern, vielseitige Diagnostik (VDM) und ein Befehlskanal (CDB) für Firmware und erweiterte Funktionen. Versions-Byte und Historie: Spezifikationsrevisionen.
Speichermodell
| Bereich | Adressierung | Inhalt |
|---|---|---|
| Untere Seite (Byte 0–127) | immer sichtbar | Identifier, Revision, Modulzustand, Flags, Modul-Monitore, globale Steuerungen, Medientyp, Anwendungsdeskriptoren 1–8, Passwort, Bank-Auswahl 126, Seitenauswahl 127 |
| Obere Seite 00h (128–255) | Seite 127 = 00h | Herstellerblock, Leistungsklasse, Steckverbinder, Kabellängen, Medientechnologie, Prüfsumme |
| 01h | Fähigkeiten | Firmware-/Hardware-Revisionen, Linklängen, Wellenlänge, unterstützte Seiten und Bänke, Dauern, Signalintegritäts-Steuerungen, Deskriptoren 9–15 |
| 02h | Schwellwerte | Alarm-/Warnschwellwerte für Modul und Lane |
| 04h | Laserfähigkeiten | Raster und Bereiche durchstimmbarer Laser (SFF-TA-1004-Abstammung) |
| 10h (gebankt) | Lane-Steuerung | Datenpfad-Deinit, Tx-Deaktivierung, Polarität, Squelch, Equalisierung, gestufte Steuerungssätze |
| 11h (gebankt) | Lane-Status | Datenpfad-Zustände, Flags pro Lane, Lane-Monitore, Konfigurationsstatus, aktiver Steuerungssatz |
| 12h (gebankt) | Steuerung durchstimmbarer Laser | Kanal/Wellenlänge pro Lane |
| 13h–14h (gebankt) | Diagnostik | Loopbacks, PRBS-Generatoren und -Prüfer |
| 20h–2Fh (gebankt) | VDM | Deskriptoren, Messwerte, Schwellwerte, Flags |
| 9Fh | CDB | Befehlsblock: Befehls-ID, Längen, Prüfsumme, lokale Nutzdaten |
| A0h–AFh | CDB EPL | erweiterte Nutzdaten für große Übertragungen (Firmware-Images) |
| 80h–FFh (sonstige) | Hersteller | benutzerdefinierte Seiten |
Eine Bank adressiert 8 Lanes: Bank 0 Lanes 1–8, Bank 1 Lanes 9–16 und so weiter; wie viele implementiert sind, wird auf Seite 01h angekündigt. Module mit nur Seite 00h setzen das Flat-Memory-Bit (Byte 2 Bit 7). Bus: eine Adresse A0h, bis zu 400 kHz, ModSelL pro Steckplatz — Zweidraht-Schnittstelle.
Untere Seite — die Bytes, mit denen der Host arbeitet
| Byte | Feld | Hinweise |
|---|---|---|
| 0 | Identifier | 18h QSFP-DD, 19h OSFP, 1Eh QSFP mit CMIS … (SFF-8024) |
| 1 | CMIS-Revision | Major.Minor-Nibbles: 50h = 5.0, 40h = 4.0, 30h = 3.0 |
| 2 | Speichereigenschaften | Bit 7 Flat Memory, plus Stepped-Config-Only und weitere Fähigkeits-Bits |
| 3 | Modulzustand | Bit 3–1: 1 LowPwr, 2 PwrUp, 3 Ready, 4 PwrDn, 5 Fault; Bit 0 Interrupt deaktiviert |
| 8–11 | Modul-Flags | Zustand geändert, Temperatur-/Vcc-Alarme, Aux-Alarme, benutzerdefiniert; gelatcht, beim Lesen gelöscht |
| 14–25 | Modul-Monitore | Temperatur, Vcc, Aux1–Aux3 (TEC-Strom, Lasertemperatur, zusätzliche Versorgung), benutzerdefiniert |
| 26 | Globale Steuerungen | 5.x: Bit 6 LowPwrAllowRequestHW, Bit 5 Squelch-Methode, Bit 4 LowPwrRequestSW, Bit 3 Software-Reset (4.x: Bit 6 LowPwr, Bit 4 ForceLowPwr) |
| 37–38 | CDB-Status | busy/success/fail für Befehlsblöcke 1 und 2 |
| 39–40 | Aktive Firmware | Major.Minor des laufenden Images |
| 85 | Medientyp | 01h MMF, 02h SMF, 03h passives Kupfer, 04h aktives Kabel, 05h BASE-T |
| 86–117 | Anwendungsdeskriptoren 1–8 | je 4 Byte: Host-Schnittstellen-ID, Medien-Schnittstellen-ID, Host-/Medien-Lane-Anzahl, Optionen der Host-Lane-Zuordnung |
| 118–121 | Passwortänderung | herstellerdefiniert |
| 122–125 | Passworteingabe | herstellerdefiniert — hier stehen die Schreibschutz-Passwörter |
| 126 | Bank-Auswahl | — |
| 127 | Seitenauswahl | — |
Modul-Zustandsautomat
Reset ──► MgmtInit ──► ModuleLowPwr ──► ModulePwrUp ──► ModuleReady
▲ │
└──────── ModulePwrDn ◄────────┘
(ModuleFault from any state on a fatal error)
- MgmtInit — das Modul startet seinen Controller; die Identität ist noch nicht lesbar (bis zu 2 s gemäß den Hardwarespezifikationen).
- ModuleLowPwr — Identität, Fähigkeiten und Schwellwerte sind lesbar; die Leistung ist auf Klasse 1 begrenzt; hier validiert der Host das Modul.
- ModulePwrUp → ModuleReady — der Host deaktiviert den LPMode-Pin (oder löscht LowPwrRequestSW), und das Modul schaltet seine Optik ein; Datenpfade können jetzt initialisiert werden.
- ModulePwrDn — die Umkehrung bei einer LPMode-Aktivierung.
Ein Modul, das LowPwr nie verlässt, ist das klassische CMIS-Ticket: CMIS-Probleme, Leistung und Thermik.
Anwendungen und der Datenpfad
Statt Compliance-Bits kündigt ein CMIS-Modul Anwendungen an — Paare aus elektrischer Host-Schnittstelle und Medienschnittstelle, mit Lane-Anzahlen:
| Deskriptor | Host-Schnittstelle | Medienschnittstelle | Host-Lanes / Medien-Lanes | Beispiel |
|---|---|---|---|---|
| App 1 | 12h 400GAUI-8 C2M | 1Ch 400GBASE-DR4 | 8 / 4 | ein 400G-Link |
| App 2 | 0Eh 100GAUI-2 C2M | 14h 100GBASE-DR | 2 / 1 | 4 × 100G-Breakout |
Der Host wählt eine Anwendung pro Lane, indem er AppSel (Bit 7–4), eine DataPathID (Bit 3–1) und das Explicit-Control-Bit in den Staged Control Set 0 (Seite 10h Byte 145–152) schreibt und dann ApplyDPInit (Seite 10h Byte 143) setzt. Das Modul antwortet in ConfigStatus (Seite 11h Byte 202–205: accepted, rejected, invalid AppSel, invalid lane combination …) und kopiert die akzeptierten Werte in den Active Control Set (Seite 11h 206–221). Jeder Datenpfad durchläuft dann seinen eigenen Zustandsautomaten:
DPDeactivated ──► DPInit ──► DPInitialized ──► DPTxTurnOn ──► DPActivated
▲ │
└────────── DPDeinit ◄───────── DPTxTurnOff ◄──────────────┘
Die Zustände werden pro Lane auf Seite 11h Byte 128–131 gemeldet (ein Nibble pro Lane), und die maximalen Dauern jedes Schritts werden auf Seite 01h angekündigt, damit der Host weiß, wie lange er warten muss. Die Tx-Deaktivierung pro Lane liegt auf Seite 10h Byte 130. Ein Breakout, das das Modul nicht als Anwendung listet, ist schlicht nicht verfügbar — Geschwindigkeit und Rate.
Überwachung: Flags, Monitore, VDM
- Modul-Monitore (untere Seite 14–25) und Lane-Monitore (Seite 11h: Tx-Leistung 154–169, Tx-Bias 170–185, Rx-Leistung 186–201, 2 Byte pro Lane) verwenden dieselben 16-Bit-Formate wie SFP/QSFP (Einheiten).
- Schwellwerte liegen auf Seite 02h; Flags werden gelatcht und beim Lesen gelöscht, mit Masken pro Flag; IntL signalisiert jedes nicht maskierte Flag.
- VDM (Seiten 20h–2Fh) fügt Messgrößen hinzu, die es in den alten Spezifikationen nie gab: Pre-FEC-BER, unkorrigierbare FEC-Frames, SNR pro Lane, Lasertemperatur und -alter, eSNR, PAM4-Pegelübergangsparameter — jede mit eigenem Deskriptor, Schwellwerten und Flags. So meldet ein 400G-Modul die Linkqualität, bevor Fehler den Host erreichen (Überwachung).
CDB — Command Data Block
Seite 9Fh ist eine Mailbox: Der Host schreibt eine Befehls-ID (Byte 128–129), Nutzdatenlängen (130–132), eine Prüfsumme (133) und bis zu 120 Byte lokale Nutzdaten (136–255), optional mehr in den EPL-Seiten A0h–AFh; das Modul führt aus und meldet in den Statusbytes 37–38 sowie einer Antwort-Nutzlast. Zu den Standardbefehlen gehören:
| Befehl | Zweck |
|---|---|
| 0000h | Status abfragen |
| 0040h / 0041h | Modulfunktionen / Firmware-Verwaltungsfunktionen |
| 0100h | Firmware-Informationen abrufen (laufendes und inaktives Image) |
| 0101h | Firmware-Download starten |
| 0103h / 0104h | Firmware-Block über LPL/EPL schreiben |
| 0107h | Download abschließen |
| 0109h / 010Ah | Image ausführen / Image übernehmen |
| 0102h | Abbrechen |
Über CDB aktualisieren Herstellertools die Modul-Firmware im Feld, und manche Hersteller implementieren darüber Konfigurations- und Entsperrfunktionen. Unterstützung und Funktionen werden auf Seite 01h angekündigt.
Prüfsummen und Passwörter
Seite 00h Byte 222 bildet die Prüfsumme über Byte 128–221; die Seiten 01h, 02h und 04h tragen eine Seitenprüfsumme in Byte 255 (Prüfsummen). Passwörter (122–125) und herstellerspezifische Entsperrschemata liegen außerhalb der Spezifikation — EEPROM-Umkodierung.
Host-Unterstützung
Netzwerkbetriebssysteme implementieren CMIS 4.0 und 5.x unterschiedlich tief: manche steuern den vollständigen Anwendungs-/Datenpfad-Ablauf, andere geben LPMode frei und erwarten, dass sich das Modul selbst hochfährt. Dieser Unterschied steckt hinter den meisten Tickets nach dem Muster „erkannt, aber nie bereit“ — CMIS-Probleme, Was der Host tut.
In CodingBox
CodingBox erkennt CMIS anhand von Identifier und Revisions-Byte, liest den unteren Speicher, die Seiten 00h, 01h, 02h und die gebankten Lane-Seiten, dekodiert die Anwendungsdeskriptoren anhand von SFF-8024, zeigt Modul- und Datenpfad-Zustände sowie Monitore pro Lane in DDM an und bearbeitet die Identität mit neu berechneten Seitenprüfsummen im EEPROM-Editor. Firmware-Operationen über CDB sind herstellerspezifisch und liegen außerhalb des Funktionsumfangs des Editors.
Tabellen auf Registerebene: Karte der unteren Seite, Karte der oberen Seiten 00h/01h/02h, Karte der Lane-Seiten 10h/11h, VDM, CDB.