เครื่องมือและการวินิจฉัย NIC: อ่านข้อมูลโมดูลจากเซิร์ฟเวอร์
เซิร์ฟเวอร์ไม่มีคำสั่ง show interface transceiver แต่มีข้อมูลชุดเดียวกันอยู่อีกเลเยอร์หนึ่งลงไป ไดรเวอร์ของ NIC จะอ่าน EEPROM ของโมดูลแล้วแสดงผ่าน ethtool ยูทิลิตีของผู้ผลิต และบน Windows กับ ESXi ผ่านคำสั่งของตัวเอง หน้านี้รวบรวมเครื่องมือตามระบบปฏิบัติการและผู้ผลิต สิ่งที่แต่ละตัวแสดง (ข้อมูลระบุตัวตน, DDM, ตัวนับ FEC, สถานะลิงก์, PCIe) และวิธีตีความผลลัพธ์เมื่อลิงก์ล่มหรือมีข้อผิดพลาดสะสม
| คำสั่ง | แสดง |
|---|
ethtool eth0 | สถานะลิงก์, ความเร็ว, ดูเพล็กซ์, การเจรจาอัตโนมัติ, โหมดที่รองรับ/ประกาศ, ชนิดพอร์ต (FIBRE/DA) |
ethtool -m eth0 (--module-info) | EEPROM ที่ถอดรหัสแล้ว: ตัวระบุ, ผู้ผลิต, PN, SN, วันที่, ความสอดคล้อง, ความยาวคลื่น, ความยาว; DDM (อุณหภูมิ, Vcc, ไบอัส, กำลัง Tx/Rx, ค่าเกณฑ์, แฟล็กอะลาร์ม) ถ้าโมดูลมี |
ethtool -m eth0 raw on hex on | ดัมป์ดิบของ A0h (และ A2h) สำหรับเทียบกันทีละไบต์ (แผนผังหน่วยความจำ) |
ethtool -m eth0 page 0x11 … (รุ่นใหม่กว่า) | เพจ CMIS บนโมดูล 400G ขึ้นไป |
ethtool -i eth0 | ไดรเวอร์, เวอร์ชัน, เวอร์ชันเฟิร์มแวร์/NVM, แอดเดรสบัส |
ethtool -S eth0 | สถิติ รวมถึงข้อผิดพลาด CRC, FEC ที่แก้ไขแล้ว/แก้ไขไม่ได้ในไดรเวอร์บางตัว |
ethtool --show-fec eth0 / --set-fec eth0 encoding rs | โหมด FEC ที่คอนฟิกไว้และที่ใช้งานอยู่ |
ethtool -s eth0 speed 25000 duplex full autoneg off | บังคับความเร็ว |
ethtool -p eth0 5 | กะพริบไฟ LED ของพอร์ตเพื่อระบุตำแหน่งพอร์ต |
ethtool --show-priv-flags eth0 | แฟล็กเฉพาะของไดรเวอร์ (เช่น link-down-on-close) |
แหล่งข้อมูลอื่นบน Linux: dmesg กรองด้วยคำ sfp, module และ link (ข้อความจากไดรเวอร์เกี่ยวกับการตรวจสอบคุณสมบัติของโมดูล), lspci -vv -s <addr> (ความกว้าง/ความเร็วลิงก์ PCIe ใต้ LnkSta), ip -s link show eth0 (ตัวนับ), /sys/class/net/eth0/ (carrier, ความเร็ว)
เครื่องมือของผู้ผลิต
| ผู้ผลิต | เครื่องมือ | การใช้งานหลัก |
|---|
| Nvidia / Mellanox | mlxlink -d <pci> -m -e -c | ข้อมูลโมดูลและ DDM (-m), ไดอะแกรมตา/BER และ FEC (-e, -c), คู่ลิงก์; mlxlink … --fec_override, --speeds |
| Nvidia / Mellanox | mlxconfig -d <pci> q / set | ชนิดพอร์ต (IB/ETH), ชนิดลิงก์, KEEP_ETH_LINK_UP, การโอเวอร์ไรด์ FEC, เบรกเอาต์ |
| Nvidia / Mellanox | mst status, mlxfwmanager | รายชื่ออุปกรณ์, เฟิร์มแวร์ |
| Nvidia / Mellanox | ibstat, ibportstate, iblinkinfo | สถานะพอร์ต InfiniBand, ความกว้าง, ความเร็ว (ฟาบริก IB) |
| Intel | ethtool -m | หลัก; Intel ไม่มีเครื่องมือดัมป์โมดูลเฉพาะของตัวเอง |
| Intel | nvmupdate64e, epct64e | อัปเดตเฟิร์มแวร์ NVM; คอนฟิกพอร์ต (ตัวเลือกพอร์ตของ E810 เช่น 2×100G เทียบกับ 4×25G) |
| Intel | dmesg | ข้อความ ixgbe/i40e/ice: unsupported module (ความเข้ากันได้ของออปติก) |
| Broadcom | bnxtnvm, niccli | NVM, การตั้งค่าพอร์ต, FEC/AN, ข้อมูลทรานซีฟเวอร์ |
| Marvell | qedctl | — |
| AMD Solarflare | sfupdate, sfboot | เฟิร์มแวร์, โหมดพอร์ต |
| Chelsio | cxgbtool | — |
Windows
| คำสั่ง | แสดง |
|---|
Get-NetAdapter | สถานะลิงก์, ความเร็ว |
Get-NetAdapterAdvancedProperty -Name "Ethernet 2" | ความเร็ว/ดูเพล็กซ์, โหมด FEC, เฟรมจัมโบ้ — ตั้งค่าได้ด้วย Set-NetAdapterAdvancedProperty |
Get-NetAdapterHardwareInfo | สล็อต PCIe, ความกว้าง/ความเร็วลิงก์ |
Get-NetAdapterStatistics | ตัวนับ |
Intel PROSet: Get-IntelNetAdapter, Get-IntelNetAdapterSetting | การตั้งค่าเฉพาะของ Intel; ข้อมูลโมดูลใน Device Manager → แท็บ Link Speed |
Nvidia WinOF-2: mlx5cmd -Stat, mlxlink (รุ่นบิลด์ Windows) | ข้อมูลโมดูลและการวินิจฉัยลิงก์ |
| Event Viewer → System | ข้อความจากไดรเวอร์เกี่ยวกับโมดูลที่ไม่รองรับ |
ไดรเวอร์ของ Windows มักไม่เปิดให้เข้าถึง DDM ให้ใช้เครื่องมือของผู้ผลิตหรืออ่านโมดูลบนโต๊ะทดสอบแทน
VMware ESXi
| คำสั่ง | แสดง |
|---|
esxcli network nic list / get -n vmnic0 | ลิงก์, ความเร็ว, ไดรเวอร์, เฟิร์มแวร์ |
esxcli network nic stats get -n vmnic0 | ตัวนับ |
esxcli system module parameters list -m ixgben / set -m ixgben -p "…" | พารามิเตอร์ของไดรเวอร์ในรุ่นที่รองรับ |
esxcli intnet … (ปลั๊กอินของ Intel), esxcli mellanox … / mlxlink (ปลั๊กอินของ Nvidia) | การวินิจฉัยของผู้ผลิต รวมถึงข้อมูลโมดูล |
vmkernel.log | “unsupported module”, ลิงก์กระพริบ |
esxcli hardware pci list | สถานะลิงก์ PCIe |
การอ่านผลลัพธ์
| สิ่งที่สังเกตเห็น | ความหมาย | ขั้นถัดไป |
|---|
ethtool -m: “Cannot get module EEPROM information: Operation not supported” | ไดรเวอร์ไม่เปิดให้เข้าถึง, พอร์ตไม่มีโมดูลเสียบอยู่ หรือ I²C ของโมดูลไม่ตอบสนอง | ตรวจสอบ dmesg, เสียบใหม่, ลองพอร์ตอื่น (ข้อผิดพลาดในการอ่าน/เขียน) |
อ่านข้อมูลระบุตัวตนได้, Link detected: no, กำลังรับ (Rx) ปกติ | ความเร็ว/FEC/AN ไม่ตรงกัน | ethtool --show-fec, เทียบกับสวิตช์ (FEC และ AN) |
| กำลังรับ (Rx) −40 dBm / "-inf" | ไม่มีแสง | ใยแก้วนำแสง, ปลายทางอีกฝั่ง, โพลาริตี (ไม่มีลิงก์) |
| ไบอัสและกำลังส่ง (Tx) ปกติดี, Rx ก้ำกึ่ง | คอนเนกเตอร์สกปรก, ลิงก์ระยะไกล | ทำความสะอาด, ตรวจงบประมาณ (กำลังรับและงบประมาณลิงก์) |
| ตัวนับ FEC ที่แก้ไขไม่ได้เพิ่มขึ้น | ลิงก์ใกล้ขีดจำกัด | ระดับค่าใน DDM, คลาสของสาย, อุณหภูมิ (ค่าตรวจวัด VDM และ FEC) |
| อุณหภูมิ > 70 °C ในเซิร์ฟเวอร์ 1U | การไหลเวียนอากาศ | จัดตำแหน่งใหม่, สล็อต OCP (พอร์ตและ PCIe) |
LnkSta: Speed 8GT/s, Width x8 บนการ์ด 2×100G | คอขวดของ PCIe | สล็อต/การแบ่งเลน PCIe |
dmesg: unsupported module | whitelist ของไดรเวอร์ | ความเข้ากันได้ของออปติกบน NIC |
การตรวจติดตามจากเซิร์ฟเวอร์
- ผลลัพธ์จาก
ethtool -m แยกวิเคราะห์ด้วยโปรแกรมได้ งาน cron หรือ node exporter ที่มีตัวเก็บข้อมูล ethtool จะส่งออกค่า DDM ไปยังระบบตรวจติดตามแบบ Prometheus ได้ (การตรวจติดตาม) - ผลลัพธ์ JSON ของ
mlxlink (--json) จาก Nvidia และตัวนับ FEC ของ ethtool -S จาก Intel เป็นสัญญาณเตือนล่วงหน้าก่อนเกิดความล้มเหลวที่ดี (ความน่าเชื่อถือของลิงก์และการตรวจติดตาม) - ช่วงเวลาโพล 30–60 s ก็เพียงพอ; ตัว DDM เองอัปเดตได้เร็วสุดคือทุกวินาที
ใน CodingBox
ethtool -m raw on hex on และ CodingBox อ่านไบต์ชุดเดียวกัน เมื่อโมดูลทำงานต่างกันบน NIC และบนโต๊ะทดสอบ ให้เทียบดัมป์ทั้งสองทีละฟิลด์ — ไดรเวอร์ที่ไม่เขียนทับอะไรเลยจะแสดงข้อมูลตรงกันทุกประการ และความต่างใด ๆ ที่พบชี้ไปที่เพจไดนามิกของโมดูลเองหรือข้อผิดพลาดในการอ่าน (Check transceiver, การอ่านค่า DDM ด้วยเครื่องมือ)