Lectura de DDM con herramientas: CLI, ethtool, SNMP, OpenConfig
Los mismos bytes de A2h le llegan por muchas puertas: una CLI de switch, una NIC de Linux, un poller SNMP, una canalización de telemetría en streaming o un volcado hexadecimal en bruto desde un programador. Esta página es el recetario: los comandos, los OID y las rutas, y cómo decodificar un volcado en bruto a mano cuando la herramienta que tiene delante no lo hace.
CLI de switch y router
| Plataforma | Comando de DDM | Notas |
|---|---|---|
| Cisco IOS / IOS-XE | show interfaces transceiver detail | los umbrales se muestran junto a los valores; show idprom interface para la identidad |
| Cisco NX-OS | show interface ethernet1/1 transceiver details | por carril en QSFP |
| Cisco IOS-XR | show controllers optics 0/0/0/0 | incluye alarmas y tabla de carriles |
| Juniper Junos | show interfaces diagnostics optics xe-0/0/0 | incluye umbrales y estado de alarma |
| Arista EOS | show interfaces ethernet 1 transceiver dom | … transceiver detail añade los umbrales |
| Huawei VRP | display transceiver interface XGigabitEthernet0/0/1 verbose | — |
| MikroTik RouterOS | /interface ethernet monitor sfp1 | sfp-temperature, sfp-tx-power, sfp-rx-power, sfp-tx-bias-current |
| Dell OS10 | show interface ethernet 1/1/1 transceiver | — |
| NVIDIA Cumulus / Onyx | l1-show swp1 / show interfaces ethernet 1/1 transceiver | mlxlink -d <dev> -p <port> -m para detalles del módulo |
| SONiC | show interfaces transceiver eeprom -d Ethernet0 | sfputil show eeprom -d; … presence, … lpmode |
Equivalentes orientados a la identidad y qué buscar: Verificación de la óptica en switches.
Linux: ethtool
ethtool -m eth0 # decoded identity + DDM (when the driver supports module EEPROM)
ethtool -m eth0 raw on hex on # raw dump: A0h at 0x0000–0x00ff, A2h at 0x0100–0x01ff (SFP)
ethtool -m eth0 hex on offset 256 length 128 # A2h lower page only
ethtool --show-fec eth0 # FEC mode
ethtool -S eth0 | grep -i fec # fec_corrected_blocks / fec_uncorrectable_blocks
En los módulos QSFP/CMIS, el volcado sigue el diseño paginado que expone el controlador (página inferior, superior 00h, y luego las páginas 01h/02h/03h/10h/11h donde estén disponibles). ethtool decodifica por completo SFF-8472 y SFF-8636, y CMIS parcialmente, según la versión del kernel.
Decodificación manual de un volcado en bruto de A2h
La página inferior de A2h está en el desplazamiento 0x0100 de un volcado ethtool -m … raw on hex on. Los monitores en vivo empiezan en el byte 96 de A2h → desplazamiento 0x0160:
0x0160: 1a 80 80 e8 1b 58 0f a0 03 e8 ...
└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
temp Vcc bias Tx Rx
| Bytes | Bruto | Conversión | Valor |
|---|---|---|---|
| 96–97 temperatura | 1A 80 = 6784 (con signo) | ÷ 256 | 26,5 °C |
| 98–99 Vcc | 80 E8 = 33000 | × 100 µV | 3,300 V |
| 100–101 polarización de Tx | 1B 58 = 7000 | × 2 µA | 14,0 mA |
| 102–103 potencia de Tx | 0F A0 = 4000 | × 0,1 µW = 400 µW; 10·log10(0,400) | −3,98 dBm |
| 104–105 potencia de Rx | 03 E8 = 1000 | × 0,1 µW = 100 µW | −10,0 dBm |
Estas conversiones suponen calibración interna (A0h byte 92 bit 5); con calibración externa, aplique antes las constantes de A2h 56–91 (Calibración). Los umbrales están en A2h 0–39 con los mismos formatos; el estado/control y las banderas en 110–117 (Umbrales y alarmas). QSFP: los monitores del módulo están en los bytes 22–27, los monitores de carril en 34–57 de la página inferior; CMIS: página inferior 14–25 y página 11h 154–201 (Diagnóstico por carril).
SNMP
Estándar: ENTITY-SENSOR-MIB (RFC 3433)
La mayoría de las plataformas exponen cada valor de DDM como un sensor físico:
| Objeto | OID | Significado |
|---|---|---|
| entPhySensorType | 1.3.6.1.2.1.99.1.1.1.1 | 4 voltsDC, 5 amperes, 8 celsius, 14 dBm |
| entPhySensorScale | 1.3.6.1.2.1.99.1.1.1.2 | 8 = units, 7 = milli, 6 = micro… |
| entPhySensorPrecision | 1.3.6.1.2.1.99.1.1.1.3 | número de decimales del valor |
| entPhySensorValue | 1.3.6.1.2.1.99.1.1.1.4 | la lectura |
| entPhySensorOperStatus | 1.3.6.1.2.1.99.1.1.1.5 | 1 ok, 2 unavailable, 3 nonoperational |
El índice del sensor se asocia a un puerto mediante ENTITY-MIB (entPhysicalDescr, entPhysicalContainedIn). Un valor de tipo 14 (dBm), escala 8, precisión 2 y valor −1234 significa −12,34 dBm.
MIB de fabricante
| Fabricante | MIB / objeto de ejemplo |
|---|---|
| Cisco | CISCO-ENTITY-SENSOR-MIB entSensorValue (1.3.6.1.4.1.9.9.91.1.1.1.1.4), umbrales en entSensorThresholdTable |
| Juniper | JUNIPER-DOM-MIB: jnxDomCurrentRxLaserPower (…2636.3.60.1.1.1.1.5, 0,01 dBm), jnxDomCurrentTxLaserBiasCurrent (.6), jnxDomCurrentTxLaserOutputPower (.7), jnxDomCurrentModuleTemperature (.8) |
| Arista, Dell y muchos otros | solo ENTITY-SENSOR-MIB |
| Huawei | objetos ópticos de HUAWEI-ENTITY-EXTENT-MIB (potencia Rx/Tx, polarización, temperatura) |
| MikroTik | MIKROTIK-MIB mtxrOpticalTable (potencia Rx/Tx, temperatura, tensión, polarización) |
Los NMS de código abierto (LibreNMS, plantillas de Zabbix, Observium) los descubren automáticamente y los grafican; Prometheus usa snmp_exporter con los mismos OID.
Telemetría en streaming (gNMI / OpenConfig)
openconfig-platform-transceiver modela un módulo como un componente con canales físicos:
/components/component[name=Ethernet1/1]/transceiver/state/… vendor, part, serial, form-factor
/components/component[name=…]/transceiver/physical-channels/channel[index=0]/state/input-power/instant
/components/component[name=…]/transceiver/physical-channels/channel[index=0]/state/output-power/instant
/components/component[name=…]/transceiver/physical-channels/channel[index=0]/state/laser-bias-current/instant
/components/component[name=…]/state/temperature/instant
Cada leaf incluye instant, avg, min, max a lo largo del intervalo de muestreo. Suscríbase en modo SAMPLE a 10–60 s; gnmic → Prometheus/InfluxDB → Grafana es la canalización habitual. Los modelos nativos de cada fabricante (Cisco, Juniper, Arista) exponen los mismos datos bajo sus propias rutas y suelen añadir contadores de FEC y estado de alarma.
Windows y otros hosts
Windows no tiene una herramienta DDM nativa; las utilidades del fabricante de la NIC (adaptadores de servidor) a veces muestran los datos del módulo. FreeBSD muestra la identidad SFP y el DDM con ifconfig <if> -v en los controladores compatibles. En un host que no puede leer el módulo, el banco es el recurso de respaldo.
Frecuencia de sondeo y buenas prácticas
- Los monitores del módulo se actualizan varias veces por segundo; sondear cada 1–5 minutos basta para ver la tendencia y es suave con el bus de dos hilos.
- Algunas plataformas serializan todas las lecturas de módulos a través de una sola CPU de gestión: un walk SNMP agresivo de cientos de puertos puede ralentizarse o agotar el tiempo de espera.
- Nunca ejecute un segundo maestro (pinza de programador, herramienta in-band) en un bus que el host está sondeando (Interfaz de dos hilos).
Comparación de fuentes
La CLI, el SNMP y la telemetría leen todos los mismos bytes; las diferencias de unas décimas de dB entre ellos son cuestión de temporización, no de error. Una diferencia entre la lectura del host y la del banco para el mismo módulo merece entenderse: la temperatura, la Vcc y el tratamiento de la calibración cambian las cifras (Precisión y límites).
En CodingBox
CodingBox es la puerta del banco: DDM muestra los monitores y las banderas decodificados con los bytes en bruto a un clic de distancia en el EEPROM editor, y la exportación a CSV alimenta los mismos paneles que consumen SNMP o telemetría, de modo que un módulo tiene un único historial desde la inspección de entrada hasta la baja (Monitorización).