การล็อกผู้ผลิตและ “unsupported transceiver”
ปัญหาทรานซีฟเวอร์ที่พบบ่อยที่สุดเพียงหนึ่งเดียว ผู้ผลิตสวิตช์และ NIC — Cisco, Intel, HPE/Aruba, Juniper, Mellanox และรายอื่น ๆ — ตรวจสอบสตริงข้อมูลระบุตัวตนที่โมดูลรายงานจาก EEPROM ของมัน แล้วปฏิเสธหรือตั้งค่าสถานะโมดูลที่ตัวเองไม่รู้จัก
สิ่งสำคัญที่วิศวกรต้องเรียนรู้แบบเจ็บตัวเอง: “unsupported” ไม่ได้แปลว่า “ใช้งานไม่ได้” บนแพลตฟอร์มส่วนใหญ่ สถานะนี้เป็นเพียงข้อมูลแจ้งเตือน และพอร์ตยังสามารถทำให้ขึ้นได้
อาการ
| แพลตฟอร์ม | สิ่งที่คุณเห็น |
|---|---|
| Cisco IOS | พอร์ต notconnect — unsupported; ในล็อกมี %C4K_TRANSCEIVERMAN-3-INCOMPATIBLE |
| Cisco IOS หลังอัปเกรด | พอร์ตเข้าสู่สถานะ errdisable เหตุผลคือ gbic-invalid |
| Mellanox | อ่าน EEPROM ได้ แต่ไม่มีลิงก์: speed and type: Not supported |
| Intel X520 / ixgbe | ขึ้น no carrier เมื่อใช้ SFP ที่ไม่ใช่ของ Intel |
สิ่งที่ใช้ได้ผล
Cisco มีสองคำสั่งที่มักถูกใส่ไว้ในคอนฟิกพื้นฐานเป็นประจำ เพื่ออนุญาตให้ใช้โมดูลของบุคคลที่สามได้ในทุกพอร์ต:
service unsupported-transceiver
no errdisable detect cause gbic-invalid
ความแปลกของแต่ละแพลตฟอร์ม: บน Catalyst 9200 บางรุ่น คำสั่งแรกจะขึ้น % Ambiguous command — ต้องพิมพ์คำสั่งเต็มทั้งหมด; บน Nexus 9000 คำสั่งนี้เป็นคำสั่งที่ซ่อนอยู่ ไม่มี tab-completion แต่ระบบยอมรับคำสั่งนี้
Intel X520 (Linux) โหลดไดรเวอร์พร้อมตัวเลือกที่อนุญาตให้ใช้โมดูลที่ไม่ใช่ของ Intel:
modprobe ixgbe allow_unsupported_sfp=1
มีอีกวิธีหนึ่งที่ถาวรกว่า คือการพลิกบิตใน EEPROM ของ NIC เอง ซึ่งมีเอกสารอธิบายไว้ในแหล่งข้อมูลด้านล่าง — ใช้ด้วยความระมัดระวัง เพราะการเขียน EEPROM ของ NIC ผิดพลาดจะกู้คืนในภาคสนามไม่ได้
ตระกูล ASR 9000 โมดูลที่เสียบเข้าไปในพอร์ตที่ขึ้นอยู่แล้วอาจตรวจไม่พบ: สั่ง shut พอร์ต เสียบโมดูล แล้วจึงสั่ง no shut
ทางแก้แบบถอนรากถอนโคน — เขียนโค้ดโมดูลใหม่ เขียน vendor ID และหมายเลขชิ้นส่วนของโมดูลใหม่ เพื่อให้มันแสดงตัวเป็นโมดูลแท้ของผู้ผลิต นี่คือสิ่งที่ CodingBox ทำในEEPROM editor โดยคำนวณ CC_BASE/CC_EXT ใหม่ และเก็บข้อมูลสำรองไว้ก่อนเสมอ ดูกลไกการทำงานได้ที่การเขียนโค้ด EEPROM ใหม่
คำแนะนำที่ทุกคนพูดซ้ำ
เก็บโมดูล OEM ของแท้ไว้บนชั้นอย่างละหนึ่งตัวต่อชนิด เปลี่ยนไปใช้ตัวนี้ก่อนเปิดทิกเก็ตกับฝ่ายสนับสนุน เพื่อไม่ให้ผู้ผลิตโยนความผิดไปที่ออปติกของบุคคลที่สามได้
การตรวจสอบยืนยันบนสวิตช์
หลังทำขั้นตอนใดขั้นตอนหนึ่งข้างต้นแล้ว ให้ยืนยันว่าโมดูลถูกมองเห็นและอ่านได้: ดูคำสั่งแยกตาม NOS ได้ที่การตรวจสอบยืนยันออปติกบนสวิตช์ แล้วเทียบกับข้อมูลระบุตัวตนที่ CodingBox อ่านได้บนโต๊ะทดสอบ
สิ่งที่โฮสต์เทียบค่าจริง ๆ — ชื่อ, หมายเลขชิ้นส่วน, OUI, รูปแบบหมายเลขซีเรียล, ลายเซ็นของผู้ผลิต — และในขั้นตอนไหนของการเริ่มทำงานที่มันปฏิเสธ: ฟิลด์ของผู้ผลิต, สิ่งที่โฮสต์ทำ
พฤติกรรมการตรวจสอบและวิธีข้ามการตรวจสอบแยกตามผู้ผลิต รวมอยู่ในตารางเดียว: วิธีที่ NOS แต่ละตัวตรวจสอบโมดูล; สตริงหมายเลขชิ้นส่วนที่แต่ละแพลตฟอร์มคาดหวังไว้เป๊ะ ๆ: หมายเลขชิ้นส่วนของ OEM; ไวยากรณ์คำสั่งแยกตาม NOS: สูตรการตั้งค่าพอร์ต