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-temperaturesfp-tx-powersfp-rx-powersfp-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(entPhysicalDescrentPhysicalContainedIn)映射到具體端口。類型為 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

每個葉子節點在採樣週期內都帶有 instantavgminmax。以 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,即可