Đọc DDM bằng công cụ: CLI, ethtool, SNMP, OpenConfig
Cùng những byte A2h đó đến với bạn qua nhiều cửa khác nhau: CLI của switch, NIC Linux, bộ thăm dò SNMP, chuỗi xử lý đo từ xa liên tục, hoặc dump hex thô từ bộ lập trình. Trang này là cẩm nang — các lệnh, các OID và đường dẫn, và cách giải mã dump thô bằng tay khi công cụ trước mặt bạn không làm được việc đó.
CLI của switch và router
| Nền tảng | Lệnh DDM | Ghi chú |
|---|---|---|
| Cisco IOS / IOS-XE | show interfaces transceiver detail | ngưỡng hiển thị cùng với giá trị; show idprom interface để xem thông tin nhận dạng |
| Cisco NX-OS | show interface ethernet1/1 transceiver details | theo từng làn đối với QSFP |
| Cisco IOS-XR | show controllers optics 0/0/0/0 | gồm cả báo động và bảng làn |
| Juniper Junos | show interfaces diagnostics optics xe-0/0/0 | có kèm ngưỡng và trạng thái báo động |
| Arista EOS | show interfaces ethernet 1 transceiver dom | … transceiver detail bổ sung thêm ngưỡng |
| 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 để xem chi tiết module |
| SONiC | show interfaces transceiver eeprom -d Ethernet0 | sfputil show eeprom -d; … presence, … lpmode |
Các lệnh tương đương để xem thông tin nhận dạng và những gì cần chú ý: Kiểm tra module quang trên switch.
Linux: ethtool
ethtool -m eth0 # thông tin nhận dạng đã giải mã + DDM (khi driver hỗ trợ EEPROM của module)
ethtool -m eth0 raw on hex on # dump thô: A0h tại 0x0000–0x00ff, A2h tại 0x0100–0x01ff (SFP)
ethtool -m eth0 hex on offset 256 length 128 # chỉ trang dưới của A2h
ethtool --show-fec eth0 # chế độ FEC
ethtool -S eth0 | grep -i fec # fec_corrected_blocks / fec_uncorrectable_blocks
Đối với module QSFP/CMIS, dump theo đúng cách bố trí theo trang mà driver cung cấp (trang dưới, trang trên 00h, sau đó các trang 01h/02h/03h/10h/11h ở nơi được hỗ trợ). ethtool giải mã đầy đủ SFF-8472 và SFF-8636, và giải mã một phần CMIS tùy theo phiên bản kernel.
Giải mã dump A2h thô bằng tay
Trang dưới của A2h nằm tại offset 0x0100 trong dump từ lệnh ethtool -m … raw on hex on. Các đại lượng giám sát trực tiếp bắt đầu từ byte 96 của A2h → offset 0x0160 trong dump:
0x0160: 1a 80 80 e8 1b 58 0f a0 03 e8 ...
└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
nhiệt Vcc dòng Tx Rx
| Byte | Thô | Quy đổi | Giá trị |
|---|---|---|---|
| 96–97 nhiệt độ | 1A 80 = 6784 (có dấu) | ÷ 256 | 26,5 °C |
| 98–99 Vcc | 80 E8 = 33000 | × 100 µV | 3,300 V |
| 100–101 dòng phân cực Tx | 1B 58 = 7000 | × 2 µA | 14,0 mA |
| 102–103 công suất Tx | 0F A0 = 4000 | × 0,1 µW = 400 µW; 10·log10(0,400) | −3,98 dBm |
| 104–105 công suất Rx | 03 E8 = 1000 | × 0,1 µW = 100 µW | −10,0 dBm |
Các phép quy đổi này giả định hiệu chuẩn nội bộ (A0h byte 92 bit 5); với hiệu chuẩn ngoài, trước tiên hãy áp dụng các hằng số từ A2h 56–91 (Hiệu chuẩn). Ngưỡng nằm tại A2h 0–39 theo cùng định dạng; trạng thái/điều khiển và cờ nằm tại 110–117 (Ngưỡng và báo động). QSFP: các đại lượng giám sát của module nằm tại byte 22–27, các đại lượng giám sát theo làn nằm tại 34–57 của trang dưới; CMIS: trang dưới 14–25 và trang 11h 154–201 (Chẩn đoán theo từng làn).
SNMP
Chuẩn: ENTITY-SENSOR-MIB (RFC 3433)
Hầu hết các nền tảng đưa ra mọi giá trị DDM dưới dạng một cảm biến vật lý:
| Đối tượng | OID | Ý nghĩa |
|---|---|---|
| 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 = đơn vị, 7 = mili, 6 = micro… |
| entPhySensorPrecision | 1.3.6.1.2.1.99.1.1.1.3 | số chữ số thập phân trong giá trị |
| entPhySensorValue | 1.3.6.1.2.1.99.1.1.1.4 | giá trị đọc được |
| entPhySensorOperStatus | 1.3.6.1.2.1.99.1.1.1.5 | 1 ok, 2 unavailable, 3 nonoperational |
Chỉ số của cảm biến được ánh xạ tới một cổng thông qua ENTITY-MIB (entPhysicalDescr, entPhysicalContainedIn). Một giá trị kiểu 14 (dBm), thang đo 8, độ chính xác 2 và giá trị −1234 có nghĩa là −12,34 dBm.
MIB của nhà sản xuất
| Nhà sản xuất | MIB / đối tượng ví dụ |
|---|---|
| Cisco | CISCO-ENTITY-SENSOR-MIB entSensorValue (1.3.6.1.4.1.9.9.91.1.1.1.1.4), ngưỡng trong 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 và nhiều hãng khác | chỉ ENTITY-SENSOR-MIB |
| Huawei | các đối tượng quang của HUAWEI-ENTITY-EXTENT-MIB (công suất Rx/Tx, dòng phân cực, nhiệt độ) |
| MikroTik | MIKROTIK-MIB mtxrOpticalTable (công suất Rx/Tx, nhiệt độ, điện áp, dòng phân cực) |
NMS mã nguồn mở (LibreNMS, mẫu Zabbix, Observium) tự động phát hiện các giá trị này và vẽ đồ thị; Prometheus dùng snmp_exporter với cùng các OID đó.
Đo từ xa liên tục (gNMI / OpenConfig)
openconfig-platform-transceiver mô hình hóa module dưới dạng một thành phần có các kênh vật lý:
/components/component[name=Ethernet1/1]/transceiver/state/… nhà sản xuất, mã sản phẩm, số sê-ri, 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
Mỗi trường dữ liệu mang giá trị instant, avg, min, max trong khoảng thời gian lấy mẫu. Đăng ký ở chế độ SAMPLE với chu kỳ 10–60 s; chuỗi xử lý phổ biến là gnmic → Prometheus/InfluxDB → Grafana. Các mô hình riêng của từng nhà sản xuất (Cisco, Juniper, Arista) đưa ra cùng loại dữ liệu đó theo đường dẫn riêng của mình, và thường bổ sung thêm bộ đếm FEC và trạng thái báo động.
Windows và các host khác
Windows không có công cụ DDM dựng sẵn; các tiện ích của nhà sản xuất NIC (dành cho adapter máy chủ) đôi khi hiển thị dữ liệu module. FreeBSD hiển thị thông tin nhận dạng và DDM của SFP bằng ifconfig <if> -v trên các driver được hỗ trợ. Trên host không đọc được module, phương án dự phòng là bàn thử.
Tần suất thăm dò và quy tắc ứng xử
- Các đại lượng giám sát của module cập nhật vài lần mỗi giây; thăm dò mỗi 1–5 phút là đủ để theo dõi xu hướng và nhẹ nhàng với bus hai dây.
- Một số nền tảng dồn mọi lượt đọc module qua một CPU quản lý duy nhất — các đợt quét SNMP dồn dập trên hàng trăm cổng có thể làm chậm hệ thống hoặc bị hết thời gian chờ.
- Không bao giờ chạy một master thứ hai (kẹp bộ lập trình, công cụ trong băng) trên bus mà host đang thăm dò (Giao diện hai dây).
So sánh các nguồn
CLI, SNMP và đo từ xa đều đọc cùng những byte đó; chênh lệch vài phần mười dB giữa chúng là do thời điểm đọc khác nhau, không phải do sai số. Chênh lệch giữa giá trị đọc trên host và giá trị đọc trên bàn thử của cùng một module là điều đáng tìm hiểu: nhiệt độ, Vcc và cách xử lý hiệu chuẩn làm thay đổi các con số (Độ chính xác và giới hạn).
Trong CodingBox
CodingBox là cánh cửa bàn thử: DDM hiển thị các đại lượng giám sát và cờ đã giải mã, với byte thô chỉ cách một cú nhấp trong EEPROM editor, còn việc xuất CSV cấp dữ liệu cho cùng những trang tổng quan vốn cũng nhận dữ liệu từ SNMP hay đo từ xa — nhờ vậy một module có một lịch sử duy nhất từ kiểm tra đầu vào đến khi ngừng sử dụng (Giám sát).