用工具讀取 DDM:CLI、ethtool、SNMP、OpenConfig
同樣的 A2h 位元組可以通過許多途徑到達你手中:交換機 CLI、Linux 網卡、SNMP 輪詢器、流式遙測管道,或者編程器給出的原始十六進制轉儲。本文是一份操作手冊:列出命令、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 轉儲
在 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(有符號) | ÷ 256 | 26.5 °C |
| 98–99 Vcc | 80 E8 = 33000 | × 100 µV | 3.300 V |
| 100–101 Tx 偏置電流 | 1B 58 = 7000 | × 2 µA | 14.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 | 含義 |
|---|---|---|
| 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 | 數值的小數位數 |
| 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 dBm。
廠商 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 dBm)、jnxDomCurrentTxLaserBiasCurrent(.6)、jnxDomCurrentTxLaserOutputPower(.7)、jnxDomCurrentModuleTemperature(.8) |
| Arista、Dell 及其他許多廠商 | 僅 ENTITY-SENSOR-MIB |
| 華為 | 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 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 或遙測數據的同一套儀表盤,這樣一個模組從來料檢驗到退役就只有一份歷史記錄(參見 監測)。