สิ่งที่โฮสต์ทำ: การตรวจพบ การตรวจสอบความถูกต้อง และการเริ่มใช้งาน
สเปกต่าง ๆ อธิบายฝั่งโมดูล ได้แก่ ขา หน่วยความจำ สถานะ หน้านี้อธิบาย ฝั่งโฮสต์ คือลำดับขั้นตอนที่สวิตช์ เราเตอร์ หรือ NIC ทำตั้งแต่วินาทีที่เสียบโมดูลจนกระทั่งมีทราฟฟิกไหลผ่าน พร้อมขา ไบต์ และจังหวะเวลาที่แต่ละขั้นตอนใช้ การรู้เรื่องนี้จะเปลี่ยน “พอร์ตบอกว่าไม่รองรับ” ให้กลายเป็น “โฮสต์หยุดอยู่ที่ขั้นตอนที่ 4” และอธิบายได้ว่าทำไมโมดูลที่สมบูรณ์แบบบนโต๊ะทดสอบถึงยังใช้งานในพอร์ตไม่ได้
สัญญาณความเร็วต่ำแยกตามฟอร์มแฟกเตอร์
| ฟอร์มแฟกเตอร์ | การมีอยู่ของโมดูล | รีเซ็ต/ไฟเลี้ยง | อินเทอร์รัปต์/เหตุขัดข้อง | อื่น ๆ |
|---|---|---|---|---|
| SFP / SFP+ / SFP28 | MOD_ABS (ต่ำ = มีโมดูล) | — (TX_DISABLE ควบคุมเปิด/ปิดเลเซอร์) | TX_FAULT, RX_LOS | RS0, RS1 การเลือกอัตรา |
| XFP | Mod_ABS | P_Down/RST | Interrupt, Mod_NR (ยังไม่พร้อม), RX_LOS | TX_DIS, Mod_DeSel |
| QSFP+ / QSFP28 | ModPrsL | ResetL, LPMode | IntL | ModSelL |
| QSFP-DD | ModPrsL | ResetL, LPMode | IntL | ModSelL |
| OSFP | PRSn | RSTn, LPWn | INT | — (ไม่มีขาเลือก มีบัสเดียวต่อพอร์ต) |
| SFP-DD | การตรวจจับโมดูลแบบเดียวกับ SFP | การร้องขอโหมดกำลังต่ำ | อินเทอร์รัปต์ | การเลือกอัตราแบบเดียวกับ SFP |
หน้าที่ของขาและผังขาแยกตามตระกูล: ฮาร์ดแวร์ SFP, ฮาร์ดแวร์ QSFP, XFP
ลำดับขั้นตอน
| # | ขั้นตอน | SFP (SFF-8472) | QSFP (SFF-8636) | CMIS | อาการเมื่อล้มเหลว |
|---|---|---|---|---|---|
| 1 | ตรวจจับ | MOD_ABS เป็นต่ำ; ดีบาวน์ | ModPrsL เป็นต่ำ | ModPrsL / PRSn เป็นต่ำ | พอร์ตยังว่างอยู่ โมดูล “ไม่ถูกตรวจพบ” |
| 2 | จ่ายไฟและรอ | 3.3 V เปิดตลอดเวลา; รอ t_init 300 ms | จ่ายไฟโดย LPMode เป็นสูง (เฉพาะคลาส 1); รอ t_init 2 s หรือโพลล์ Data_Not_Ready | เหมือนกัน; รอให้สถานะโมดูลออกจาก MgmtInit (≤ 2 s) | การอ่านได้ค่า FFh / 00h; ข้อมูลระบุตัวตนว่างเปล่า |
| 3 | ระบุตัวตน | อ่าน A0h 0–95; ไบต์ 0 = 03h เลือกตัวแยกวิเคราะห์ของ SFF-8472 | อ่าน 0–127 และเพจบน 00h; ไบต์ 0 = 0Dh/11h, ไบต์ 1 คือรุ่น | อ่านเพจล่างและเพจบน 00h; ไบต์ 0 = 18h/19h…, ไบต์ 1 คือรุ่น CMIS | unknown module type |
| 4 | ตรวจสอบความถูกต้อง | CC_BASE, CC_EXT; ความสอดคล้องของตัวระบุ/คอนเนกเตอร์/การเข้ารหัส | CC_BASE, CC_EXT | เช็กซัมของเพจ 00h | invalid EEPROM, checksum error (ดูเช็กซัม) |
| 5 | ถอดรหัสชนิด | ไบต์ความสอดคล้อง 3–10, 36; ไบต์อัตรา 12/66; ความยาว; ความยาวคลื่น | ไบต์ 131–138, 192; 140/222 | ชนิดสื่อกลางไบต์ 85, ตัวบ่งชี้การใช้งาน | speed and type not supported (ดูรหัสความสอดคล้อง) |
| 6 | นโยบาย | ชื่อผู้ผลิต/PN (และอาจมีลายเซ็น) เทียบกับตารางความเข้ากันได้ | เหมือนกัน | เหมือนกัน | unsupported transceiver, errdisable (ดูการล็อกผู้ผลิต) |
| 7 | คลาสกำลังไฟ | บิตระดับไบต์ 64 เทียบกับงบประมาณของพอร์ต | คลาสไบต์ 129; เขียนไบต์ 93 เพื่อปลดโหมดกำลังต่ำ/เปิดใช้คลาส 5–8 | คลาสไบต์ 200 เทียบกับพอร์ต; ปลดการยืนยัน LPMode หรือล้าง LowPwrRequestSW → โมดูล PwrUp → Ready | ค้างอยู่ในโหมดกำลังต่ำ, power exceeds (ดูกำลังไฟและความร้อน) |
| 8 | ตั้งค่า | RS0/RS1 หรือการเลือกอัตราแบบซอฟต์; ความเร็วฝั่งโฮสต์, FEC, SGMII/1000BASE-X | เปิด/ปิด CDR (98), การเลือกอัตรา (87–88), เลนเบรกเอาต์ฝั่งโฮสต์ | เลือก AppSel/DataPathID ในชุดควบคุมที่เตรียมไว้ → ApplyDPInit → เส้นทางข้อมูล Init → Initialized | LOL, FEC ไม่ตรงกัน, เบรกเอาต์ถูกปฏิเสธ (ดูความเร็วและอัตรา) |
| 9 | เปิดใช้งาน Tx | ขา TX_DISABLE เป็นต่ำ หรือล้างบิตซอฟต์ (A2h 110.6) | ไบต์ 86 = 00h | เพจ 10h ไบต์ 130 = 00h → DPTxTurnOn → DPActivated | ปลายไกลเห็น −40 dBm (ดูเช็กลิสต์ไม่มีลิงก์) |
| 10 | สร้างลิงก์ | PHY/MAC เห็นสัญญาณ; AN/การฝึกลิงก์บน DAC | เหมือนกันต่อเลน | เหมือนกันต่อเส้นทางข้อมูล | ลิงก์ดาวน์ทั้งที่ระดับสัญญาณดี |
| 11 | ตรวจติดตาม | โพลล์ค่าที่ตรวจวัดและแฟล็กของ A2h ทุกสองสามวินาที; ขา TX_FAULT / RX_LOS | IntL → อ่านแฟล็ก 3–21; โพลล์ค่าที่ตรวจวัด | IntL → แฟล็กโมดูล + แฟล็กเลนในเพจ 11h; VDM | อะลาร์ม, ลิงก์กระพือ (ดูระดับ DDM, ลิงก์กระพือ) |
| 12 | ถอดออก | MOD_ABS เป็นสูง → ล้างสถานะ | ModPrsL เป็นสูง | ModPrsL เป็นสูง | สถานะค้างเก่าหากดีบาวน์พลาด |
ขั้นตอนที่ 3–6 เกิดขึ้นในโหมด กำลังต่ำ สำหรับโมดูล QSFP และ CMIS โฮสต์ตรวจสอบความถูกต้องก่อนที่จะจ่ายกำลังไฟให้วงจรออปติคัล นี่คือเหตุผลที่โมดูลที่ถูกล็อกหรือเขียนโค้ดผิดจะไม่มีวันติดเลเซอร์ และเหตุผลที่ปลายไกลอ่านค่าได้ −40 dBm ทั้งที่โมดูลนั้นสมบูรณ์ดีทางไฟฟ้า
จังหวะเวลาที่โฮสต์ต้องรอ
| รอ | SFP | QSFP | CMIS |
|---|---|---|---|
| พร้อมจัดการหลังเสียบ | 300 ms | 2 s | ≤ 2 s (MgmtInit) จากนั้นเข้าสถานะ LowPwr |
| หลังปลดโหมดกำลังต่ำ | — | จนกว่า Data_Not_Ready จะเคลียร์ | จนกว่าสถานะโมดูลจะเป็น Ready (ระยะเวลาสูงสุดประกาศไว้ในเพจ 01h) |
| การเริ่มต้นเส้นทางข้อมูล | — | — | ประกาศไว้ต่อขั้นตอน (รหัสนิบเบิล: < 1 ms … < 50 min) |
| เปิดใช้งาน Tx จนติด | t_on ≤ 1 ms | ton_txdis 100 ms / toff 400 ms | ระยะเวลา DPTxTurnOn ประกาศไว้ |
| จากแฟล็กถึงอินเทอร์รัปต์ | — | ton_IntL 200 ms | ตามสเปกฮาร์ดแวร์ |
จังหวะเวลาระดับบัส (t_WR, การยืดคล็อก): อินเทอร์เฟซสองสาย
จุดด้านนโยบายที่โฮสต์แต่ละระบบต่างกัน
- ความเข้มงวดของไวต์ลิสต์ — ตั้งแต่ “เฉพาะชื่อผู้ผลิต” ไปจนถึงบล็อกเฉพาะของผู้ผลิตที่มีลายเซ็นรับรอง
- สิ่งที่เกิดขึ้นเมื่อถูกปฏิเสธ — ปิดใช้งานพอร์ต ปิดเลเซอร์ หรืออนุญาตให้เชื่อมลิงก์พร้อมบันทึกล็อก (ออปติกของบุคคลที่สาม)
- ระดับความลึกของ CMIS — การควบคุมการใช้งาน/เส้นทางข้อมูลแบบเต็มรูปแบบ เทียบกับ “ปล่อย LPMode แล้วภาวนา” (ปัญหา CMIS)
- ค่าเริ่มต้นของ FEC และความเร็ว — มาจากรหัสความสอดคล้อง หรือกำหนดตายตัวไว้
- การโพลล์ DDM — ช่วงเวลา, ค่าเกณฑ์สั่งปิดพอร์ตหรือไม่, มีการใช้การสอบเทียบภายนอกหรือไม่ (การสอบเทียบ)
CLI เฉพาะของแต่ละผู้ผลิตสำหรับดูว่าโฮสต์หยุดอยู่ที่ไหน: การตรวจสอบออปติกบนสวิตช์
เครื่องโปรแกรมต่างจากโฮสต์อย่างไร
เครื่องโปรแกรมอย่าง CodingBox ทำขั้นตอนที่ 1–5 และ 11 แต่ ไม่มีนโยบาย มันอ่านทุกอย่างที่โมดูลเปิดให้เข้าถึง รวมถึงพื้นที่ของผู้ผลิตและไบต์รหัสผ่าน ให้โมดูล CMIS อยู่ในโหมดกำลังต่ำ เว้นแต่จะสั่งเป็นอย่างอื่น และไม่เปิดใช้งานเลเซอร์เองเด็ดขาด นี่คือเหตุผลที่โมดูลอาจดูสมบูรณ์ดีบนโต๊ะทดสอบ แต่ยังใช้งานในพอร์ตไม่ได้ เพราะบนโต๊ะทดสอบไม่มีขั้นตอนที่ 6
ใน CodingBox
Check transceiver แสดงผลลัพธ์ของขั้นตอนที่ 3–5 ในแบบที่โฮสต์จะเห็น (ชนิด, อัตรา, เช็กซัม, คลาสกำลังไฟ) และชี้ให้เห็นความไม่สอดคล้องก่อนที่โมดูลจะไปถึงพอร์ต ส่วนDDM ครอบคลุมขั้นตอนที่ 11 ด้วยค่าที่ตรวจวัดและแฟล็กแบบเรียลไทม์
ฮาร์ดแวร์เบื้องหลังขั้นตอนที่ 6 (นโยบาย) และข้อจำกัดของกลุ่มพอร์ตเบื้องหลังขั้นตอนที่ 8: ภายในสวิตช์, แต่ละ NOS ตรวจสอบความถูกต้องของโมดูลอย่างไร