ความเข้ากันได้ของทรานซีฟเวอร์กับ NIC: รายการอนุญาตของไดรเวอร์
บนสวิตช์ นโยบายเกี่ยวกับโมดูลเป็นเพียงบรรทัดหนึ่งใน OS เครือข่าย แต่บนเซิร์ฟเวอร์มันคือการตัดสินใจของไดรเวอร์และเฟิร์มแวร์ของ NIC ซึ่งต่างกันไปตามผู้ผลิต ระบบปฏิบัติการ และเวอร์ชันของไดรเวอร์ การ์ด Intel เป็นกลุ่มที่ปฏิเสธโมดูลที่ไม่อยู่ในรายการ ส่วนผู้ผลิตรายอื่นส่วนใหญ่ยอมรับทุกอย่างที่แปลงค่าได้ หน้านี้รวบรวมพฤติกรรมแยกตามผู้ผลิตและระบบปฏิบัติการ วิธีข้ามการตรวจสอบที่มีเอกสารรองรับ กฎ FEC/การเจรจาอัตโนมัติที่ตัดสินว่า DAC และออปติกจะลิงก์ได้หรือไม่ และสิ่งที่ข้อมูลระบุตัวตนที่เขียนโค้ดไว้ต้องผ่านในฝั่งเซิร์ฟเวอร์
พฤติกรรมแยกตามผู้ผลิต
| ผู้ผลิต / ไดรเวอร์ | การตรวจสอบ | เมื่อไม่ผ่าน | การข้ามการตรวจสอบ | หมายเหตุ |
|---|---|---|---|---|
| Intel ixgbe (X520, X540, X550 SFP+) | รายชื่อ OUI ของผู้ผลิต / PN ของ SFP+ ที่ Intel รับรอง | failed to load because an unsupported SFP+ or QSFP module type was detected, พอร์ตดับ | พารามิเตอร์โมดูล allow_unsupported_sfp=1 (Linux); โหลดไดรเวอร์ใหม่ | DAC ยอมรับได้โดยทั่วไป; SFP 1G ถูกจำกัด |
| Intel i40e (X710, XXV710, XL710) | การรับรองโมดูลระดับเฟิร์มแวร์ | unsupported module ใน dmesg, ลิงก์ดับ หรือ “module not qualified” ใน ethtool | allow_unsupported_sfp=1 บน i40e รุ่นใหม่; รุ่นเก่าไม่มี | โมดูล 25G ของ XXV710 ถูกตรวจสอบอย่างเข้มงวด |
| Intel ice (E810) | การรับรองระดับ NVM/เฟิร์มแวร์ | Possible mis-configuration of the Ethernet port detected / โมดูลไม่ผ่านการรับรอง | ขึ้นอยู่กับ NVM และรุ่นไดรเวอร์; บางรุ่นรองรับการตั้งค่าที่อนุญาตโมดูลที่ไม่ผ่านการรับรอง บางรุ่นปฏิเสธ — ตรวจสอบบันทึกการเปลี่ยนแปลงของ Intel | ผ่อนปรนที่สุดในสาย Intel สำหรับ NVM รุ่นล่าสุด |
| Intel บน Windows (ไดรเวอร์ PROSet) | รายการเดียวกัน | อุปกรณ์แสดง “Network cable unplugged”, คำเตือนในบันทึกเหตุการณ์ | ไม่มีวิธีข้ามการตรวจสอบที่มีเอกสารรองรับ | ใช้โมดูลที่อยู่ในรายการของ Intel หรือเขียนโค้ดแบบ Intel |
| Intel บน VMware ESXi (ixgben, i40en, icen) | รายการเดียวกัน | ลิงก์ดับ, vmkernel.log แจ้ง “unsupported module” | พารามิเตอร์โมดูลผ่าน esxcli system module parameters set ในไดรเวอร์ที่เปิดให้ตั้งค่า allow_unsupported_sfp — ไม่มีในทุกเวอร์ชัน | เลือกใช้โมดูลที่ผ่านการรับรองในระบบโปรดักชัน |
| Nvidia / Mellanox mlx5 (ConnectX) | แปลงค่า EEPROM; Ethernet: ไม่มีรายการ | ลิงก์ขึ้น; mlxlink แสดงข้อมูลโมดูล | ไม่จำเป็น | โหมด InfiniBand: ตัวจัดการแฟบริกตรวจสอบข้อมูลระบุตัวตนของสาย/โมดูล และอาจตั้งค่าสถานะหรือลดระดับให้ (สายเคเบิล IB) |
| Broadcom bnxt_en (NetXtreme-E) | แปลงค่า; ไม่มีรายการในเอสเคยูส่วนใหญ่ | ขึ้น | — | เฟิร์มแวร์ของ OEM (Dell, HPE) อาจเพิ่มการตรวจสอบเข้ามา |
| Marvell / QLogic qede | แปลงค่า | ขึ้น | — | — |
| AMD Solarflare sfc | แปลงค่า | ขึ้น | — | — |
| Chelsio cxgb4 | แปลงค่า | ขึ้น | — | — |
| Pensando ionic | แปลงค่า | ขึ้น | — | — |
| NIC ของ OEM ฝั่งเซิร์ฟเวอร์ (Dell, HPE, Lenovo, Cisco UCS VIC) | อาจเพิ่มรายการของตัวเอง โดยเฉพาะ Cisco VIC | “unsupported transceiver” ใน CIMC/UCSM | ไม่มีอย่างเป็นทางการ | UCS VIC ยอมรับโมดูลที่เขียนโค้ดแบบ Cisco |
พฤติกรรมเปลี่ยนไปตามเวอร์ชันของไดรเวอร์และเฟิร์มแวร์ (NVM) ควรตรวจสอบกับชุดค่าผสมที่ใช้งานจริงเสมอ (ตารางความเข้ากันได้และเฟิร์มแวร์)
การเปิดใช้ตัวเลือกข้ามการตรวจสอบของ Intel (Linux)
# temporary (until reload)
modprobe -r ixgbe && modprobe ixgbe allow_unsupported_sfp=1
# persistent
echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe.conf
echo "options i40e allow_unsupported_sfp=1" > /etc/modprobe.d/i40e.conf
dracut -f # or update-initramfs -u
# verify
cat /sys/module/ixgbe/parameters/allow_unsupported_sfp
dmesg | grep -iE 'sfp|module|unsupported'
ethtool -m eth0
สำหรับการ์ดหลายพอร์ต พารามิเตอร์นี้รับรายการคั่นด้วยจุลภาค (หนึ่งค่าต่อพอร์ต) ในไดรเวอร์บางตัว การตั้งค่านี้ไม่ได้รับการรองรับจาก Intel สำหรับใช้งานจริง มันเอาเฉพาะการตรวจสอบออกไป ไม่ได้ยกเลิกข้อกำหนดทางไฟฟ้า
FEC และการเจรจาอัตโนมัติบน NIC
| ชนิดลิงก์ | AN | FEC | หมายเหตุ |
|---|---|---|---|
| 25G DAC | เปิด (Clause 73) ทั้งสองด้าน | เจรจาได้ (RS หรือ BASE-R ตามคลาสของสาย) | กรณี “DAC ไม่ลิงก์” ส่วนใหญ่เกิดจาก AN ถูกปิดที่ด้านใดด้านหนึ่ง |
| ออปติก 25G SR / LR | ปิด; บังคับที่ 25000 | RS-FEC สำหรับ SR (บังคับ), LR: RS หรือไม่มี — ต้องตรงกับสวิตช์ | ethtool --set-fec eth0 encoding rs |
| 100G DAC | เปิด | RS-FEC | — |
| 100G SR4 / CWDM4 / DR | ปิด | ต้องมี RS-FEC | — |
| 100G LR4 | ปิด | ไม่มี (RS ในบางแพลตฟอร์ม) | ให้ตรงกับสวิตช์ (FEC และการเจรจาอัตโนมัติ) |
| 200G / 400G | ปิดสำหรับออปติก | RS(544) KP4 เสมอ | — |
| 10G | ปิด | ไม่มี | — |
คำสั่งแยกตามระบบปฏิบัติการ: เครื่องมือ NIC และการวินิจฉัย; ฝั่งสวิตช์: สูตรการคอนฟิกพอร์ต
สิ่งที่โมดูลที่เขียนโค้ดต้องผ่านสำหรับ NIC
| เป้าหมาย | ขั้นต่ำ |
|---|---|
| Intel ixgbe/i40e โดยไม่ข้ามการตรวจสอบ | ชื่อผู้ผลิตและ PN จากรายการที่ Intel รับรอง (ตราสินค้า Intel เช่น E10GSFPSR/E10GSFPLR/E25GSFP28SR หรือชิ้นส่วนของ OEM ที่ Intel นำมาขายต่อ), รหัสความสอดคล้องและเช็กซัมที่สอดคล้องกัน |
| Intel เมื่อข้ามการตรวจสอบ, ผู้ผลิตที่ยอมรับทุกอย่าง | เช็กซัมและรหัสความสอดคล้องที่ถูกต้อง — ไม่ต้องเขียนโค้ดแบบ OEM |
| Cisco UCS VIC | ข้อมูลระบุตัวตนสไตล์ Cisco เหมือนกับสวิตช์ Cisco (แต่ละ NOS ตรวจสอบโมดูลอย่างไร) |
| HCA ของ InfiniBand | ข้อมูลระบุตัวตนของสาย/โมดูลที่ถูกต้องตาม IBTA และรายการของผู้ผลิตแฟบริก |
แนวทางการเขียนโค้ด: การล็อกผู้ผลิตและการเขียนโค้ด, การกำหนดหมายเลขชิ้นส่วน
อาการทั่วไปฝั่ง NIC
| อาการ | สาเหตุที่เป็นไปได้ | ตรวจสอบ |
|---|---|---|
| พอร์ตหายไปหรือขึ้น “unsupported module” ใน dmesg | ไวท์ลิสต์ของไดรเวอร์ | dmesg, ethtool -m, ข้ามการตรวจสอบหรือใช้โมดูลที่เขียนโค้ดไว้ |
| ลิงก์ดับ, ตรวจพบโมดูล, ระดับสัญญาณดี | FEC/AN ไม่ตรงกัน, บังคับความเร็วผิด | ethtool eth0, ethtool --show-fec eth0 (ความเร็วและอัตรา) |
| ลิงก์ขึ้นแต่ผิดความเร็ว | เลือกอัตโนมัติได้ 10G บนโมดูลสองอัตราเร็ว | บังคับความเร็ว |
| ลิงก์ขึ้นแต่ทรูพุตต่ำ | ความกว้าง/ความเร็วของ PCIe | lspci -vv (พอร์ตและ PCIe) |
| โมดูลร้อน, มีอะลาร์มอุณหภูมิ | การ์ดอยู่ในทางลมร้อนที่ระบายออก | ดู DDM ผ่าน ethtool -m; ย้ายการ์ดหรือปรับปรุงการไหลเวียนอากาศ |
| ใช้งานได้ใน Linux แต่ไม่ได้ใน Windows/ESXi | นโยบายของไดรเวอร์ต่างกัน | ใช้โมดูลที่ผ่านการรับรองสำหรับระบบปฏิบัติการนั้น |
| ลิงก์ InfiniBand ที่ความกว้าง/ความเร็วลดลง | สายไม่อยู่ในรายการหรือยาวเกินไป | ibstat, mlxlink |
ใน CodingBox
การถูกปฏิเสธฝั่งเซิร์ฟเวอร์วินิจฉัยได้จากไบต์ชุดเดียวกับฝั่งสวิตช์ อ่านชื่อผู้ผลิต, PN, OUI, รหัสความสอดคล้อง และเช็กซัมได้ที่ Check transceiver สำหรับฝูงอุปกรณ์ที่ใช้ Intel ล้วน code database สามารถเก็บข้อมูลระบุตัวตนแบบ Intel ที่ไดรเวอร์ยอมรับไว้ได้