IB प्रोटोकॉल और ट्रांसपोर्ट: लेयर, QP, RDMA, सबनेट मैनेजर
InfiniBand को शुरू से ही एक ऐसी फ़ैब्रिक के तौर पर डिज़ाइन किया गया था जिसमें कंप्यूटर एक-दूसरे की मेमोरी से बात करते हैं, न कि अजनबियों के बीच पैकेट भेजने के लिए। इसकी लेयर, एड्रेसिंग और मैनेजमेंट Ethernet इंजीनियर को अपरिचित लगती हैं, लेकिन शब्दावली समझ आते ही ये सीधी हो जाती हैं — और यही बताती हैं कि फ़िज़िकल लेयर को इतने सख़्त मानकों पर क्यों रखा जाता है। यह पेज प्रोटोकॉल का नज़रिया है; ऑप्टिक्स InfiniBand ऑप्टिक्स में हैं।
लेयर
| लेयर | कंटेंट | नोट |
|---|---|---|
| फ़िज़िकल | लेन (1x, 4x, 8x, 12x), प्रति-लेन सिग्नलिंग (NRZ से लेकर HDR के PAM4 तक… देखें स्पीड), एन्कोडिंग (QDR तक 8B/10B, FDR से 64B/66B), FEC (FDR से ऑप्शनल, HDR/NDR पर RS-FEC) | ट्रांसीवर की दुनिया |
| लिंक | LID के साथ लोकल राउटिंग हेडर (LRH), वर्चुअल लेन (VL0–VL14 डेटा, VL15 मैनेजमेंट), प्रति-VL क्रेडिट-आधारित फ़्लो कंट्रोल, लिंक-लेयर CRC (ICRC/VCRC) | डिज़ाइन से ही लॉसलेस |
| नेटवर्क | मल्टी-सबनेट राउटिंग के लिए 128-बिट GID के साथ ग्लोबल राउटिंग हेडर (GRH) | एक क्लस्टर के भीतर कम ही इस्तेमाल होता है |
| ट्रांसपोर्ट | सेंड/रिसीव क्यू वाले क्यू पेयर (QP), सर्विस टाइप RC/UC/UD/XRC, MTU तक सेगमेंटेशन, रिलायबल सर्विस के लिए ACK/NAK | यहीं RDMA काम करता है |
| अपर | verbs API, MPI, NCCL (UCX/SHARP के ज़रिए), स्टोरेज (SRP, iSER, NVMe/IB), IPoIB | जो एप्लिकेशन इस्तेमाल करते हैं |
एड्रेसिंग और पहचान
| आइडेंटिफ़ायर | साइज़ | असाइन करने वाला | अर्थ |
|---|---|---|---|
| GUID | 64-बिट | निर्माता | पोर्ट, नोड या सिस्टम की स्थायी पहचान (MAC जैसी) |
| LID (लोकल आइडेंटिफ़ायर) | 16-बिट | सबनेट मैनेजर | सबनेट के भीतर एड्रेस; फ़ॉरवर्डिंग टेबल LID इस्तेमाल करती हैं |
| GID | 128-बिट | SM (प्रीफ़िक्स) + GUID | सबनेट प्रीफ़िक्स + GUID; सबनेट के बीच और RoCE में इस्तेमाल होता है |
| PKey (पार्टिशन कुंजी) | 16-बिट | SM | पार्टिशन में सदस्यता (VLAN जैसी); फ़ुल/लिमिटेड सदस्य |
| QPN | 24-बिट | HCA | क्यू पेयर नंबर — पोर्ट के भीतर एंडपॉइंट |
क्यू पेयर और ट्रांसपोर्ट सर्विस
एक क्यू पेयर HCA में एक सेंड क्यू और एक रिसीव क्यू होता है, जिसका मालिक कोई एप्लिकेशन होता है। इसमें पोस्ट की गई वर्क रिक्वेस्ट हार्डवेयर एक्ज़िक्यूट करता है; कम्प्लीशन एक कम्प्लीशन क्यू में पहुँचते हैं। सर्विस टाइप:
| टाइप | रिलायबल | कनेक्टेड | इस्तेमाल |
|---|---|---|---|
| RC — विश्वसनीय, कनेक्शन-आधारित | हाँ (ACK/NAK, रीट्रांसमिट) | हाँ, प्रति पीयर एक QP | ज़्यादातर RDMA ट्रैफ़िक; MPI, NCCL, स्टोरेज |
| UC — अविश्वसनीय, कनेक्शन-आधारित | नहीं | हाँ | कम ही इस्तेमाल होता है |
| UD — अविश्वसनीय डेटाग्राम | नहीं | नहीं, सभी पीयर के लिए एक QP | मैनेजमेंट, IPoIB, मल्टीकास्ट |
| XRC — विस्तारित विश्वसनीय, कनेक्शन-आधारित | हाँ | प्रोसेस के बीच साझा रिसीव क्यू | QP की संख्या घटाने के लिए बड़ी MPI जॉब में |
| RD — विश्वसनीय डेटाग्राम | हाँ | नहीं | व्यावहारिक रूप से इस्तेमाल नहीं होता |
RDMA ऑपरेशन (READ, WRITE, एटॉमिक) दो होस्ट पर मौजूद एप्लिकेशन बफ़र के बीच डेटा सीधे मूव करते हैं, बिना किसी CPU के उसे कॉपी किए; SEND/RECEIVE मैसेज ले जाता है। HCA के छूने से पहले मेमोरी को रजिस्टर किया जाना ज़रूरी है (पिन की गई और उसे एक कुंजी दी गई)। GPUDirect RDMA इसे GPU मेमोरी तक बढ़ा देता है (GPU फ़ैब्रिक)।
फ़्लो कंट्रोल और MTU
हर लिंक प्रति वर्चुअल लेन क्रेडिट-आधारित फ़्लो कंट्रोल चलाता है: रिसीवर बफ़र स्पेस विज्ञापित करता है, सेंडर उससे ज़्यादा कभी नहीं भेजता जितना वह अब्ज़ॉर्ब कर सके। कंजेशन की वजह से कोई फ़्रेम ड्रॉप नहीं होता; इसकी जगह बैक-प्रेशर आगे बढ़ता है — यह वही ट्रेड-ऑफ़ है जो Fibre Channel के क्रेडिट में होता है, और यही वजह है कि एक भी धीमा या एररयुक्त लिंक पूरी जॉब को डिग्रेड कर देता है। लिंक MTU 256–4096 बाइट (आमतौर पर 4096) होता है; पाथ MTU एंड टू एंड नेगोशिएट होता है। सर्विस लेवल (SL) ट्रैफ़िक क्लास अलग करने के लिए VL से मैप होते हैं, और एडेप्टिव राउटिंग फ़्लो को कंजेस्टेड लिंक के आसपास से निकाल सकता है।
सबनेट मैनेजर
हर सबनेट पर ठीक एक सबनेट मैनेजर (SM) सक्रिय होता है (बाक़ी स्टैंडबाय पर रहते हैं)। यह:
- डायरेक्टेड-रूट मैनेजमेंट पैकेट (VL15/QP0 पर SMP) के साथ फ़ैब्रिक में घूमकर टोपोलॉजी को डिस्कवर करता है — हर स्विच और HCA पोर्ट को।
- LID असाइन करता है और पोर्ट कॉन्फ़िगर करता है (स्पीड, विड्थ, MTU, VL आर्बिट्रेशन, PKey)।
- रूट कैलकुलेट करता है — min-hop, up-down, fat-tree, dragonfly+, एडेप्टिव राउटिंग — और हर स्विच की लीनियर फ़ॉरवर्डिंग टेबल प्रोग्राम करता है।
- समय-समय पर और ट्रैप (पोर्ट up/down) पर स्वीप करता है, फ़ेल्योर के आसपास से री-राउट करते हुए।
- सबनेट एडमिनिस्ट्रेटर (SA) चलाता है, जो होस्ट से आने वाली पाथ क्वेरी का जवाब देता है।
OpenSM (ओपन सोर्स) और विक्रेता के फ़ैब्रिक मैनेजर (UFM) इसे लागू करते हैं; फ़ैब्रिक मैनेजर वह जगह भी है जहाँ पोर्ट एरर, लिंक स्पीड/विड्थ नेगोशिएशन के नतीजे और ऑप्टिक्स DDM पूरे फ़्लीट में इकट्ठा होते हैं (लिंक रिलायबिलिटी और मॉनिटरिंग)।
लिंक नेगोशिएशन
लिंक-अप पर दोनों सिरे विड्थ (1x/2x/4x) और स्पीड (प्रति-लेन रेट) को सबसे ऊँचे कॉमन वैल्यू पर नेगोशिएट करते हैं। जो लिंक उम्मीद से 2x पर या एक जनरेशन धीमा आता है, वह Ethernet के “10G पर लिंक, 25G पर नहीं” का InfiniBand जैसा मामला है: एक लेन की फ़ाइबर या लेज़र, कोई मार्जिनल केबल, या मिसमैच्ड ट्रांसीवर जनरेशन (स्पीड और रेट)। फ़ैब्रिक मैनेजर नेगोशिएट की गई स्थिति रिपोर्ट करता है; होस्ट पर इसे ibstat / ibportstate दिखाते हैं।
मैनेजमेंट और डायग्नोस्टिक्स टूल
| टूल | मक़सद |
|---|---|
ibstat, ibstatus | लोकल पोर्ट स्टेटस, रेट, विड्थ, LID |
ibnetdiscover | टोपोलॉजी डंप |
ibdiagnet | पूरी फ़ैब्रिक की जाँच: एरर, स्पीड/विड्थ मिसमैच, डुप्लिकेट GUID, केबल जानकारी |
perfquery, ibqueryerrors | प्रति-पोर्ट काउंटर: सिंबल एरर, लिंक डाउन, लिंक रिकवरी, पोर्ट rcv एरर, एक्सेसिव बफ़र ओवररन, VL15 ड्रॉप, FEC काउंटर |
mlxlink, mlxcables | प्रति-पोर्ट PHY डीटेल और केबल/ट्रांसीवर EEPROM, DDM, FEC हिस्टोग्राम |
ibportstate | स्पीड/विड्थ फ़ोर्स करना, पोर्ट रीसेट करना |
सिंबल एरर और लिंक रिकवरी फ़िज़िकल-लेयर काउंटर हैं — Ethernet के CRC/FEC के समकक्ष, जो Rx पावर और सफ़ाई से जुड़े होते हैं (फ़ैब्रिक)।
एक पैराग्राफ़ में InfiniBand बनाम RoCE
RoCE v2 वही verbs/RDMA ट्रांसपोर्ट UDP/IP/Ethernet पर चलाता है; यह सबनेट मैनेजर की जगह IP राउटिंग और PKey की जगह VLAN इस्तेमाल करता है, और क्रेडिट फ़्लो कंट्रोल की जगह PFC/ECN (DCQCN) लाता है — जिसे लॉसलेस बनाने के लिए सही तरह से कॉन्फ़िगर करना ज़रूरी है (लॉसलेस ईथरनेट, इंटरकनेक्ट)। ट्रांसीवर फ़िज़िकली एक जैसे होते हैं; सिर्फ़ आइडेंटिटी कोडिंग और होस्ट पॉलिसी अलग होती हैं।
CodingBox में
InfiniBand मॉड्यूल किसी भी QSFP/OSFP की तरह पढ़े जाते हैं: पहचान जानकारी (SFF-8636 बाइट 164 या CMIS एप्लिकेशन में InfiniBand रेट बिट सहित), Check transceiver और DDM पर प्रति-लेन DDM और चेकसम। जो पोर्ट अपनी रेटेड स्पीड से कम पर नेगोशिएट करता है, उसके दोनों सिरों का बेंच पर पढ़ना उचित है।