CMIS — wspólny interfejs zarządzania
CMIS, czyli Common Management Interface Specification, to model zarządzania dla każdego nowego, szybkiego formatu obudowy: QSFP-DD, OSFP, OSFP-XD, QSFP112, SFP-DD i SFP112 (jako SFP+ z CMIS), DSFP, COBO oraz QSFP z obsługą CMIS. Zaczął się w MSA QSFP-DD (CMIS 3.0, 2018), został przyjęty przez grupy OSFP i COBO, a od wersji 5.0 (2021) jest utrzymywany w OIF. W porównaniu z SFF-8636 to nie większa mapa pamięci, tylko inny model: banki stron dla maksymalnie 32 linii, jawne maszyny stanów dla modułu i każdej ścieżki danych, aplikacje zamiast pól bitowych zgodności, wszechstronna diagnostyka (VDM) i kanał poleceń (CDB) dla firmware i funkcji rozszerzonych. Bajt wersji i historia: Wersje specyfikacji.
Model pamięci
| Region | Adresowanie | Zawartość |
|---|---|---|
| Strona dolna (bajty 0–127) | zawsze widoczna | identyfikator, rewizja, stan modułu, flagi, monitory modułu, sterowanie globalne, typ medium, deskryptory aplikacji 1–8, hasło, wybór banku 126, wybór strony 127 |
| Strona górna 00h (128–255) | strona 127 = 00h | blok producenta, klasa mocy, złącze, długości kabla, technologia medium, suma kontrolna |
| 01h | zgłaszanie możliwości | rewizje firmware/sprzętu, długości łącza, długość fali, obsługiwane strony i banki, czasy trwania, sterowanie integralnością sygnału, deskryptory 9–15 |
| 02h | progi | progi alarmów/ostrzeżeń modułu i linii |
| 04h | możliwości lasera | siatki i zakresy lasera przestrajalnego (linia SFF-TA-1004) |
| 10h (bankowana) | sterowanie linią | deinicjalizacja ścieżki danych, wyłączenie Tx, polaryzacja, squelch, ekwalizacja, staged control sets |
| 11h (bankowana) | stan linii | stany ścieżki danych, flagi dla poszczególnych linii, monitory linii, stan konfiguracji, active control set |
| 12h (bankowana) | sterowanie laserem przestrajalnym | kanał/długość fali na linię |
| 13h–14h (bankowana) | diagnostyka | pętle zwrotne, generatory i testery PRBS |
| 20h–2Fh (bankowana) | VDM | deskryptory, próbki, progi, flagi |
| 9Fh | CDB | blok poleceń: identyfikator polecenia, długości, suma kontrolna, payload lokalny |
| A0h–AFh | CDB EPL | payload rozszerzony dla dużych transferów (obrazy firmware) |
| 80h–FFh (inne) | producent | strony niestandardowe |
Bank adresuje 8 linii: bank 0 — linie 1–8, bank 1 — linie 9–16 i tak dalej; ile banków jest zaimplementowanych, zgłasza strona 01h. Moduły mające tylko stronę 00h ustawiają bit pamięci płaskiej (bajt 2, bit 7). Magistrala: pojedynczy adres A0h, do 400 kHz, ModSelL na gniazdo — interfejs dwuprzewodowy.
Strona dolna — bajty, którymi żyje host
| Bajty | Pole | Uwagi |
|---|---|---|
| 0 | Identyfikator | 18h QSFP-DD, 19h OSFP, 1Eh QSFP z CMIS… (SFF-8024) |
| 1 | Rewizja CMIS | półbajty major.minor: 50h = 5.0, 40h = 4.0, 30h = 3.0 |
| 2 | Charakterystyki pamięci | bit 7 — pamięć płaska, plus bit stepped-config-only i inne bity możliwości |
| 3 | Stan modułu | bity 3–1: 1 LowPwr, 2 PwrUp, 3 Ready, 4 PwrDn, 5 Fault; bit 0 — przerwanie dezaktywowane |
| 8–11 | Flagi modułu | zmiana stanu, alarmy temperatury/Vcc, alarmy pomocnicze, custom; zatrzaskiwane, kasowane przy odczycie |
| 14–25 | Monitory modułu | temperatura, Vcc, Aux1–Aux3 (prąd TEC, temperatura lasera, dodatkowe zasilanie), custom |
| 26 | Sterowanie globalne | 5.x: bit 6 LowPwrAllowRequestHW, bit 5 — metoda squelch, bit 4 LowPwrRequestSW, bit 3 — reset programowy (4.x: bit 6 LowPwr, bit 4 ForceLowPwr) |
| 37–38 | Stan CDB | busy / success / fail dla bloków poleceń 1 i 2 |
| 39–40 | Aktywny firmware | major.minor działającego obrazu |
| 85 | Typ medium | 01h MMF, 02h SMF, 03h miedź pasywna, 04h kabel aktywny, 05h BASE-T |
| 86–117 | Deskryptory aplikacji 1–8 | po 4 bajty: identyfikator interfejsu hosta, identyfikator interfejsu medium, liczby linii hosta/medium, opcje przypisania linii hosta |
| 118–121 | Zmiana hasła | definiowane przez producenta |
| 122–125 | Wprowadzanie hasła | definiowane przez producenta — tu trafiają hasła zabezpieczenia przed zapisem |
| 126 | Wybór banku | — |
| 127 | Wybór strony | — |
Maszyna stanów modułu
Reset ──► MgmtInit ──► ModuleLowPwr ──► ModulePwrUp ──► ModuleReady
▲ │
└──────── ModulePwrDn ◄────────┘
(ModuleFault z dowolnego stanu przy błędzie krytycznym)
- MgmtInit — moduł uruchamia swój kontroler; dane identyfikacyjne nie są jeszcze czytelne (do 2 s według specyfikacji sprzętowych).
- ModuleLowPwr — dane identyfikacyjne, zgłoszone możliwości i progi są czytelne; moc ograniczona do klasy 1; tu host weryfikuje moduł.
- ModulePwrUp → ModuleReady — host dezaktywuje pin LPMode (albo czyści LowPwrRequestSW), a moduł włącza zasilanie optyki; ścieżki danych można już inicjalizować.
- ModulePwrDn — odwrotność, przy aktywacji LPMode.
Moduł, który nigdy nie opuszcza LowPwr, to klasyczne zgłoszenie CMIS: Problemy z CMIS, Zasilanie i temperatura.
Aplikacje i ścieżka danych
Zamiast bitów zgodności moduł CMIS zgłasza aplikacje — pary interfejsu elektrycznego hosta i interfejsu medium, z liczbami linii:
| Deskryptor | Interfejs hosta | Interfejs medium | Linie hosta / linie medium | Przykład |
|---|---|---|---|---|
| App 1 | 12h 400GAUI-8 C2M | 1Ch 400GBASE-DR4 | 8 / 4 | jedno łącze 400G |
| App 2 | 0Eh 100GAUI-2 C2M | 14h 100GBASE-DR | 2 / 1 | breakout 4 × 100G |
Host wybiera aplikację dla każdej linii, zapisując AppSel (bity 7–4), DataPathID (bity 3–1) i bit explicit-control do Staged Control Set 0 (strona 10h, bajty 145–152), a następnie aktywuje ApplyDPInit (strona 10h, bajt 143). Moduł odpowiada w ConfigStatus (strona 11h, bajty 202–205: accepted, rejected, invalid AppSel, invalid lane combination…) i kopiuje przyjęte wartości do Active Control Set (strona 11h, 206–221). Każda ścieżka danych przechodzi wtedy przez własną maszynę stanów:
DPDeactivated ──► DPInit ──► DPInitialized ──► DPTxTurnOn ──► DPActivated
▲ │
└────────── DPDeinit ◄───────── DPTxTurnOff ◄──────────────┘
Stany są raportowane dla każdej linii na stronie 11h, bajty 128–131 (jeden półbajt na linię), a maksymalne czasy trwania każdego kroku zgłasza strona 01h, dzięki czemu host wie, jak długo czekać. Wyłączenie Tx dla poszczególnych linii znajduje się na stronie 10h, bajt 130. Breakout, którego moduł nie wymienia jako aplikacji, po prostu nie jest dostępny — Prędkość i przepływność.
Monitorowanie: flagi, monitory, VDM
- Monitory modułu (strona dolna, 14–25) i monitory linii (strona 11h: moc Tx 154–169, prąd polaryzacji Tx 170–185, moc Rx 186–201, po 2 bajty na linię) używają tych samych formatów 16-bitowych co SFP/QSFP (jednostki).
- Progi są na stronie 02h; flagi są zatrzaskiwane i kasowane przy odczycie, z maskami dla każdej flagi; IntL sygnalizuje każdą niezamaskowaną flagę.
- VDM (strony 20h–2Fh) dodaje wielkości mierzone, których stare specyfikacje nigdy nie miały: BER przed FEC, nieskorygowane ramki FEC, SNR na linię, temperaturę i wiek lasera, eSNR, parametry przejścia poziomów PAM4 — każda z własnym deskryptorem, progami i flagami. Tak 400G moduł raportuje jakość łącza, zanim błędy dotrą do hosta (Monitorowanie).
CDB — Command Data Block
Strona 9Fh to mailbox: host zapisuje identyfikator polecenia (bajty 128–129), długości payloadu (130–132), sumę kontrolną (133) i do 120 bajtów payloadu lokalnego (136–255), opcjonalnie więcej na stronach EPL A0h–AFh; moduł wykonuje polecenie i raportuje w bajtach stanu 37–38 oraz payloadzie odpowiedzi. Standardowe polecenia obejmują:
| Polecenie | Cel |
|---|---|
| 0000h | odpytanie o stan |
| 0040h / 0041h | funkcje modułu / funkcje zarządzania firmware |
| 0100h | pobranie informacji o firmware (obraz działający i nieaktywny) |
| 0101h | rozpoczęcie pobierania firmware |
| 0103h / 0104h | zapis bloku firmware przez LPL / EPL |
| 0107h | zakończenie pobierania |
| 0109h / 010Ah | uruchomienie obrazu / zatwierdzenie obrazu |
| 0102h | przerwanie |
CDB to sposób, w jaki narzędzia producenta aktualizują firmware modułu w terenie, i w jaki niektórzy producenci realizują funkcje konfiguracji i odblokowania. Obsługa i funkcje są zgłaszane na stronie 01h.
Sumy kontrolne i hasła
Bajt 222 strony 00h sumuje bajty 128–221; strony 01h, 02h i 04h niosą sumę kontrolną strony w bajcie 255 (Sumy kontrolne). Hasła (122–125) i schematy odblokowania producenta są poza specyfikacją — Przekodowanie EEPROM.
Obsługa przez hosta
Sieciowe systemy operacyjne implementują CMIS 4.0 i 5.x w różnym stopniu: niektóre prowadzą pełny przepływ aplikacja/ścieżka danych, inne zwalniają LPMode i oczekują, że moduł uruchomi się sam. Ta różnica stoi za większością zgłoszeń typu „rozpoznany, ale nigdy nie gotowy” — Problemy z CMIS, Co robi host.
W CodingBox
CodingBox wykrywa CMIS po bajcie identyfikatora i rewizji, odczytuje pamięć dolną, strony 00h, 01h, 02h oraz bankowane strony linii, dekoduje deskryptory aplikacji względem SFF-8024, pokazuje stany modułu i ścieżki danych oraz monitory dla poszczególnych linii na ekranie DDM, i edytuje dane identyfikacyjne z przeliczeniem sum kontrolnych stron w EEPROM editor. Operacje na firmware przez CDB są specyficzne dla producenta i wykraczają poza zakres edytora.
Tabele na poziomie rejestrów: Mapa strony dolnej, Mapa górnych stron 00h/01h/02h, Mapa stron linii 10h/11h, VDM, CDB.