用工具读取 DDM:CLI、ethtool、SNMP、OpenConfig · DDM/DOM 诊断 · 光模块与线缆 · 文档 · CodingBox
CodingBox 文档

用工具读取 DDM:CLI、ethtool、SNMP、OpenConfig

同样的 A2h 字节可以通过许多途径到达你手中:交换机 CLI、Linux 网卡、SNMP 轮询器、流式遥测管道,或者编程器给出的原始十六进制转储。本文是一份操作手册:列出命令、OID 和路径,并说明当手边的工具不做解码时,如何手动解析一份原始转储。

交换机与路由器 CLI

平台DDM 命令说明
Cisco IOS / IOS-XEshow interfaces transceiver detail阈值与数值一并显示;识别信息用 show idprom interface
Cisco NX-OSshow interface ethernet1/1 transceiver detailsQSFP 按通道显示
Cisco IOS-XRshow controllers optics 0/0/0/0包含告警和通道表
Juniper Junosshow interfaces diagnostics optics xe-0/0/0包含阈值和告警状态
Arista EOSshow interfaces ethernet 1 transceiver dom… transceiver detail 会加上阈值
Huawei VRPdisplay transceiver interface XGigabitEthernet0/0/1 verbose—
MikroTik RouterOS/interface ethernet monitor sfp1sfp-temperature、sfp-tx-power、sfp-rx-power、sfp-tx-bias-current
Dell OS10show interface ethernet 1/1/1 transceiver—
NVIDIA Cumulus / Onyxl1-show swp1 / show interfaces ethernet 1/1 transceiver模块详情用 mlxlink -d <dev> -p <port> -m
SONiCshow interfaces transceiver eeprom -d Ethernet0sfputil 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 转储

在 ethtool -m … raw on hex on 的转储中,A2h 的低位页位于偏移量 0x0100。实时监测量从 A2h 字节 96 开始,对应转储偏移量 0x0160:

0x0160:  1a 80 80 e8 1b 58 0f a0 03 e8 ...
         └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
        temp    Vcc   bias   Tx     Rx
字节原始值换算数值
96–97 温度1A 80 = 6784(有符号)÷ 25626.5 °C
98–99 Vcc80 E8 = 33000× 100 µV3.300 V
100–101 Tx 偏置电流1B 58 = 7000× 2 µA14.0 mA
102–103 Tx 功率0F A0 = 4000× 0.1 µW = 400 µW;10·log10(0.400)−3.98 dBm
104–105 Rx 功率03 E8 = 1000× 0.1 µW = 100 µW−10.0 dBm

这些换算假定为内部校准(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含义
entPhySensorType1.3.6.1.2.1.99.1.1.1.14 = voltsDC,5 = amperes,8 = celsius,14 = dBm
entPhySensorScale1.3.6.1.2.1.99.1.1.1.28 = units,7 = milli,6 = micro…
entPhySensorPrecision1.3.6.1.2.1.99.1.1.1.3数值的小数位数
entPhySensorValue1.3.6.1.2.1.99.1.1.1.4读数本身
entPhySensorOperStatus1.3.6.1.2.1.99.1.1.1.51 = ok,2 = unavailable,3 = nonoperational

传感器的索引通过 ENTITY-MIB(entPhysicalDescr、entPhysicalContainedIn)映射到具体端口。类型为 14(dBm)、量程为 8、精度为 2、数值为 −1234,表示 −12.34 dBm。

厂商 MIB

厂商MIB / 示例对象
CiscoCISCO-ENTITY-SENSOR-MIB 的 entSensorValue(1.3.6.1.4.1.9.9.91.1.1.1.1.4),阈值在 entSensorThresholdTable 中
JuniperJUNIPER-DOM-MIB:jnxDomCurrentRxLaserPower(…2636.3.60.1.1.1.1.5,0.01 dBm)、jnxDomCurrentTxLaserBiasCurrent(.6)、jnxDomCurrentTxLaserOutputPower(.7)、jnxDomCurrentModuleTemperature(.8)
Arista、Dell 及其他许多厂商仅 ENTITY-SENSOR-MIB
华为HUAWEI-ENTITY-EXTENT-MIB 的光学对象(Rx/Tx 功率、偏置电流、温度)
MikroTikMIKROTIK-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 s 订阅;常见流程是 gnmic → Prometheus/InfluxDB → Grafana。厂商私有模型(Cisco、Juniper、 Arista)在各自的路径下暴露相同数据,通常还会加上 FEC 计数器和告警状态。

Windows 及其他主机

Windows 没有原生的 DDM 工具;网卡厂商自带的工具(服务器网卡)有时能显示模块数据。FreeBSD 在受支持的驱动上可以用 ifconfig <if> -v 显示 SFP 身份信息和 DDM。主机无法读取模块时,工作台就是备用方案。

轮询频率与注意事项

  • 模块监测量每秒刷新若干次;每 1–5 分钟轮询一次,既足以做趋势分析,也不会给两线总线造成负担。
  • 部分平台把所有模块读取都串行化到一颗管理 CPU 上,对数百个端口做高强度的 SNMP walk 可能导致变慢或超时。
  • 主机正在轮询的总线上,绝不要再运行第二个主设备(编程器夹具、带内工具)(参见 双线接口)。

比较不同来源

CLI、SNMP 和遥测读取的都是同一批字节;它们之间几分之一 dB 的差异来自采样时刻不同,而不是误差。同一模块在主机上的读数与工作台读数之间的差异值得弄清楚:温度、Vcc 和校准处理方式都会影响数值(参见精度与局限)。

CodingBox 中的呈现

CodingBox 是工作台一侧的入口:DDM 显示解码后的监测量和标志位,点一下就能在 EEPROM editor 中看到原始字节,CSV 导出又能接入消费 SNMP 或遥测数据的同一套仪表盘,这样一个模块从来料检验到退役就只有一份历史记录(参见 监测)。


如果您发现本资料中有不准确之处或错误,请选中相应片段并按 Ctrl+Enter,即可。