CMIS — gestion commune
CMIS, la Common Management Interface Specification, est le modèle de gestion de tous les nouveaux facteurs de forme haut débit : QSFP-DD, OSFP, OSFP-XD, QSFP112, SFP-DD et SFP112 (comme SFP+ avec CMIS), DSFP, COBO et QSFP compatible CMIS. Il est né dans la MSA QSFP-DD (CMIS 3.0, 2018), a été adopté par les groupes OSFP et COBO, et depuis la version 5.0 (2021) est maintenu à l’OIF. Comparé à SFF-8636, ce n’est pas une carte mémoire plus grande mais un modèle différent : pages en banques pour jusqu’à 32 voies, machines à états explicites pour le module et chaque chemin de données, applications à la place des bits de conformité, diagnostics polyvalents (VDM) et un canal de commande (CDB) pour le firmware et les fonctions étendues. Octet de version et historique : Révisions de la spécification.
Modèle mémoire
| Région | Adressage | Contenu |
|---|---|---|
| Page inférieure (octets 0–127) | toujours visible | identifiant, révision, état du module, indicateurs, moniteurs du module, commandes globales, type de média, descripteurs d’application 1–8, mot de passe, sélection de banque 126, sélection de page 127 |
| Page supérieure 00h (128–255) | page 127 = 00h | bloc fournisseur, classe de puissance, connecteur, longueurs de câble, technologie média, somme de contrôle |
| 01h | annonce | révisions firmware/matériel, longueurs de liaison, longueur d’onde, pages et banques prises en charge, durées, commandes d’intégrité du signal, descripteurs 9–15 |
| 02h | seuils | seuils d’alarme/avertissement du module et des voies |
| 04h | capacités laser | grilles et plages du laser accordable (filiation SFF-TA-1004) |
| 10h (en banques) | commande de voie | désinitialisation du chemin de données, désactivation Tx, polarité, squelch, égalisation, jeux de commande étagés |
| 11h (en banques) | état de voie | états du chemin de données, indicateurs par voie, moniteurs de voie, état de configuration, jeu de commande actif |
| 12h (en banques) | commande du laser accordable | canal/longueur d’onde par voie |
| 13h–14h (en banques) | diagnostics | bouclages, générateurs et vérificateurs PRBS |
| 20h–2Fh (en banques) | VDM | descripteurs, échantillons, seuils, indicateurs |
| 9Fh | CDB | bloc de commande : ID de commande, longueurs, somme de contrôle, charge utile locale |
| A0h–AFh | CDB EPL | charge utile étendue pour les transferts volumineux (images de firmware) |
| 80h–FFh (autre) | fournisseur | pages personnalisées |
Une banque adresse 8 voies : banque 0 voies 1–8, banque 1 voies 9–16 et ainsi de suite ; le nombre de banques mises en œuvre est annoncé dans la page 01h. Les modules n’ayant que la page 00h positionnent le bit de mémoire plate (octet 2 bit 7). Bus : adresse unique A0h, jusqu’à 400 kHz, ModSelL par emplacement — interface à deux fils.
Page inférieure — les octets dont dépend l’hôte
| Octets | Champ | Remarques |
|---|---|---|
| 0 | Identifiant | 18h QSFP-DD, 19h OSFP, 1Eh QSFP avec CMIS… (SFF-8024) |
| 1 | Révision CMIS | quartets majeur.mineur : 50h = 5.0, 40h = 4.0, 30h = 3.0 |
| 2 | Caractéristiques mémoire | bit 7 mémoire plate, plus configuration étagée uniquement et autres bits de capacité |
| 3 | État du module | bits 3–1 : 1 LowPwr, 2 PwrUp, 3 Ready, 4 PwrDn, 5 Fault ; bit 0 interruption désactivée |
| 8–11 | Indicateurs du module | changement d’état, alarmes température/Vcc, alarmes auxiliaires, personnalisé ; verrouillés, effacés à la lecture |
| 14–25 | Moniteurs du module | température, Vcc, Aux1–Aux3 (courant TEC, température laser, alimentation additionnelle), personnalisé |
| 26 | Commandes globales | 5.x : bit 6 LowPwrAllowRequestHW, bit 5 méthode de squelch, bit 4 LowPwrRequestSW, bit 3 réinitialisation logicielle (4.x : bit 6 LowPwr, bit 4 ForceLowPwr) |
| 37–38 | État CDB | occupé / succès / échec pour les blocs de commande 1 et 2 |
| 39–40 | Firmware actif | majeur.mineur de l’image en cours d’exécution |
| 85 | Type de média | 01h MMF, 02h SMF, 03h cuivre passif, 04h câble actif, 05h BASE-T |
| 86–117 | Descripteurs d’application 1–8 | 4 octets chacun : ID d’interface hôte, ID d’interface média, nombre de voies hôte/média, options d’affectation des voies hôte |
| 118–121 | Changement de mot de passe | défini par le fournisseur |
| 122–125 | Saisie du mot de passe | défini par le fournisseur — emplacement des mots de passe de protection en écriture |
| 126 | Sélection de banque | — |
| 127 | Sélection de page | — |
Machine à états du module
Reset ──► MgmtInit ──► ModuleLowPwr ──► ModulePwrUp ──► ModuleReady
▲ │
└──────── ModulePwrDn ◄────────┘
(ModuleFault from any state on a fatal error)
- MgmtInit — le module démarre son contrôleur ; l’identité n’est pas encore lisible (jusqu’à 2 s selon les spécifications matérielles).
- ModuleLowPwr — identité, annonce et seuils lisibles ; puissance limitée à la classe 1 ; l’hôte valide le module à ce stade.
- ModulePwrUp → ModuleReady — l’hôte désactive la broche LPMode (ou efface LowPwrRequestSW) et le module met sous tension son optique ; les chemins de données peuvent alors être initialisés.
- ModulePwrDn — l’inverse lors de l’activation de LPMode.
Un module qui ne quitte jamais LowPwr est le ticket CMIS classique : Problèmes CMIS, Puissance et thermique.
Applications et chemin de données
Au lieu de bits de conformité, un module CMIS annonce des applications — des paires d’interface électrique hôte et d’interface média, avec le nombre de voies :
| Descripteur | Interface hôte | Interface média | Voies hôte / voies média | Exemple |
|---|---|---|---|---|
| App 1 | 12h 400GAUI-8 C2M | 1Ch 400GBASE-DR4 | 8 / 4 | une liaison 400G |
| App 2 | 0Eh 100GAUI-2 C2M | 14h 100GBASE-DR | 2 / 1 | éclatement (breakout) 4 × 100G |
L’hôte choisit une application par voie en écrivant AppSel (bits 7–4), un DataPathID (bits 3–1) et le bit de commande explicite dans le Staged Control Set 0 (page 10h octets 145–152), puis active ApplyDPInit (page 10h octet 143). Le module répond dans ConfigStatus (page 11h octets 202–205 : accepté, rejeté, AppSel invalide, combinaison de voies invalide…) et copie les valeurs acceptées dans l’Active Control Set (page 11h 206–221). Chaque chemin de données parcourt alors sa propre machine à états :
DPDeactivated ──► DPInit ──► DPInitialized ──► DPTxTurnOn ──► DPActivated
▲ │
└────────── DPDeinit ◄───────── DPTxTurnOff ◄──────────────┘
Les états sont rapportés par voie dans la page 11h octets 128–131 (un quartet par voie), et les durées maximales de chaque étape sont annoncées dans la page 01h afin que l’hôte sache combien de temps attendre. La désactivation Tx par voie se trouve à la page 10h octet 130. Un éclatement (breakout) que le module ne liste pas comme application n’est simplement pas disponible — Vitesse et débit.
Surveillance : indicateurs, moniteurs, VDM
- Les moniteurs du module (page inférieure 14–25) et les moniteurs de voie (page 11h : puissance Tx 154–169, bias Tx 170–185, puissance Rx 186–201, 2 octets par voie) utilisent les mêmes formats 16 bits que SFP/QSFP (unités).
- Les seuils sont sur la page 02h ; les indicateurs sont verrouillés et effacés à la lecture, avec un masque par indicateur ; IntL signale tout indicateur non masqué.
- Le VDM (pages 20h–2Fh) ajoute des observables que les anciennes spécifications n’avaient jamais : TEB pré-FEC, trames FEC non corrigibles, SNR par voie, température et âge du laser, eSNR, paramètres de transition des niveaux PAM4 — chacun avec son propre descripteur, ses seuils et ses indicateurs. C’est ainsi qu’un module 400G rapporte la qualité de liaison avant que les erreurs n’atteignent l’hôte (Surveillance).
CDB — bloc de données de commande
La page 9Fh est une boîte aux lettres : l’hôte écrit un ID de commande (octets 128–129), des longueurs de charge utile (130–132), une somme de contrôle (133) et jusqu’à 120 octets de charge utile locale (136–255), et éventuellement plus dans les pages EPL A0h–AFh ; le module exécute et rend compte dans les octets d’état 37–38 et une charge utile de réponse. Commandes standard :
| Commande | Objet |
|---|---|
| 0000h | interroger l’état |
| 0040h / 0041h | fonctionnalités du module / fonctionnalités de gestion du firmware |
| 0100h | obtenir les infos firmware (images active et inactive) |
| 0101h | démarrer le téléchargement du firmware |
| 0103h / 0104h | écrire un bloc de firmware via LPL / EPL |
| 0107h | terminer le téléchargement |
| 0109h / 010Ah | exécuter l’image / valider l’image |
| 0102h | annuler |
CDB est le moyen par lequel les outils fournisseur mettent à jour le firmware du module sur le terrain, et par lequel certains fournisseurs mettent en œuvre des fonctions de configuration et de déverrouillage. La prise en charge et les fonctionnalités sont annoncées dans la page 01h.
Sommes de contrôle et mots de passe
L’octet 222 de la page 00h totalise les octets 128–221 ; les pages 01h, 02h et 04h portent une somme de contrôle de page dans l’octet 255 (Sommes de contrôle). Les mots de passe (122–125) et les schémas de déverrouillage fournisseur sont en dehors de la spécification — Recodage de l’EEPROM.
Prise en charge côté hôte
Les systèmes d’exploitation réseau implémentent CMIS 4.0 et 5.x à des degrés divers : certains pilotent le flux complet application/chemin de données, d’autres relâchent LPMode et attendent que le module démarre de lui-même. Cette différence explique la plupart des tickets « reconnu mais jamais prêt » — Problèmes CMIS, Ce que fait l’hôte.
Dans CodingBox
CodingBox détecte CMIS par l’octet d’identifiant et de révision, lit la mémoire inférieure, les pages 00h, 01h, 02h et les pages de voie en banques, décode les descripteurs d’application selon SFF-8024, affiche les états du module et des chemins de données ainsi que les moniteurs par voie dans DDM, et modifie l’identité avec recalcul des sommes de contrôle de page dans l’EEPROM editor. Les opérations de firmware via CDB sont spécifiques au fournisseur et hors du périmètre de l’éditeur.
Tables au niveau registre : Carte de la page inférieure, Carte des pages supérieures 00h/01h/02h, Carte des pages de voie 10h/11h, VDM, CDB.