CodingBox दस्तावेज़

SGMII, 1000BASE-X, QSGMII, USXGMII: PHY और SFP से सीरियल इंटरफ़ेस

हर 1G SFP केज एक 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, साथ में /K28.5/ कॉमा, ऑर्डर्ड सेट /C1/ /C2/ (कॉन्फ़िगरेशन), /I1/ /I2/ (आइडल)
ऑटो-नेगोशिएशनClause 37: /C/ ऑर्डर्ड सेट में एक्सचेंज होने वाला 16-बिट कॉन्फ़िग वर्ड — फ़ुल/हाफ़ डुप्लेक्स, पॉज़ (सिमेट्रिक/असिमेट्रिक), रिमोट फ़ॉल्ट, एक्नॉलेज। कोई स्पीड फ़ील्ड नहीं: 1000BASE-X सिर्फ़ 1G है
कहाँस्विच/NIC SerDes → SFP केज; फ़ाइबर SFP (SX/LX/ZX/BiDi/CWDM) इसे सीधे लेज़र तक पास कर देता है; PCS होस्ट में रहता है

एक फ़ाइबर SFP ट्रांसपेरेंट होता है: होस्ट जो भी कोड करे, वह लाइट बनकर बाहर निकल जाता है। यही वजह है कि 1G फ़ाइबर मॉड्यूल का कोई “मोड” नहीं होता — लेकिन पोर्ट का होता है, और वह 1000BASE-X होना चाहिए (अक्सर “SerDes” या “fiber” मोड के तौर पर दिखता है, दूर वाले छोर पर AN न होने पर Cisco पर speed nonegotiate)।

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 पेयर; ऑप्शनल 625 MHz DDR क्लॉक पेयर (TX_CLK/RX_CLK) — ज़्यादातर SerDes इम्प्लीमेंटेशन क्लॉकलेस चलते हैं
ऑटो-नेगोशिएशनSGMII कंट्रोल वर्ड (यह भी /C/ ऑर्डर्ड सेट में, 16 बिट का, भेजा जाता है): बिट 15 लिंक, बिट 11–10 स्पीड (10/100/1000), बिट 12 डुप्लेक्स, बिट 14 ack — MAC को यह बताने के लिए PHY → MAC भेजा जाता है कि कॉपर साइड ने क्या नेगोशिएट किया। Clause 37 की कंटेंट के साथ कम्पैटिबल नहीं
कहाँMAC ↔ कॉपर PHY (Marvell 88E15xx, TI DP83867, Broadcom), उन बोर्ड पर SoC ↔ SFP केज जिन्हें कॉपर SFP सपोर्ट चाहिए, कॉपर 1000BASE-T SFP के अंदर

SGMII एक MAC–PHY इंटरफ़ेस है; “ऑटो-नेगोशिएशन” दो बार होता है — पहले PHY और लिंक पार्टनर के बीच ट्विस्टेड पेयर पर Clause 28, फिर 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नहीं

Marvell 88E1111 पर बेस्ड कॉपर SFP मॉड्यूल डिफ़ॉल्ट रूप से SGMII या 1000BASE-X पर जाते हैं, यह इस बात पर निर्भर करता है कि मैन्युफ़ैक्चर के समय कॉन्फ़िगरेशन EEPROM/स्ट्रैप कैसे सेट है; वेंडर एक ही मॉड्यूल के “SGMII” और “SerDes” वेरिएंट बेचते हैं, और कुछ को मॉड्यूल के I²C पर पहुँचे जा सकने वाले PHY रजिस्टर के ज़रिए बदला जा सकता है। जो स्विच पोर्ट “1000BASE-T SFP supported” बताते हैं, वे उन केज पर SGMII इम्प्लीमेंट करते हैं (कॉपर ईथरनेट और DAC)।

100BASE-FX SFP

एक 100 Mb/s फ़ाइबर SFP (100BASE-FX, 1310 nm, 2 km) को होस्ट से चाहिए कि वह लेन को 125 MBd पर 4b/5b के साथ चलाए — यह बिल्कुल अलग PCS है। सिर्फ़ वे पोर्ट काम करते हैं जो साफ़ तौर पर “100M SFP” सपोर्ट करते हैं (चुनिंदा पोर्ट पर कई कैंपस स्विच, ज़्यादातर राउटर; कुछ ही डेटा-सेंटर स्विच); बाक़ी पर मॉड्यूल डिटेक्ट तो होता है पर कभी लिंक नहीं करता। कुछ होस्ट 100BASE-FX को मॉड्यूल के अंदर एक्सटर्नल PHY के साथ SGMII रिप्लिकेशन से इम्प्लीमेंट करते हैं (“100M over SGMII” SFP)।

2500BASE-X

आइटमवैल्यू
रेट3.125 GBd, 8b/10b → 2.5 Gb/s
स्टैंडर्डIEEE से कोई नहीं (de facto, 2.5 × 1000BASE-X); Linux phy-interface-type = "2500base-x"
ANClause 37 स्टाइल, अक्सर डिसेबल
कहाँ2.5G SFP मॉड्यूल (2.5GBASE-T कॉपर, 2.5G फ़ाइबर), होस्ट की तरफ़ GPON/EPON ONU स्टिक (2.5G डाउनस्ट्रीम), Wi-Fi 6 AP अपलिंक, कुछ 2.5G स्विच SFP केज

