การอ่าน DDM ด้วยเครื่องมือ: CLI, ethtool, SNMP, OpenConfig · การวินิจฉัย DDM/DOM · ทรานซีฟเวอร์ออปติคัลและสายเคเบิล · เอกสารประกอบ · CodingBox
CodingBox เอกสารประกอบ

การอ่าน DDM ด้วยเครื่องมือ: CLI, ethtool, SNMP, OpenConfig

ไบต์ A2h ชุดเดียวกันมาถึงคุณผ่านหลายช่องทาง ไม่ว่าจะเป็น CLI ของสวิตช์ NIC บน Linux ตัวโพล SNMP ไปป์ไลน์เทเลเมทรีแบบสตรีมมิง หรือดัมป์เลขฐานสิบหกดิบจากเครื่องโปรแกรม เพจนี้เป็นตำราสูตรที่รวมคำสั่ง OID และพาธต่าง ๆ พร้อมวิธีถอดรหัสดัมป์ดิบด้วยมือเมื่อเครื่องมือตรงหน้าคุณทำสิ่งนี้ให้ไม่ได้

CLI ของสวิตช์และเราเตอร์

แพลตฟอร์มคำสั่ง DDMหมายเหตุ
Cisco IOS / IOS-XEshow interfaces transceiver detailแสดงค่าเกณฑ์คู่กับค่าที่วัดได้ ส่วน show idprom interface ใช้ดูข้อมูลระบุตัวตน
Cisco NX-OSshow interface ethernet1/1 transceiver detailsแยกตามเลนสำหรับ QSFP
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 transceivermlxlink -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 ดิบด้วยมือ

เพจล่างของ A2h อยู่ที่ออฟเซต 0x0100 ในดัมป์จาก ethtool -m … raw on hex on ค่าที่ตรวจวัดแบบสดเริ่มที่ 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 ไบอัส Tx1B 58 = 7000× 2 µA14.0 mA
ไบต์ 102–103 กำลังส่ง Tx0F A0 = 4000× 0.1 µW = 400 µW; 10·log10(0.400)−3.98 dBm
ไบต์ 104–105 กำลังรับ Rx03 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) ค่าที่มี type 14 (dBm), scale 8, precision 2 และ value −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อ็อบเจ็กต์เชิงแสงใน 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/…            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

แต่ละฟิลด์มาพร้อม instant, avg, min, max ตลอดช่วงเวลาสุ่มตัวอย่าง ให้ subscribe ในโหมด SAMPLE ทุก 10–60 s gnmic → Prometheus/InfluxDB → Grafana เป็นไปป์ไลน์ที่ใช้กันทั่วไป โมเดลเฉพาะของผู้ผลิตแต่ละราย (Cisco, Juniper, Arista) เปิดให้เข้าถึงข้อมูลชุดเดียวกันภายใต้พาธของตัวเอง และมักเพิ่มตัวนับ FEC กับสถานะอะลาร์มเข้ามาด้วย

Windows และโฮสต์อื่น ๆ

Windows ไม่มีเครื่องมืออ่านค่า DDM ในตัว ยูทิลิตีจากผู้ผลิต NIC (สำหรับการ์ดเซิร์ฟเวอร์) บางตัวแสดงข้อมูลโมดูลได้ FreeBSD แสดงข้อมูลระบุตัวตนของ SFP และ DDM ด้วย ifconfig <if> -v บนไดรเวอร์ที่รองรับ สำหรับโฮสต์ที่อ่านโมดูลไม่ได้ ทางเลือกสำรองคือโต๊ะทดสอบ

อัตราการโพลและมารยาทการใช้งาน

  • ค่าที่ตรวจวัดของโมดูลอัปเดตหลายครั้งต่อวินาที การโพลทุก 1–5 นาที ก็เพียงพอสำหรับดูแนวโน้มและไม่สร้างภาระให้บัสสองสาย
  • บางแพลตฟอร์มเรียงคิวการอ่านค่าโมดูลทั้งหมดผ่าน CPU การจัดการตัวเดียว การทำ SNMP walk อย่างหนักในพอร์ตนับร้อยอาจทำให้ช้าลงหรือไทม์เอาต์
  • ห้ามรันอุปกรณ์มาสเตอร์ตัวที่สอง (คลิปของเครื่องโปรแกรม, เครื่องมือแบบอินแบนด์) บนบัสที่โฮสต์กำลังโพลอยู่โดยเด็ดขาด (อินเทอร์เฟซสองสาย)

การเทียบแหล่งข้อมูล

CLI, SNMP และเทเลเมทรีต่างอ่านไบต์ชุดเดียวกัน ความต่างเพียงเศษเสี้ยวของ dB ระหว่างกันเป็นเรื่องของจังหวะเวลา ไม่ใช่ความผิดพลาด ความต่างระหว่างค่าที่โฮสต์อ่านได้กับค่าที่อ่านได้บนโต๊ะทดสอบจากโมดูลตัวเดียวกันเป็นสิ่งที่ควรทำความเข้าใจ เพราะอุณหภูมิ Vcc และวิธีจัดการการสอบเทียบล้วนเปลี่ยนตัวเลขได้ (ความแม่นยำและข้อจำกัด)

ใน CodingBox

CodingBox คือประตูสู่โต๊ะทดสอบ: หน้าจอ DDM ในแอป แสดงค่าที่ตรวจวัดและแฟล็กที่ถอดรหัสแล้ว โดยไบต์ดิบอยู่ห่างออกไปแค่คลิกเดียวใน EEPROM editor และการส่งออก CSV ก็ป้อนเข้าแดชบอร์ดชุดเดียวกับที่ใช้ข้อมูลจาก SNMP หรือเทเลเมทรี ทำให้โมดูลหนึ่งตัวมีประวัติเดียวตั้งแต่ตรวจรับเข้าจนถึงปลดระวาง (การตรวจติดตาม)


หากพบข้อมูลที่ไม่ถูกต้องหรือข้อผิดพลาดในบทความนี้ ให้เลือกข้อความส่วนนั้นแล้วกด Ctrl+Enter เพื่อ