CMIS — gestão comum
CMIS, a Common Management Interface Specification, é o modelo de gestão de todos os novos fatores de forma de alta velocidade: QSFP-DD, OSFP, OSFP-XD, QSFP112, SFP-DD e SFP112 (como SFP+ com CMIS), DSFP, COBO e QSFP compatível com CMIS. Começou no MSA do QSFP-DD (CMIS 3.0, 2018), foi adotado pelos grupos OSFP e COBO e, desde a versão 5.0 (2021), é mantido pela OIF. Comparado ao SFF-8636, não é um mapa de memória maior, e sim um modelo diferente: páginas em bancos para até 32 lanes, máquinas de estado explícitas para o módulo e para cada caminho de dados, aplicações em vez de campos de bits de conformidade, diagnósticos versáteis (VDM) e um canal de comandos (CDB) para firmware e funções estendidas. Byte de versão e histórico: Revisões da especificação.
Modelo de memória
| Região | Endereçamento | Conteúdo |
|---|---|---|
| Página inferior (bytes 0–127) | sempre visível | identificador, revisão, estado do módulo, flags, monitores do módulo, controles globais, tipo de mídia, descritores de aplicação 1–8, senha, seleção de banco 126, seleção de página 127 |
| Página superior 00h (128–255) | página 127 = 00h | bloco do fabricante, classe de potência, conector, comprimentos de cabo, tecnologia de mídia, soma de verificação |
| 01h | anúncio | revisões de firmware/hardware, comprimentos de enlace, comprimento de onda, páginas e bancos suportados, durações, controles de integridade de sinal, descritores 9–15 |
| 02h | limiares | limiares de alarme/aviso do módulo e das lanes |
| 04h | capacidades do laser | grades e faixas do laser sintonizável (linhagem do SFF-TA-1004) |
| 10h (em bancos) | controle de lane | desinicialização do caminho de dados, desabilitação do Tx, polaridade, squelch, equalização, conjuntos de controle em estágios |
| 11h (em bancos) | status de lane | estados do caminho de dados, flags por lane, monitores de lane, status de configuração, conjunto de controle ativo |
| 12h (em bancos) | controle do laser sintonizável | canal/comprimento de onda por lane |
| 13h–14h (em bancos) | diagnósticos | loopbacks, geradores e verificadores PRBS |
| 20h–2Fh (em bancos) | VDM | descritores, amostras, limiares, flags |
| 9Fh | CDB | bloco de comando: ID do comando, comprimentos, soma de verificação, payload local |
| A0h–AFh | CDB EPL | payload estendido para transferências grandes (imagens de firmware) |
| 80h–FFh (outras) | fabricante | páginas personalizadas |
Um banco endereça 8 lanes: o banco 0 cobre as lanes 1–8, o banco 1 as lanes 9–16 e assim por diante; quantos estão implementados é informado na página 01h. Módulos com apenas a página 00h ativam o bit de memória plana (byte 2, bit 7). Barramento: endereço único A0h, até 400 kHz, ModSelL por slot — interface de dois fios.
Página inferior — os bytes com os quais o host trabalha
| Bytes | Campo | Notas |
|---|---|---|
| 0 | Identificador | 18h QSFP-DD, 19h OSFP, 1Eh QSFP com CMIS… (SFF-8024) |
| 1 | Revisão do CMIS | nibbles maior.menor: 50h = 5.0, 40h = 4.0, 30h = 3.0 |
| 2 | Características de memória | bit 7 memória plana, além de somente configuração por etapas e outros bits de capacidade |
| 3 | Estado do módulo | bits 3–1: 1 LowPwr, 2 PwrUp, 3 Ready, 4 PwrDn, 5 Fault; bit 0 interrupção desativada |
| 8–11 | Flags do módulo | mudança de estado, alarmes de temperatura/Vcc, alarmes auxiliares, personalizados; retidas, limpas na leitura |
| 14–25 | Monitores do módulo | temperatura, Vcc, Aux1–Aux3 (corrente do TEC, temperatura do laser, alimentação adicional), personalizado |
| 26 | Controles globais | 5.x: bit 6 LowPwrAllowRequestHW, bit 5 método de squelch, bit 4 LowPwrRequestSW, bit 3 reinicialização por software (4.x: bit 6 LowPwr, bit 4 ForceLowPwr) |
| 37–38 | Status do CDB | ocupado / êxito / falha para os blocos de comando 1 e 2 |
| 39–40 | Firmware ativo | maior.menor da imagem em execução |
| 85 | Tipo de mídia | 01h MMF, 02h SMF, 03h cobre passivo, 04h cabo ativo, 05h BASE-T |
| 86–117 | Descritores de aplicação 1–8 | 4 bytes cada: ID da interface de host, ID da interface de mídia, número de lanes de host/mídia, opções de atribuição de lane de host |
| 118–121 | Alteração de senha | definido pelo fabricante |
| 122–125 | Entrada de senha | definido pelo fabricante — onde ficam as senhas de proteção contra gravação |
| 126 | Seleção de banco | — |
| 127 | Seleção de página | — |
Máquina de estados do módulo
Reset ──► MgmtInit ──► ModuleLowPwr ──► ModulePwrUp ──► ModuleReady
▲ │
└──────── ModulePwrDn ◄────────┘
(ModuleFault from any state on a fatal error)
- MgmtInit — o módulo inicializa seu controlador; a identidade ainda não pode ser lida (até 2 s conforme as especificações de hardware).
- ModuleLowPwr — identidade, anúncio e limiares ficam legíveis; a potência é limitada à classe 1; é aqui que o host valida o módulo.
- ModulePwrUp → ModuleReady — o host desativa o pino LPMode (ou limpa LowPwrRequestSW) e o módulo energiza sua óptica; os caminhos de dados já podem ser inicializados.
- ModulePwrDn — o inverso, ao ativar o LPMode.
Um módulo que nunca sai do LowPwr é o chamado clássico do CMIS: Problemas do CMIS, Energia e térmica.
Aplicações e o caminho de dados
Em vez de bits de conformidade, um módulo CMIS anuncia aplicações: pares de interface elétrica de host e interface de mídia, com número de lanes:
| Descritor | Interface de host | Interface de mídia | Lanes de host / lanes de mídia | Exemplo |
|---|---|---|---|---|
| App 1 | 12h 400GAUI-8 C2M | 1Ch 400GBASE-DR4 | 8 / 4 | um enlace de 400G |
| App 2 | 0Eh 100GAUI-2 C2M | 14h 100GBASE-DR | 2 / 1 | breakout 4 × 100G |
O host escolhe uma aplicação por lane gravando AppSel (bits 7–4), um DataPathID (bits 3–1) e o bit de controle explícito no Staged Control Set 0 (página 10h, bytes 145–152), e então ativa ApplyDPInit (página 10h, byte 143). O módulo responde em ConfigStatus (página 11h, bytes 202–205: aceito, rejeitado, AppSel inválido, combinação de lanes inválida…) e copia os valores aceitos no Active Control Set (página 11h, 206–221). Cada caminho de dados percorre então sua própria máquina de estados:
DPDeactivated ──► DPInit ──► DPInitialized ──► DPTxTurnOn ──► DPActivated
▲ │
└────────── DPDeinit ◄───────── DPTxTurnOff ◄──────────────┘
Os estados são reportados por lane na página 11h, bytes 128–131 (um nibble por lane), e as durações máximas de cada etapa são anunciadas na página 01h para que o host saiba quanto tempo esperar. A desabilitação do Tx por lane está na página 10h, byte 130. Um breakout que o módulo não lista como aplicação simplesmente não está disponível — Velocidade e taxa.
Monitoramento: flags, monitores, VDM
- Os monitores do módulo (página inferior 14–25) e os monitores de lane (página 11h: potência Tx 154–169, polarização Tx 170–185, potência Rx 186–201, 2 bytes por lane) usam os mesmos formatos de 16 bits que SFP/QSFP (unidades).
- Os limiares estão na página 02h; as flags ficam retidas e são limpas na leitura, com máscaras por flag; IntL sinaliza qualquer flag não mascarada.
- VDM (páginas 20h–2Fh) acrescenta observáveis que as especificações antigas nunca tiveram: BER pré-FEC, quadros FEC não corrigíveis, SNR por lane, temperatura e idade do laser, eSNR, parâmetros de transição de nível PAM4 — cada um com seu próprio descritor, limiares e flags. É assim que um módulo de 400G reporta a qualidade do enlace antes de os erros chegarem ao host (Monitoramento).
CDB — bloco de dados de comando
A página 9Fh é uma caixa de mensagens: o host grava um ID de comando (bytes 128–129), comprimentos de payload (130–132), uma soma de verificação (133) e até 120 bytes de payload local (136–255), opcionalmente mais nas páginas EPL A0h–AFh; o módulo executa e reporta nos bytes de status 37–38 e em um payload de resposta. Os comandos padrão incluem:
| Comando | Finalidade |
|---|---|
| 0000h | consultar status |
| 0040h / 0041h | recursos do módulo / recursos de gerenciamento de firmware |
| 0100h | obter informações de firmware (imagens em execução e inativa) |
| 0101h | iniciar download de firmware |
| 0103h / 0104h | gravar bloco de firmware via LPL / EPL |
| 0107h | concluir download |
| 0109h / 010Ah | executar imagem / confirmar imagem |
| 0102h | abortar |
É por meio do CDB que as ferramentas do fabricante atualizam o firmware do módulo em campo e que alguns fabricantes implementam funções de configuração e desbloqueio. O suporte e os recursos são anunciados na página 01h.
Somas de verificação e senhas
O byte 222 da página 00h calcula a soma de verificação dos bytes 128–221; as páginas 01h, 02h e 04h trazem uma soma de verificação de página no byte 255 (Somas de verificação). As senhas (122–125) e os esquemas de desbloqueio do fabricante ficam fora da especificação — Recodificação de EEPROM.
Suporte do host
Os sistemas operacionais de rede implementam o CMIS 4.0 e 5.x com profundidade variável: alguns conduzem todo o fluxo de aplicação/caminho de dados, outros liberam o LPMode e esperam que o módulo suba sozinho. Essa diferença está por trás da maioria dos chamados de “reconhecido, mas nunca pronto” — Problemas do CMIS, O que o host faz.
No CodingBox
O CodingBox detecta o CMIS pelo identificador e pelo byte de revisão, lê a memória inferior, as páginas 00h, 01h, 02h e as páginas de lane em bancos, decodifica os descritores de aplicação em relação ao SFF-8024, mostra os estados do módulo e do caminho de dados e os monitores por lane no DDM, e edita a identidade recalculando as somas de verificação de página no EEPROM editor. As operações de firmware via CDB são específicas do fabricante e ficam fora do escopo do editor.
Tabelas em nível de registro: Mapa da página inferior, Mapa das páginas superiores 00h/01h/02h, Mapa das páginas de lane 10h/11h, VDM, CDB.