मल्टीगिग के लिए IEEE के बराबर वाले 2.5GBASE-X/5GBASE-R (802.3bz) हैं, लेकिन ज़्यादातर सिलिकॉन 2500BASE-X या USXGMII बोलता है।

QSGMII: एक लेन पर चार पोर्ट

आइटमवैल्यू
रेट5 GBd, 8b/10b; 4 SGMII चैनल टाइम-मल्टीप्लेक्स्ड
लेनचार पोर्ट के लिए 2 पेयर
कहाँस्विच ASIC ↔ क्वाड कॉपर PHY (48-पोर्ट एक्सेस स्विच: 48 SGMII की जगह 12 QSGMII लेन), एक्सटर्नल SerDes के ज़रिए कुछ क्वाड-पोर्ट SFP केज डिज़ाइन
वेरिएंटQSGMII (Cisco), कुछ Qualcomm/Realtek SoC पर “PSGMII” (5 पोर्ट) भी

सामान्य डिज़ाइन में केज पर यह दिखता नहीं; तब मायने रखता है जब कोई क्वाड-PHY बोर्ड SFP कॉम्बो पोर्ट एक्सपोज़ करता है जिनका मोड PHY चैनल से इनहेरिट होता है।

USXGMII: एक 10G लेन पर 10 Mb/s से 10 Gb/s तक

आइटमवैल्यू
रेट10.3125 GBd, 64b/66b (10GBASE-R इलेक्ट्रिकल)
स्पीड10M, 100M, 1G, 2.5G, 5G, 10G — सिंबल रिप्लिकेशन से (SGMII को बड़े स्केल पर जैसा)
स्पेकCisco USXGMII (v1.2), व्यापक रूप से अपनाया गया; Linux usxgmii
मल्टी-पोर्टUSXGMII-M: एक 10G लेन पर 4 × 2.5G, 2 × 5G, 4 × 1G+… (QSGMII जैसा)
AN64b/66b आइडल में USXGMII AN वर्ड, स्पीड/डुप्लेक्स/लिंक रिपोर्ट करता है
कहाँASIC ↔ मल्टीगिग PHY (2.5/5/10GBASE-T पोर्ट), 10GBASE-T SFP+ मॉड्यूल (इंटरनल PHY, जैसे Marvell AQR/Broadcom)

एक 10GBASE-T SFP+ मॉड्यूल एक सामान्य SFP+ पोर्ट को 10GBASE-R (SFI) दिखाता है और 10G पर लिंक करता है; क्या यह 1G/2.5G/5G क्लाइंट को भी सर्व कर सकता है, यह इस पर निर्भर करता है कि होस्ट उस केज पर USXGMII रेट एडेप्टेशन सपोर्ट करता है या नहीं — ज़्यादातर स्विच नहीं करते, इसलिए मॉड्यूल सिर्फ़ 10G पर काम करता है, या एडेप्टेशन अंदर ही कर लेता है और होस्ट को 10G रिपोर्ट करता है जबकि कॉपर साइड धीमी चलती है (स्पीड और रेट)।

होस्ट मोड कैसे चुनता है

होस्टमैकेनिज़्म
Linux phylink/SFPA0h बाइट 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पोर्ट का डिफ़ॉल्ट प्लेटफ़ॉर्म से (ज़्यादातर 1G SFP केज = SGMII-सक्षम; SFP+/SFP28 पर 1G अक्सर सिर्फ़ 1000BASE-X), कमांड speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode
NIC ड्राइवरIntel: SFP+ पोर्ट 1G को सिर्फ़ 1000BASE-X में सपोर्ट करते हैं (10/100 कॉपर SFP नहीं); Mellanox: कुछ मॉडल पर 1000BASE-X के ज़रिए 1G; Broadcom: फ़र्मवेयर के मुताबिक (NIC पोर्ट)
कॉपर SFPPHY मोड स्ट्रैप/EEPROM (SGMII बनाम SerDes वेरिएंट), AN का बर्ताव वेंडर फ़र्मवेयर से सेट होता है

मिसमैच टेबल

लक्षणकारणसमाधान
कॉपर SFP: 1G क्लाइंट ठीक, 10/100 कभी लिंक नहीं होतेपोर्ट 1000BASE-X मेंकिसी SGMII-सक्षम पोर्ट पर जाएँ या ऐसा मॉड्यूल इस्तेमाल करें जो 10/100 को 1G-to-host एडेप्टेशन के पीछे छुपा दे
फ़ाइबर SFP सिर्फ़ AN बंद होने पर लिंक करता हैदूर वाले छोर पर Clause 37 नहीं है (मीडिया कन्वर्टर, कुछ ONU) या किसी कॉपर मॉड्यूल से SGMII वर्डspeed nonegotiate / autoneg off
100BASE-FX SFP डिटेक्ट हुआ, लिंक नहींहोस्ट में 100M SerDes मोड नहीं हैऐसा पोर्ट इस्तेमाल करें जो 100M SFP सपोर्ट करे, या 100BASE-FX-over-SGMII मॉड्यूल
2.5G SFP 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 में वह मोड नहीं हैsfp: module … interface के लिए dmesg जाँचें; कंप्लायंस बाइट या डिवाइस ट्री ठीक करें

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, कंप्लायंस कोड)।


अगर आपको इस सामग्री में कोई अशुद्धि या त्रुटि दिखे, तो संबंधित अंश चुनें और Ctrl+Enter दबाकर