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" |
| AN | Clause 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 जैसा) |
| AN | 64b/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/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 | पोर्ट का डिफ़ॉल्ट प्लेटफ़ॉर्म से (ज़्यादातर 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 पोर्ट) |
| कॉपर SFP | PHY मोड स्ट्रैप/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, कंप्लायंस कोड)।