โปรโตคอลและทรานสปอร์ตของ IB: เลเยอร์, QP, RDMA และตัวจัดการซับเน็ต
InfiniBand ถูกออกแบบมาตั้งแต่ต้นให้เป็นฟาบริกสำหรับให้คอมพิวเตอร์คุยกับหน่วยความจำของกันและกัน ไม่ใช่สำหรับส่งแพ็กเก็ตระหว่างอุปกรณ์แปลกหน้า เลเยอร์ การกำหนดที่อยู่ และการจัดการของมันดูไม่คุ้นเคยสำหรับวิศวกร Ethernet แต่เข้าใจง่ายเมื่อรู้จักคำศัพท์แล้ว และสิ่งเหล่านี้อธิบายได้ว่าทำไมเลเยอร์กายภาพจึงถูกควบคุมด้วยมาตรฐานที่เข้มงวดขนาดนี้ หน้านี้เป็นมุมมองด้านโปรโตคอล ส่วนออปติกอยู่ใน ออปติกของ InfiniBand
เลเยอร์
| เลเยอร์ | เนื้อหา | หมายเหตุ |
|---|---|---|
| กายภาพ (Physical) | เลน (1x, 4x, 8x, 12x), การส่งสัญญาณต่อเลน (NRZ ถึง PAM4 ของ HDR… ดู ความเร็ว), การเข้ารหัส (8B/10B ถึง QDR, 64B/66B ตั้งแต่ FDR), FEC (ตั้งแต่ FDR เป็นทางเลือก, RS-FEC ที่ HDR/NDR) | โลกของทรานซีฟเวอร์ |
| ลิงก์ (Link) | เฮดเดอร์เส้นทางภายใน (LRH) พร้อม LID, เวอร์ชวลเลน (VL0–VL14 ข้อมูล, VL15 การจัดการ), การควบคุมการไหลแบบใช้เครดิตต่อ VL, CRC ระดับลิงก์ (ICRC/VCRC) | ไม่สูญเสียข้อมูลโดยการออกแบบ |
| เครือข่าย (Network) | เฮดเดอร์เส้นทางสากล (GRH) พร้อม GID ขนาด 128 บิตสำหรับการจัดเส้นทางข้ามซับเน็ต | ใช้ไม่บ่อยภายในคลัสเตอร์เดียว |
| ทรานสปอร์ต (Transport) | คู่คิว (QP) ที่มีคิวส่งและคิวรับ, ประเภทบริการ RC/UC/UD/XRC, การแบ่งส่วนข้อมูลตาม MTU, ACK/NAK สำหรับบริการที่เชื่อถือได้ | RDMA อยู่ในเลเยอร์นี้ |
| บน (Upper) | 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 ซึ่งเป็นของแอปพลิเคชัน คำขอทำงานที่ส่งเข้าไปจะถูกฮาร์ดแวร์ประมวลผล ผลลัพธ์จะไปอยู่ใน คิวผลลัพธ์ (completion queue) ประเภทบริการ:
| ประเภท | เชื่อถือได้ | เชื่อมต่อ | การใช้งาน |
|---|---|---|---|
| RC — เชื่อมต่อแบบเชื่อถือได้ | ใช่ (ACK/NAK ส่งซ้ำ) | ใช่ หนึ่ง QP ต่อฝั่งตรงข้าม | ทราฟฟิก RDMA ส่วนใหญ่ MPI, NCCL, สตอเรจ |
| UC — เชื่อมต่อแบบไม่เชื่อถือ | ไม่ | ใช่ | พบน้อย |
| UD — ดาตาแกรมแบบไม่เชื่อถือ | ไม่ | ไม่ หนึ่ง QP สำหรับฝั่งตรงข้ามทั้งหมด | การจัดการ, IPoIB, มัลติคาสต์ |
| XRC — เชื่อมต่อแบบเชื่อถือได้ขยาย | ใช่ | ใช้คิวรับร่วมกันข้ามโพรเซส | งาน MPI ขนาดใหญ่เพื่อลดจำนวน QP |
| RD — ดาตาแกรมแบบเชื่อถือได้ | ใช่ | ไม่ | แทบไม่มีการใช้งานจริง |
การทำงานของ RDMA (READ, WRITE, atomic) ย้ายข้อมูลโดยตรงระหว่างบัฟเฟอร์ของแอปพลิเคชันบนโฮสต์สองเครื่องโดยไม่ต้องให้ CPU ฝั่งใดคัดลอกข้อมูล ส่วน SEND/RECEIVE ใช้ส่งข้อความ หน่วยความจำต้องถูก ลงทะเบียน (registered) (ปักหมุดในหน่วยความจำและได้รับคีย์) ก่อนที่ HCA จะเข้าถึงได้ GPUDirect RDMA ขยายกลไกนี้ไปถึงหน่วยความจำ GPU (ฟาบริก GPU)
การควบคุมการไหลและ MTU
ทุกลิงก์ใช้ การควบคุมการไหลแบบใช้เครดิตต่อเวอร์ชวลเลน: ฝั่งรับประกาศพื้นที่บัฟเฟอร์ที่มี ฝั่งส่งจะไม่ส่งเกินกว่าที่ฝั่งรับรองรับได้ ไม่มีเฟรมถูกทิ้งเพราะความคับคั่ง แต่แรงดันย้อนกลับจะแผ่กระจายออกไปแทน ซึ่งเป็นข้อแลกเปลี่ยนแบบเดียวกับเครดิตของ Fibre Channel และเป็นเหตุผลที่ลิงก์เพียงเส้นเดียวที่ช้าหรือมีข้อผิดพลาดจะฉุดงานทั้งงานให้ช้าลง MTU ของลิงก์อยู่ที่ 256–4096 ไบต์ (ปกติ 4096) ส่วน MTU ของเส้นทางถูกเจรจากันตั้งแต่ต้นทางถึงปลายทาง ระดับบริการ (service levels, SL) จับคู่กับ VL เพื่อแยกคลาสทราฟฟิก และ การจัดเส้นทางแบบปรับตัว (adaptive routing) ช่วยเบี่ยงทราฟฟิกให้หลีกเลี่ยงลิงก์ที่คับคั่ง
ตัวจัดการซับเน็ต
แต่ละซับเน็ตมี ตัวจัดการซับเน็ต (subnet manager, SM) ทำงานอยู่เพียงตัวเดียว (ตัวอื่นสแตนด์บายรอไว้) โดยตัวจัดการซับเน็ตทำหน้าที่ดังนี้:
- ค้นพบ โทโพโลยีด้วยการไล่ตรวจฟาบริกด้วยแพ็กเก็ตจัดการเส้นทางกำหนดทิศทาง (SMP บน VL15/QP0) — ทุกสวิตช์และทุกพอร์ต HCA
- กำหนด LID และตั้งค่าพอร์ต (ความเร็ว ความกว้าง MTU การจัดสรร VL, PKey)
- คำนวณเส้นทาง — min-hop, up-down, fat-tree, dragonfly+, การจัดเส้นทางแบบปรับตัว — และตั้งค่า ตารางฟอร์เวิร์ดเชิงเส้น ของสวิตช์แต่ละตัว
- ตรวจกวาด เป็นระยะและเมื่อมีการแจ้งเตือนสถานะ (trap ของพอร์ตขึ้น/ลง) พร้อมจัดเส้นทางใหม่เพื่อหลีกเลี่ยงจุดที่ล้มเหลว
- เรียกใช้ ตัวดูแลระบบซับเน็ต (subnet administrator, SA) ที่ตอบคำค้นหาเส้นทางจากโฮสต์
OpenSM (โอเพนซอร์ส) และตัวจัดการฟาบริกของผู้ผลิต (UFM) เป็นผู้ทำหน้าที่นี้ ตัวจัดการฟาบริกยังเป็นจุดที่รวบรวมข้อผิดพลาดของพอร์ต ผลการเจรจาความเร็ว/ความกว้างของลิงก์ และ DDM ของออปติกทั่วทั้งฟลีต (ความเชื่อถือได้ของลิงก์และการตรวจติดตาม)
การเจรจาลิงก์
เมื่อลิงก์ขึ้น ทั้งสองฝั่งจะเจรจา ความกว้าง (1x/2x/4x) และ ความเร็ว (อัตราต่อเลน) ให้ได้ค่าร่วมที่สูงที่สุด ลิงก์ที่ขึ้นมาที่ 2x หรือช้ากว่าที่คาดไว้หนึ่งรุ่นคือกรณีเทียบเท่าของ InfiniBand กับ “ลิงก์ขึ้นที่ 10G ไม่ใช่ 25G” ของ Ethernet: ใยแก้วนำแสงหรือเลเซอร์ของเลนใดเลนหนึ่ง สายที่ก้ำกึ่ง หรือทรานซีฟเวอร์คนละรุ่นกัน (ความเร็วและอัตรา) ตัวจัดการฟาบริกรายงานสถานะที่เจรจาได้ ส่วน ibstat / ibportstate แสดงผลบนโฮสต์
เครื่องมือจัดการและวินิจฉัย
| เครื่องมือ | จุดประสงค์ |
|---|---|
ibstat, ibstatus | สถานะพอร์ตภายในเครื่อง, อัตรา, ความกว้าง, LID |
ibnetdiscover | การดัมป์โทโพโลยี |
ibdiagnet | ตรวจสอบทั่วทั้งฟาบริก: ข้อผิดพลาด, ความเร็ว/ความกว้างไม่ตรงกัน, GUID ซ้ำ, ข้อมูลสาย |
perfquery, ibqueryerrors | ตัวนับต่อพอร์ต: ข้อผิดพลาดสัญลักษณ์, ลิงก์ล่ม, การกู้คืนลิงก์, ข้อผิดพลาดการรับของพอร์ต, บัฟเฟอร์ล้นเกิน, VL15 ถูกทิ้ง, ตัวนับ FEC |
mlxlink, mlxcables | รายละเอียด PHY ต่อพอร์ต และ EEPROM ของสาย/ทรานซีฟเวอร์, DDM, ฮิสโทแกรม FEC |
ibportstate | บังคับความเร็ว/ความกว้าง, รีเซ็ตพอร์ต |
ข้อผิดพลาดสัญลักษณ์และการกู้คืนลิงก์คือตัวนับระดับเลเยอร์กายภาพ ซึ่งเทียบเท่ากับ CRC/FEC ของ Ethernet และเกี่ยวข้องกับกำลังรับและความสะอาด (ฟาบริก)
InfiniBand เทียบกับ RoCE ในย่อหน้าเดียว
RoCE v2 ใช้ทรานสปอร์ต verbs/RDMA แบบเดียวกันแต่วิ่งบน UDP/IP/Ethernet โดยแทนที่ตัวจัดการซับเน็ตด้วยการจัดเส้นทางแบบ IP และแทนที่ PKey ด้วย VLAN พร้อมทั้งแทนที่การควบคุมการไหลแบบเครดิตด้วย PFC/ECN (DCQCN) ซึ่งต้องตั้งค่าให้ถูกต้องจึงจะไม่สูญเสียข้อมูล (Ethernet แบบไม่สูญเสียข้อมูล, การเชื่อมต่อระหว่างกัน) ทรานซีฟเวอร์เป็นตัวเดียวกันทางกายภาพ ต่างกันเพียงการเขียนโค้ดข้อมูลระบุตัวตนและนโยบายของโฮสต์
ใน CodingBox
โมดูล InfiniBand ถูกอ่านเหมือน QSFP/OSFP ทั่วไป: ข้อมูลระบุตัวตน (รวมถึงบิตอัตรา InfiniBand ใน SFF-8636 ไบต์ 164 หรือแอปพลิเคชันของ CMIS), DDM ต่อเลน และเช็กซัม บน Check transceiver และ DDM พอร์ตที่เจรจาได้ความเร็วต่ำกว่าที่กำหนดคุ้มค่าที่จะอ่านบนโต๊ะทดสอบทั้งสองด้าน