CodingBox 문서

도구로 DDM 읽기: CLI, ethtool, SNMP, OpenConfig

동일한 A2h 바이트라도 도달하는 경로는 다양합니다: 스위치 CLI, Linux NIC, SNMP 폴러, 스트리밍 텔레메트리 파이프라인, 또는 프로그래머에서 뽑은 원시 16진수 덤프. 이 페이지는 실전 안내서입니다 — 명령어, 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                 # 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

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만
HuaweiHUAWEI-ENTITY-EXTENT-MIB 광학 객체(Rx/Tx 파워, 바이어스, 온도)
MikroTikMIKROTIK-MIB mtxrOpticalTable(Rx/Tx 파워, 온도, 전압, 바이어스)

오픈소스 NMS(LibreNMS, Zabbix 템플릿, Observium)는 이 값들을 자동으로 검색해 그래프로 표시하며, Prometheus는 동일한 OID로 snmp_exporter를 사용합니다.

스트리밍 텔레메트리(gNMI/OpenConfig)

openconfig-platform-transceiver는 모듈을 물리 채널을 가진 컴포넌트로 모델링합니다:

/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

각 leaf는 샘플링 주기 동안 instant, avg, min, max 값을 갖습니다. 10–60초 간격의 SAMPLE 모드로 구독하며, gnmic → Prometheus/InfluxDB → Grafana가 일반적인 파이프라인입니다. 벤더 고유 모델(Cisco, Juniper, Arista)은 동일한 데이터를 자체 경로로 노출하며, 대개 FEC 카운터와 알람 상태도 함께 제공합니다.

Windows 및 기타 호스트

Windows에는 기본 제공되는 DDM 도구가 없으며, NIC 벤더 유틸리티(서버 어댑터용)가 모듈 데이터를 보여주는 경우가 있습니다. FreeBSD는 지원되는 드라이버에서 ifconfig <if> -v로 SFP 식별 정보와 DDM을 보여줍니다. 모듈을 읽을 수 없는 호스트에서는 벤치가 대안입니다.

폴링 주기와 에티켓

  • 모듈 모니터는 초당 몇 회씩 갱신되므로, 1–5분 간격의 폴링이면 추세 파악에 충분하고 2선식 버스에도 부담이 적습니다.
  • 일부 플랫폼은 모든 모듈 읽기를 하나의 관리 CPU에서 순차 처리하므로, 수백 개 포트를 공격적으로 SNMP 워크하면 느려지거나 타임아웃이 발생할 수 있습니다.
  • 호스트가 폴링 중인 버스에서 두 번째 마스터(프로그래머 클립, 인밴드 도구)를 절대 실행하지 마십시오(2선식 인터페이스).

출처 비교

CLI, SNMP, 텔레메트리는 모두 동일한 바이트를 읽으므로 이들 사이의 수 십분의 1 dB 차이는 오차가 아니라 타이밍 때문입니다. 동일한 모듈에 대한 호스트 판독값과 벤치 판독값의 차이는 짚어볼 가치가 있습니다: 온도, Vcc, 교정 처리 방식이 수치를 바꿉니다(정확도와 한계).

CodingBox에서

CodingBox는 벤치 쪽 관문입니다: DDM이 디코딩된 모니터와 플래그를 보여주며, 원시 바이트는 클릭 한 번으로 EEPROM editor에서 확인할 수 있고, CSV 내보내기는 SNMP나 텔레메트리가 사용하는 것과 동일한 대시보드에 값을 공급합니다 — 그래서 모듈은 입고 검사부터 폐기까지 하나의 이력을 갖습니다(모니터링).


이 문서에서 부정확한 내용이나 오류를 발견하면 해당 부분을 선택하고 Ctrl+Enter를 눌러 해 주세요.