Lettura del DDM con strumenti: CLI, ethtool, SNMP, OpenConfig
Gli stessi byte A2h ti raggiungono attraverso molte vie: la CLI di uno switch, una NIC Linux, un poller SNMP, una pipeline di telemetria in streaming o un dump esadecimale grezzo generato da un programmatore. Questa pagina è il ricettario — i comandi, gli OID e i percorsi, e come decodificare un dump grezzo a mano quando lo strumento che hai davanti non lo fa.
CLI di switch e router
| Piattaforma | Comando DDM | Note |
|---|---|---|
| Cisco IOS / IOS-XE | show interfaces transceiver detail | soglie mostrate insieme ai valori; show idprom interface per l’identità |
| Cisco NX-OS | show interface ethernet1/1 transceiver details | per lane, per i QSFP |
| Cisco IOS-XR | show controllers optics 0/0/0/0 | include allarmi e tabella delle lane |
| Juniper Junos | show interfaces diagnostics optics xe-0/0/0 | soglie e stato degli allarmi inclusi |
| Arista EOS | show interfaces ethernet 1 transceiver dom | … transceiver detail aggiunge le soglie |
| 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 per i dettagli del modulo |
| SONiC | show interfaces transceiver eeprom -d Ethernet0 | sfputil show eeprom -d; … presence, … lpmode |
Equivalenti orientati all’identità e cosa cercare: Verifica delle ottiche sugli switch.
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
Per i moduli QSFP/CMIS il dump segue la struttura a pagine esposta dal driver (pagina inferiore, pagina superiore 00h, poi le pagine 01h/02h/03h/10h/11h dove supportate). ethtool decodifica completamente SFF-8472 e SFF-8636, e parzialmente CMIS, a seconda della versione del kernel.
Decodificare a mano un dump grezzo di A2h
La pagina inferiore di A2h si trova all’offset 0x0100 in un dump ethtool -m … raw on hex on. I monitor in tempo reale iniziano al byte 96 di A2h → offset 0x0160 nel dump:
0x0160: 1a 80 80 e8 1b 58 0f a0 03 e8 ...
└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
temp Vcc bias Tx Rx
| Byte | Grezzo | Conversione | Valore |
|---|---|---|---|
| 96–97 temperatura | 1A 80 = 6784 (con segno) | ÷ 256 | 26,5 °C |
| 98–99 Vcc | 80 E8 = 33000 | × 100 µV | 3,300 V |
| 100–101 bias Tx | 1B 58 = 7000 | × 2 µA | 14,0 mA |
| 102–103 potenza Tx | 0F A0 = 4000 | × 0,1 µW = 400 µW; 10·log10(0,400) | −3,98 dBm |
| 104–105 potenza Rx | 03 E8 = 1000 | × 0,1 µW = 100 µW | −10,0 dBm |
Queste conversioni presuppongono la calibrazione interna (A0h byte 92 bit 5); con calibrazione esterna applica prima le costanti di A2h 56–91 (Calibrazione). Le soglie si trovano in A2h 0–39 negli stessi formati; stato/controllo e flag in 110–117 (Soglie e allarmi). QSFP: monitor del modulo ai byte 22–27, monitor di lane a 34–57 della pagina inferiore; CMIS: pagina inferiore 14–25 e pagina 11h 154–201 (Diagnostica per lane).
SNMP
Standard: ENTITY-SENSOR-MIB (RFC 3433)
La maggior parte delle piattaforme espone ogni valore DDM come sensore fisico:
| Oggetto | OID | Significato |
|---|---|---|
| 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 | cifre decimali nel valore |
| entPhySensorValue | 1.3.6.1.2.1.99.1.1.1.4 | la lettura |
| entPhySensorOperStatus | 1.3.6.1.2.1.99.1.1.1.5 | 1 ok, 2 unavailable, 3 nonoperational |
L’indice del sensore si associa a una porta tramite ENTITY-MIB (entPhysicalDescr, entPhysicalContainedIn). Un valore di tipo 14 (dBm), scala 8, precisione 2 e valore −1234 significa −12,34 dBm.
MIB dei produttori
| Produttore | MIB / oggetto di esempio |
|---|---|
| Cisco | CISCO-ENTITY-SENSOR-MIB entSensorValue (1.3.6.1.4.1.9.9.91.1.1.1.1.4), soglie in 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, molti altri | solo ENTITY-SENSOR-MIB |
| Huawei | oggetti ottici di HUAWEI-ENTITY-EXTENT-MIB (potenza Rx/Tx, bias, temperatura) |
| MikroTik | MIKROTIK-MIB mtxrOpticalTable (potenza Rx/Tx, temperatura, tensione, bias) |
Gli NMS open source (LibreNMS, template Zabbix, Observium) li individuano automaticamente e li rappresentano in grafici; Prometheus usa snmp_exporter con gli stessi OID.
Telemetria in streaming (gNMI / OpenConfig)
openconfig-platform-transceiver modella un modulo come componente con canali fisici:
/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
Ogni leaf porta instant, avg, min, max sull’intervallo di campionamento. Sottoscrivi in modalità SAMPLE a 10–60 s; gnmic → Prometheus/InfluxDB → Grafana è la pipeline comune. I modelli nativi dei produttori (Cisco, Juniper, Arista) espongono gli stessi dati sotto i propri percorsi e di solito aggiungono contatori FEC e stato degli allarmi.
Windows e altri host
Su Windows non esiste uno strumento DDM nativo; le utility dei produttori di NIC (adattatori server) a volte mostrano i dati del modulo. FreeBSD mostra l’identità SFP e il DDM con ifconfig <if> -v sui driver supportati. Su un host che non riesce a leggere il modulo, il banco è il ripiego.
Frequenza di polling e buone pratiche
- I monitor del modulo si aggiornano alcune volte al secondo; un polling ogni 1–5 minuti basta per l’andamento nel tempo ed è delicato sul bus a due fili.
- Alcune piattaforme serializzano tutte le letture dei moduli attraverso un’unica CPU di gestione — SNMP walk aggressivi su centinaia di porte possono rallentare o andare in timeout.
- Non eseguire mai un secondo master (clip del programmatore, strumento in banda) su un bus che l’host sta interrogando (Interfaccia a due fili).
Confrontare le fonti
CLI, SNMP e telemetria leggono tutti gli stessi byte; le differenze di qualche decimo di dB tra loro sono dovute ai tempi di lettura, non a errori. Una differenza tra la lettura dell’host e la lettura sul banco dello stesso modulo merita di essere capita: temperatura, Vcc e gestione della calibrazione cambiano i numeri (Precisione e limiti).
In CodingBox
CodingBox è la porta d’accesso al banco: DDM mostra i monitor e i flag decodificati, con i byte grezzi a un clic di distanza nell’EEPROM editor, e l’esportazione CSV alimenta gli stessi dashboard che consumano SNMP o telemetria — così un modulo ha un’unica storia dall’ispezione in ingresso alla dismissione (Monitoraggio).