SGMII, 1000BASE-X, QSGMII, USXGMII: อินเทอร์เฟซแบบอนุกรมไปยัง PHY และ SFP
เคจ SFP ทุกตัวที่ 1G มีเลนอนุกรม 1.25 GBd และเลนนั้นสามารถพูดได้สองสำเนียงที่หน้าตาเหมือนกันทุกประการบนออสซิลโลสโคป ได้แก่ 1000BASE-X อินเทอร์เฟซของ IEEE ที่โมดูลใยแก้วนำแสงคาดหวัง และ SGMII ตัวแปรของ Cisco ที่เพิ่ม 10/100 Mb/s เข้ามาพร้อมการเจรจาอัตโนมัติที่ต่างออกไป SFP ทองแดงอยู่บนเส้นแบ่งระหว่างสองสำเนียงนี้ และปัญหาส่วนใหญ่ในลักษณะ “SFP ทองแดงลิงก์ที่ 1G ได้ แต่กล้อง 100 Mb/s ของฉันไม่ลิงก์” ล้วนเป็นความไม่ตรงกันของสำเนียง หน้านี้ครอบคลุมสำเนียงกิกะบิตทั้งสองแบบ การเจรจาอัตโนมัติของแต่ละแบบ 2500BASE-X, QSGMII แบบหลายพอร์ต, USXGMII สำหรับมัลติกิกและ 10GBASE-T SFP+ และวิธีที่ Linux กับสวิตช์เลือกโหมด
1000BASE-X: อินเทอร์เฟซดั้งเดิมของ SFP (Clause 36/37)
| รายการ | ค่า |
|---|---|
| อัตราเร็ว | 1.25 GBd, 8b/10b → เพย์โหลด 1000 Mb/s |
| เลน | คู่ดิฟเฟอเรนเชียล 1 คู่ต่อทิศทาง (CML, ต่อผ่าน AC) |
| การเข้ารหัส | 8b/10b พร้อม comma /K28.5/, ชุดคำสั่งเรียงลำดับ /C1/ /C2/ (การคอนฟิก), /I1/ /I2/ (ไอเดิล) |
| การเจรจาอัตโนมัติ | Clause 37: แลกเปลี่ยนเวิร์ดคอนฟิกขนาด 16 บิตในชุดคำสั่งเรียงลำดับ /C/ ได้แก่ ฟูลดูเพล็กซ์/ฮาล์ฟดูเพล็กซ์, pause (สมมาตร/ไม่สมมาตร), remote fault, acknowledge ไม่มีฟิลด์ความเร็ว: 1000BASE-X เป็น 1G เท่านั้น |
| ที่ไหน | SerDes ของสวิตช์/NIC → เคจ SFP; SFP ใยแก้วนำแสง (SX/LX/ZX/BiDi/CWDM) ส่งผ่านตรงไปยังเลเซอร์; PCS อยู่ในฝั่งโฮสต์ |
SFP ใยแก้วนำแสงโปร่งใส สิ่งที่โฮสต์เข้ารหัสออกไปก็ออกไปเป็นแสงตรงตามนั้น นี่คือเหตุผลที่โมดูลใยแก้วนำแสง 1G ไม่มี “โหมด” ของตัวเอง แต่พอร์ตมี และพอร์ตต้องอยู่ในโหมด 1000BASE-X (มักแสดงเป็นโหมด “SerDes” หรือ “fiber”, ใช้ speed nonegotiate บน Cisco เมื่อปลายอีกด้านไม่มี AN)
SGMII: กิกะบิตบวก 10/100 (ข้อกำหนด Cisco SGMII v1.8)
| รายการ | ค่า |
|---|---|
| อัตราเร็ว | 1.25 GBd, 8b/10b เท่ากัน |
| การรองรับ 10/100 | แต่ละไบต์ข้อมูลถูกทำซ้ำ 100 เท่า (10 Mb/s) หรือ 10 เท่า (100 Mb/s) เพื่อให้สายสัญญาณยังคงอยู่ที่ 1.25 GBd |
| เลน | 2 คู่; มีคู่สัญญาณนาฬิกา DDR 625 MHz เป็นตัวเลือก (TX_CLK/RX_CLK) — การใช้งาน SerDes ส่วนใหญ่ทำงานแบบไม่มีสัญญาณนาฬิกา |
| การเจรจาอัตโนมัติ | เวิร์ดควบคุมของ SGMII (ส่งในชุดคำสั่งเรียงลำดับ /C/ เช่นกัน ขนาด 16 บิต): บิต 15 คือลิงก์, บิต 11–10 คือความเร็ว (10/100/1000), บิต 12 คือดูเพล็กซ์, บิต 14 คือ ack — ส่งจาก PHY → MAC เพื่อบอก MAC ว่าฝั่งทองแดงเจรจาได้ผลอย่างไร ไม่เข้ากันกับเนื้อหาของ Clause 37 |
| ที่ไหน | MAC ↔ PHY ทองแดง (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ เคจ SFP บนบอร์ดที่ต้องการรองรับ SFP ทองแดง, ภายใน SFP ทองแดง 1000BASE-T |
SGMII คืออินเทอร์เฟซ MAC–PHY “การเจรจาอัตโนมัติ” เกิดขึ้นสองรอบ ได้แก่ Clause 28 บนคู่สายบิดเกลียวระหว่าง PHY กับคู่ลิงก์ จากนั้นเวิร์ดควบคุมของ SGMII จึงรายงานผลลัพธ์ให้ MAC ทราบ เมื่อโฮสต์คาดหวัง Clause 37 แต่ได้รับเวิร์ดของ SGMII เข้ามา (หรือในทางกลับกัน) ลิงก์จะไม่มีวันทำ AN จนเสร็จสมบูรณ์ วิธีแก้ที่ใช้กันทั่วไปคือปิด AN บนพอร์ต (speed nonegotiate, no negotiation auto, autoneg off) โดยใช้ได้เฉพาะที่ 1G เท่านั้น
SFP ทองแดงระหว่างสองแบบ
| โหมดพอร์ตของโฮสต์ | พฤติกรรมของ SFP ทองแดง | ไคลเอนต์ 10/100 |
|---|---|---|
| 1000BASE-X, เปิด AN | PHY ของโมดูลต้องตอบสนอง Clause 37 — หลายรุ่นทำได้ (จำลองพฤติกรรม) บางรุ่นทำไม่ได้ → ไม่ลิงก์จนกว่าจะปิด AN | ไม่ได้ (ไม่มีฟิลด์ความเร็ว) |
| 1000BASE-X, ปิด AN | ลิงก์ที่ 1G เมื่อฝั่งทองแดงเจรจาได้ 1G | ไม่ได้ |
| SGMII, เปิด AN | PHY รายงาน 10/100/1000 ผ่านเวิร์ดควบคุม | ได้ |
| SGMII, ปิด AN | คงที่ 1G | ไม่ได้ |
โมดูล SFP ทองแดงที่ใช้ Marvell 88E1111 จะเป็น SGMII หรือ 1000BASE-X โดยค่าเริ่มต้น ขึ้นอยู่กับ EEPROM คอนฟิก/สแตรปที่ตั้งไว้ตั้งแต่การผลิต ผู้ผลิตขายโมดูลตัวเดียวกันเป็นรุ่น “SGMII” และรุ่น “SerDes” แยกกัน และบางรุ่นสลับโหมดได้ผ่านรีจิสเตอร์ของ PHY ที่เข้าถึงได้ทาง I²C ของโมดูล พอร์ตสวิตช์ที่ระบุว่า “รองรับ SFP 1000BASE-T” หมายถึงใช้ SGMII บนเคจเหล่านั้น (อีเทอร์เน็ตทองแดงและ DAC)
SFP แบบ 100BASE-FX
SFP ใยแก้วนำแสง 100 Mb/s (100BASE-FX, 1310 nm, 2 km) ต้องการให้โฮสต์รันเลนที่ 125 MBd แบบ 4b/5b ซึ่งเป็น PCS ที่ต่างออกไปโดยสิ้นเชิง มีเพียงพอร์ตที่รองรับ “100M SFP” อย่างชัดเจนเท่านั้นที่ใช้งานได้ (สวิตช์แคมปัสหลายรุ่นในบางพอร์ต, เราเตอร์ส่วนใหญ่; สวิตช์ดาต้าเซ็นเตอร์น้อยราย) ส่วนพอร์ตอื่นจะตรวจพบโมดูลแต่ไม่มีวันลิงก์ โฮสต์บางตัวทำ 100BASE-FX ด้วยการทำซ้ำแบบ SGMII ผ่าน PHY ภายนอกในโมดูล (SFP แบบ “100M over SGMII”)
2500BASE-X
| รายการ | ค่า |
|---|---|
| อัตราเร็ว | 3.125 GBd, 8b/10b → 2.5 Gb/s |
| มาตรฐาน | ไม่มีจาก IEEE (โดยพฤตินัย เป็น 2.5 × 1000BASE-X); Linux phy-interface-type = "2500base-x" |
| AN | รูปแบบ Clause 37 มักถูกปิดใช้งาน |
| ที่ไหน | โมดูล SFP 2.5G (ทองแดง 2.5GBASE-T, ใยแก้วนำแสง 2.5G), สติ๊ก ONU ของ GPON/EPON ฝั่งที่หันเข้าหาโฮสต์ (ขาลง 2.5G), อัปลิงก์ของ AP Wi-Fi 6, เคจ SFP ของสวิตช์ 2.5G บางรุ่น |
มาตรฐาน IEEE ที่เทียบเท่าสำหรับมัลติกิกคือ 2.5GBASE-X/5GBASE-R (802.3bz) แต่ซิลิคอนส่วนใหญ่พูด 2500BASE-X หรือ USXGMII
QSGMII: สี่พอร์ตบนเลนเดียว
| รายการ | ค่า |
|---|---|
| อัตราเร็ว | 5 GBd, 8b/10b; มัลติเพล็กซ์ตามเวลา 4 ช่องสัญญาณ SGMII |
| เลน | 2 คู่สำหรับสี่พอร์ต |
| ที่ไหน | ASIC ของสวิตช์ ↔ PHY ทองแดงสี่ตัว (สวิตช์แอ็กเซส 48 พอร์ต: เลน QSGMII 12 เส้นแทนที่จะเป็น SGMII 48 เส้น), ดีไซน์เคจ SFP สี่พอร์ตบางแบบผ่าน SerDes ภายนอก |
| รูปแบบย่อย | QSGMII (Cisco) และ “PSGMII” (5 พอร์ต) บน SoC ของ Qualcomm/Realtek บางรุ่น |
ไม่ปรากฏให้เห็นที่เคจในดีไซน์ทั่วไป แต่มีผลเมื่อบอร์ดที่ใช้ PHY สี่ตัวเปิดพอร์ตคอมโบ SFP ที่รับโหมดมาจากช่องสัญญาณของ PHY
USXGMII: 10 Mb/s ถึง 10 Gb/s บนเลน 10G เดียว
| รายการ | ค่า |
|---|---|
| อัตราเร็ว | 10.3125 GBd, 64b/66b (ไฟฟ้าแบบ 10GBASE-R) |
| ความเร็ว | 10M, 100M, 1G, 2.5G, 5G, 10G ด้วยการทำซ้ำสัญลักษณ์ (เหมือน SGMII แต่ขยายสเกลขึ้น) |
| สเปก | Cisco USXGMII (v1.2) ถูกนำไปใช้อย่างแพร่หลาย; Linux usxgmii |
| หลายพอร์ต | USXGMII-M: 4 × 2.5G, 2 × 5G, 4 × 1G+… บนเลน 10G เดียว (เหมือน QSGMII) |
| AN | เวิร์ด AN ของ USXGMII อยู่ในช่วงไอเดิลของ 64b/66b รายงานความเร็ว/ดูเพล็กซ์/ลิงก์ |
| ที่ไหน | ASIC ↔ PHY มัลติกิก (พอร์ต 2.5/5/10GBASE-T), โมดูล 10GBASE-T SFP+ (PHY ภายใน เช่น Marvell AQR/Broadcom) |
โมดูล 10GBASE-T SFP+ นำเสนอ 10GBASE-R (SFI) ให้กับพอร์ต SFP+ ทั่วไปและลิงก์ที่ 10G ส่วนที่ว่ามันจะรองรับไคลเอนต์ 1G/2.5G/5G ได้ด้วยหรือไม่นั้น ขึ้นอยู่กับว่าโฮสต์รองรับการปรับอัตราเร็วแบบ USXGMII บนเคจนั้นหรือไม่ — สวิตช์ส่วนใหญ่ไม่รองรับ ดังนั้นโมดูลจึงทำงานได้ที่ 10G เท่านั้น หรือไม่ก็ทำการปรับอัตราเร็วภายในตัวเองแล้วรายงาน 10G ให้โฮสต์ ในขณะที่ฝั่งทองแดงรันช้ากว่านั้น (ความเร็วและอัตรา)
โฮสต์เลือกโหมดอย่างไร
| โฮสต์ | กลไก |
|---|---|
| Linux phylink/SFP | อ่าน A0h ไบต์ 3–10 (ความสอดคล้อง), 12 (อัตราตามพิกัด), 36 (ความสอดคล้องขยาย) และไบต์ 6 บิต 3 (1000BASE-T): 1000BASE-T → SGMII (หรือ 1000BASE-X ถ้า SoC ไม่มี SGMII); 1000BASE-SX/LX → 1000BASE-X; BR 3.1 GBd → 2500BASE-X; รหัส 10G → 10GBASE-R; PHY ทองแดงภายในโมดูลถูกตรวจสอบผ่าน I²C (แอดเดรส 0x56/0xAC) และขับเคลื่อนโดย phylib |
| NOS ของสวิตช์ | ค่าเริ่มต้นของพอร์ตขึ้นอยู่กับแพลตฟอร์ม (เคจ SFP 1G ส่วนใหญ่รองรับ SGMII; SFP+/SFP28 ที่ 1G มักรองรับเฉพาะ 1000BASE-X), คำสั่ง speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode |
| ไดรเวอร์ NIC | Intel: พอร์ต SFP+ รองรับ 1G แบบ 1000BASE-X เท่านั้น (ไม่มี SFP ทองแดง 10/100); Mellanox: 1G ผ่าน 1000BASE-X ในบางรุ่น; Broadcom: ขึ้นอยู่กับเฟิร์มแวร์ (พอร์ต NIC) |
| SFP ทองแดง | สแตรป/EEPROM ของโหมด PHY (รุ่น SGMII เทียบกับ SerDes), พฤติกรรม AN ตั้งค่าโดยเฟิร์มแวร์ของผู้ผลิต |
ตารางความไม่ตรงกัน
| อาการ | สาเหตุ | วิธีแก้ |
|---|---|---|
| SFP ทองแดง: ไคลเอนต์ 1G ใช้ได้ปกติ แต่ 10/100 ไม่ลิงก์เลย | พอร์ตอยู่ในโหมด 1000BASE-X | ย้ายไปพอร์ตที่รองรับ SGMII หรือใช้โมดูลที่ซ่อน 10/100 ไว้หลังการปรับให้เป็น 1G ต่อโฮสต์ |
| SFP ใยแก้วนำแสงลิงก์ได้เฉพาะเมื่อปิด AN | ปลายอีกด้านไม่มี Clause 37 (มีเดียคอนเวอร์เตอร์, ONU บางรุ่น) หรือได้รับเวิร์ดของ SGMII จากโมดูลทองแดง | speed nonegotiate / autoneg off |
| ตรวจพบ SFP แบบ 100BASE-FX แต่ไม่ลิงก์ | โฮสต์ไม่มีโหมด SerDes 100M | ใช้พอร์ตที่รองรับ 100M SFP หรือโมดูล 100BASE-FX-over-SGMII |
| SFP 2.5G ลิงก์ได้แค่ 1G หรือไม่ลิงก์เลย | โฮสต์ไม่มี 2500BASE-X | เลือกเคจที่รองรับ 2.5G หรือโมดูลที่ลดอัตราเร็วสำรองได้ |
| สติ๊ก ONU ลิงก์ได้แล้วหลุด | ความคาดหวังระหว่าง 2500BASE-X กับ 1000BASE-X ไม่ตรงกัน, AN | ตั้งโฮสต์เป็น 2500BASE-X, ปิด AN (ออปติกของ PON) |
| 10GBASE-T SFP+ ลิงก์ได้แค่ 10G | โฮสต์ไม่มี USXGMII | ยอมรับว่าใช้ได้แค่ 10G หรือใช้โมดูลที่ปรับอัตราเร็วภายในตัวเอง |
| Linux: โมดูลทำงานได้บนบอร์ดหนึ่งแต่ไม่ได้บนอีกบอร์ด | phylink เลือกอินเทอร์เฟซที่ต่างไปจาก EEPROM; SoC ไม่มีโหมดนั้น | ตรวจสอบ dmesg หา sfp: module … interface; แก้ไขไบต์ความสอดคล้องหรือ device tree |
ใน CodingBox
ไบต์ที่กำหนดการเลือกของโฮสต์อยู่ใน A0h ทั้งหมด ได้แก่ รหัสความสอดคล้อง 3–10 (1000BASE-T, SX, LX, รหัส 10G), อัตราบิตตามพิกัด 12, การเข้ารหัส 11 (8b/10b เทียบกับ 64b/66b), ความสอดคล้องขยาย 36 โมดูลทองแดงที่เขียนรหัสเป็น 1000BASE-SX จะถูกมองเป็นใยแก้วนำแสงและเสียเส้นทาง 10/100 ไป ส่วนโมดูลใยแก้วนำแสงที่มีบิต 1000BASE-T หลงเหลืออยู่จะถูกขับเป็น SGMII CodingBox แสดงและแก้ไขฟิลด์เหล่านี้ได้ (Check transceiver, รหัสความสอดคล้อง)