Qué hace el host: descubrimiento, validación, arranque
Las especificaciones describen el lado del módulo: pines, memoria, estados. Esta página describe el lado del host: la secuencia que ejecuta un switch, router o NIC desde el momento en que se inserta un módulo hasta que fluye el tráfico, con los pines, bytes y tiempos que usa cada paso. Conocerla convierte «el puerto dice unsupported» en «el host se detuvo en el paso 4», y explica por qué un módulo perfecto en el banco de pruebas puede seguir fallando en un puerto.
Señales de baja velocidad por factor de forma
| Factor de forma | Presencia | Reinicio / alimentación | Interrupción / avería | Otro |
|---|---|---|---|---|
| SFP / SFP+ / SFP28 | MOD_ABS (bajo = presente) | — (TX_DISABLE controla el láser) | TX_FAULT, RX_LOS | RS0, RS1 selección de tasa |
| XFP | Mod_ABS | P_Down/RST | Interrupt, Mod_NR (no listo), RX_LOS | TX_DIS, Mod_DeSel |
| QSFP+ / QSFP28 | ModPrsL | ResetL, LPMode | IntL | ModSelL |
| QSFP-DD | ModPrsL | ResetL, LPMode | IntL | ModSelL |
| OSFP | PRSn | RSTn, LPWn | INT | — (sin pin de selección, un bus por puerto) |
| SFP-DD | módulo ausente como en SFP | solicitud de baja potencia | interrupción | selección de tasa como en SFP |
Funciones de pines y distribuciones por familia: Hardware SFP, Hardware QSFP, XFP.
La secuencia
| # | Paso | SFP (SFF-8472) | QSFP (SFF-8636) | CMIS | El fallo se ve como |
|---|---|---|---|---|---|
| 1 | Detectar | MOD_ABS pasa a bajo; antirrebote | ModPrsL bajo | ModPrsL / PRSn bajo | el puerto permanece vacío; módulo «no detectado» |
| 2 | Alimentar y esperar | 3,3 V siempre activo; esperar t_init 300 ms | encender con LPMode alto (solo clase 1); esperar t_init 2 s o sondear Data_Not_Ready | igual; esperar a que el estado del módulo salga de MgmtInit (≤ 2 s) | las lecturas devuelven FFh / 00h; identidad en blanco |
| 3 | Identificar | leer A0h 0–95; byte 0 = 03h selecciona el analizador de SFF-8472 | leer 0–127 y la página superior 00h; byte 0 = 0Dh/11h, byte 1 revisión | leer la página inferior y la página superior 00h; byte 0 = 18h/19h…, byte 1 versión CMIS | unknown module type |
| 4 | Validar | CC_BASE, CC_EXT; coherencia identificador/conector/codificación | CC_BASE, CC_EXT | suma de comprobación de la página 00h | invalid EEPROM, checksum error — Sumas de comprobación |
| 5 | Decodificar el tipo | bytes de conformidad 3–10, 36; byte de tasa 12/66; longitudes; longitud de onda | bytes 131–138, 192; 140/222 | tipo de medio 85, descriptores de aplicación | speed and type not supported — Códigos de conformidad |
| 6 | Política | nombre/PN del fabricante (y posiblemente firma) frente a la tabla de compatibilidad | igual | igual | unsupported transceiver, errdisable — Bloqueo de fabricante |
| 7 | Clase de potencia | bits de nivel del byte 64 frente al presupuesto del puerto | clase del byte 129; escribir el byte 93 para liberar baja potencia / habilitar las clases 5–8 | clase del byte 200 frente al puerto; desactivar LPMode o borrar LowPwrRequestSW → módulo PwrUp → Ready | retenido en baja potencia, power exceeds — Alimentación y térmica |
| 8 | Configurar | selección de tasa RS0/RS1 o por software; velocidad, FEC, SGMII/1000BASE-X del lado del host | CDR activado/desactivado (98), selección de tasa (87–88), carriles de breakout en el host | elegir AppSel/DataPathID en el conjunto de control por etapas → ApplyDPInit → ruta de datos Init → Initialized | LOL, discrepancia de FEC, breakout rechazado — Velocidad y tasa |
| 9 | Habilitar Tx | pin TX_DISABLE bajo o bit por software borrado (A2h 110.6) | byte 86 = 00h | página 10h, byte 130 = 00h → DPTxTurnOn → DPActivated | el extremo lejano ve −40 dBm — Lista de comprobación de falta de enlace |
| 10 | Enlace | el PHY/MAC ve señal; AN/entrenamiento de enlace en DAC | igual por carril | igual por ruta de datos | enlace caído con niveles correctos |
| 11 | Monitorizar | sondear los monitores e indicadores de A2h cada pocos segundos; pines TX_FAULT / RX_LOS | IntL → leer indicadores 3–21; sondear monitores | IntL → indicadores del módulo + indicadores de carril de la página 11h; VDM | alarmas, flapping — Niveles de DDM, Flapping de enlace |
| 12 | Retirar | MOD_ABS alto → desmontaje | ModPrsL alto | ModPrsL alto | estado obsoleto si el antirrebote falla |
Los pasos 3–6 ocurren en baja potencia para los módulos QSFP y CMIS: el host valida antes de gastar potencia en la óptica. Por eso un módulo bloqueado o mal codificado nunca enciende su láser, y por eso el extremo lejano lee −40 dBm en un módulo que eléctricamente está bien.
Tiempos que espera el host
| Espera | SFP | QSFP | CMIS |
|---|---|---|---|
| Gestión lista tras la inserción | 300 ms | 2 s | ≤ 2 s (MgmtInit) y luego estado LowPwr |
| Tras liberar la baja potencia | — | hasta que Data_Not_Ready se borra | hasta que el estado del módulo sea Ready (duración máxima anunciada en la página 01h) |
| Inicialización de la ruta de datos | — | — | anunciada por paso (código de nibble: < 1 ms … < 50 min) |
| De habilitar Tx a emitir luz | t_on ≤ 1 ms | ton_txdis 100 ms / toff 400 ms | duración de DPTxTurnOn anunciada |
| De indicador a interrupción | — | ton_IntL 200 ms | según la especificación de hardware |
Tiempos a nivel de bus (t_WR, estiramiento de reloj): Interfaz de dos hilos.
Puntos de política donde los hosts difieren
- Rigor de la lista blanca — desde «solo el nombre del fabricante» hasta bloques específicos del fabricante firmados.
- Qué ocurre al rechazar — puerto deshabilitado, láser apagado, o enlace permitido con una entrada de registro (Óptica de terceros).
- Profundidad de CMIS — control completo de aplicación/ruta de datos frente a «liberar LPMode y esperar» (Problemas de CMIS).
- Valores predeterminados de FEC y velocidad — derivados de los códigos de conformidad o configurados de forma estática.
- Sondeo de DDM — intervalo, si los umbrales activan el apagado del puerto, si se aplica calibración externa (Calibración).
CLI específica de cada fabricante para ver dónde se detuvo el host: Verificación de óptica en switches.
En qué se diferencia un programador de un host
Un programador como CodingBox ejecuta los pasos 1–5 y 11 pero sin política: lee todo lo que el módulo expone, incluidas las áreas del fabricante y los bytes de contraseña, mantiene los módulos CMIS en baja potencia salvo que se indique lo contrario, y nunca habilita el láser por sí mismo. Por eso un módulo puede verse sano en el banco de pruebas y aun así fallar en un puerto: el banco de pruebas no tiene paso 6.
En CodingBox
Check transceiver muestra el resultado de los pasos 3–5 tal como los vería un host: tipo, tasa, sumas de comprobación, clase de potencia, y señala las incoherencias antes de que el módulo llegue a un puerto; DDM cubre el paso 11 con monitores e indicadores en vivo.
El hardware detrás del paso 6 (política) y los límites de grupo de puertos detrás del paso 8: Dentro de un switch, Cómo valida cada NOS un módulo.