Снятие DDM инструментами: CLI, ethtool, SNMP, OpenConfig
Одни и те же байты A2h доходят до вас через много дверей: CLI коммутатора, сетевую карту Linux, SNMP-опросчик, конвейер потоковой телеметрии или сырой hex-дамп с программатора. Это поваренная книга — команды, OID и пути, и как вручную декодировать сырой дамп, когда инструмент под рукой этого не умеет.
CLI коммутаторов и маршрутизаторов
| Платформа | Команда DDM | Примечания |
|---|---|---|
| Cisco IOS / IOS-XE | show interfaces transceiver detail | пороги показаны рядом со значениями; show idprom interface для идентификации |
| Cisco NX-OS | show interface ethernet1/1 transceiver details | по каналам для QSFP |
| Cisco IOS-XR | show controllers optics 0/0/0/0 | включает аварии и таблицу каналов |
| Juniper Junos | show interfaces diagnostics optics xe-0/0/0 | пороги и состояние аварий включены |
| Arista EOS | show interfaces ethernet 1 transceiver dom | … transceiver detail добавляет пороги |
| 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 для деталей модуля |
| SONiC | show interfaces transceiver eeprom -d Ethernet0 | sfputil show eeprom -d; … presence, … lpmode |
Аналоги для идентификации и на что смотреть: Проверка оптики на коммутаторах.
Linux: ethtool
ethtool -m eth0 # декодированная идентификация + DDM (если драйвер поддерживает EEPROM модуля)
ethtool -m eth0 raw on hex on # сырой дамп: A0h по 0x0000–0x00ff, A2h по 0x0100–0x01ff (SFP)
ethtool -m eth0 hex on offset 256 length 128 # только нижняя страница A2h
ethtool --show-fec eth0 # режим FEC
ethtool -S eth0 | grep -i fec # fec_corrected_blocks / fec_uncorrectable_blocks
Для модулей QSFP/CMIS дамп следует страничной раскладке, которую отдаёт драйвер (нижняя страница, верхняя 00h, затем страницы 01h/02h/03h/10h/11h, где поддерживаются). ethtool полностью декодирует SFF-8472 и SFF-8636 и частично CMIS — в зависимости от версии ядра.
Декодирование сырого дампа A2h вручную
Нижняя страница A2h по смещению 0x0100 в дампе ethtool -m … raw on hex on. Живые мониторы начинаются с байта 96 A2h → смещение дампа 0x0160:
0x0160: 1a 80 80 e8 1b 58 0f a0 03 e8 ...
└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
темп. Vcc ток Tx Rx
| Байты | Сырое | Пересчёт | Значение |
|---|---|---|---|
| 96–97 температура | 1A 80 = 6784 (знаковое) | ÷ 256 | 26,5 °C |
| 98–99 Vcc | 80 E8 = 33000 | × 100 мкВ | 3,300 В |
| 100–101 ток Tx | 1B 58 = 7000 | × 2 мкА | 14,0 мА |
| 102–103 мощность Tx | 0F A0 = 4000 | × 0,1 мкВт = 400 мкВт; 10·log10(0,400) | −3,98 дБм |
| 104–105 мощность Rx | 03 E8 = 1000 | × 0,1 мкВт = 100 мкВт | −10,0 дБм |
Эти пересчёты предполагают внутреннюю калибровку (A0h байт 92 бит 5); при внешней сначала примените константы из A2h 56–91 (Калибровка). Пороги лежат в A2h 0–39 в тех же форматах; статус/управление и флаги — в 110–117 (Пороги и аварии). QSFP: мониторы модуля в байтах 22–27, канальные — в 34–57 нижней страницы; CMIS: нижняя страница 14–25 и страница 11h 154–201 (Поканальная диагностика).
SNMP
Стандарт: ENTITY-SENSOR-MIB (RFC 3433)
Большинство платформ отдают каждое значение DDM как физический датчик:
| Объект | OID | Смысл |
|---|---|---|
| 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 = единицы, 7 = милли, 6 = микро… |
| entPhySensorPrecision | 1.3.6.1.2.1.99.1.1.1.3 | знаков после запятой в значении |
| entPhySensorValue | 1.3.6.1.2.1.99.1.1.1.4 | показание |
| entPhySensorOperStatus | 1.3.6.1.2.1.99.1.1.1.5 | 1 ok, 2 unavailable, 3 nonoperational |
Индекс датчика сопоставляется с портом через ENTITY-MIB (entPhysicalDescr, entPhysicalContainedIn). Значение типа 14 (dBm), масштаб 8, точность 2 и значение −1234 означает −12,34 дБм.
Вендорские MIB
| Вендор | MIB / пример объекта |
|---|---|
| Cisco | CISCO-ENTITY-SENSOR-MIB entSensorValue (1.3.6.1.4.1.9.9.91.1.1.1.1.4), пороги в entSensorThresholdTable |
| Juniper | JUNIPER-DOM-MIB: jnxDomCurrentRxLaserPower (…2636.3.60.1.1.1.1.5, 0,01 дБм), jnxDomCurrentTxLaserBiasCurrent (.6), jnxDomCurrentTxLaserOutputPower (.7), jnxDomCurrentModuleTemperature (.8) |
| Arista, Dell и многие другие | только ENTITY-SENSOR-MIB |
| Huawei | оптические объекты HUAWEI-ENTITY-EXTENT-MIB (мощность Rx/Tx, ток, температура) |
| MikroTik | MIKROTIK-MIB mtxrOpticalTable (мощность Rx/Tx, температура, напряжение, ток) |
Открытые NMS (LibreNMS, шаблоны Zabbix, Observium) находят их автоматически и строят графики; Prometheus использует snmp_exporter с теми же OID.
Потоковая телеметрия (gNMI / OpenConfig)
openconfig-platform-transceiver моделирует модуль как компонент с физическими каналами:
/components/component[name=Ethernet1/1]/transceiver/state/… вендор, партномер, серийник, форм-фактор
/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
Каждый лист несёт instant, avg, min, max за интервал выборки. Подписывайтесь в режиме SAMPLE с шагом 10–60 с; gnmic → Prometheus/InfluxDB → Grafana — обычный конвейер. Родные модели вендоров (Cisco, Juniper, Arista) отдают те же данные по своим путям и обычно добавляют счётчики FEC и состояние аварий.
Windows и другие хосты
Родного инструмента DDM в Windows нет; утилиты вендоров сетевых карт (серверные адаптеры) иногда показывают данные модуля. FreeBSD показывает идентификацию и DDM SFP через ifconfig <if> -v на поддерживаемых драйверах. На хосте, который не может прочитать модуль, запасной вариант — стол.
Частота опроса и этикет
- Мониторы модуля обновляются несколько раз в секунду; опрос раз в 1–5 минут достаточен для трендов и щадит двухпроводную шину.
- Некоторые платформы пропускают все чтения модулей через один управляющий процессор — агрессивные SNMP-обходы сотен портов могут замедляться или отваливаться по таймауту.
- Никогда не запускайте второго ведущего (клипса программатора, внутриполосная утилита) на шине, которую опрашивает хост (Двухпроводной интерфейс).
Сравнение источников
CLI, SNMP и телеметрия читают одни и те же байты; расхождения в десятые доли дБ между ними — время, а не ошибка. Расхождение между показанием хоста и столовым чтением того же модуля стоит понять: температура, Vcc и обработка калибровки меняют числа (Точность и ограничения).
В CodingBox
CodingBox — столовая дверь: DDM показывает декодированные мониторы и флаги, сырые байты — в одном клике в редакторе EEPROM, а экспорт CSV кормит те же дашборды, что потребляют SNMP или телеметрию, — так у модуля одна история от входного контроля до списания (Мониторинг).