Giao thức và transport IB: lớp, QP, RDMA, subnet manager
InfiniBand được thiết kế ngay từ đầu như một fabric để các máy tính truy cập bộ nhớ lẫn nhau, chứ không phải để trao đổi gói tin giữa những bên xa lạ. Các lớp, cách đánh địa chỉ và cách quản lý của nó trông xa lạ với kỹ sư Ethernet, nhưng lại đơn giản một khi đã nắm được từ vựng — và chính điều đó giải thích vì sao lớp vật lý phải tuân theo các tiêu chuẩn chặt chẽ đến vậy. Trang này là góc nhìn giao thức; phần quang học nằm ở Quang học InfiniBand.
Các lớp
| Lớp | Nội dung | Ghi chú |
|---|---|---|
| Physical | làn (1x, 4x, 8x, 12x), tín hiệu theo từng làn (từ NRZ đến PAM4 của HDR… xem tốc độ), mã hóa (8B/10B tới QDR, 64B/66B từ FDR trở đi), FEC (tùy chọn từ FDR, RS-FEC ở HDR/NDR) | thế giới của transceiver |
| Link | tiêu đề định tuyến cục bộ (LRH) mang LID, làn ảo (VL0–VL14 dữ liệu, VL15 quản lý), điều khiển luồng theo credit trên từng VL, CRC lớp liên kết (ICRC/VCRC) | không mất gói theo thiết kế |
| Network | tiêu đề định tuyến toàn cục (GRH) mang GID 128-bit để định tuyến giữa nhiều subnet | hiếm khi dùng bên trong một cụm |
| Transport | cặp hàng đợi (QP) gồm hàng đợi gửi/nhận, các kiểu dịch vụ RC/UC/UD/XRC, phân đoạn theo MTU, ACK/NAK cho dịch vụ tin cậy | RDMA nằm ở đây |
| Upper | verbs API, MPI, NCCL (qua UCX/SHARP), lưu trữ (SRP, iSER, NVMe/IB), IPoIB | những gì ứng dụng dùng tới |
Đánh địa chỉ và thông tin nhận dạng
| Định danh | Kích thước | Gán bởi | Ý nghĩa |
|---|---|---|---|
| GUID | 64-bit | nhà sản xuất | thông tin nhận dạng cố định của một cổng, node hoặc hệ thống (giống MAC) |
| LID (định danh cục bộ) | 16-bit | subnet manager | địa chỉ trong một subnet; bảng chuyển tiếp dùng LID |
| GID | 128-bit | SM (tiền tố) + GUID | tiền tố subnet + GUID; dùng giữa các subnet và bởi RoCE |
| PKey (khóa phân vùng) | 16-bit | SM | tư cách thành viên trong một phân vùng (giống VLAN); thành viên đầy đủ/hạn chế |
| QPN | 24-bit | HCA | số hiệu cặp hàng đợi — điểm cuối trong một cổng |
Cặp hàng đợi và các kiểu dịch vụ giao vận
Một cặp hàng đợi (QP) là một hàng đợi gửi và một hàng đợi nhận trong HCA, thuộc sở hữu của một ứng dụng. Các yêu cầu công việc được đưa vào đó do phần cứng thực thi; kết quả hoàn thành được ghi vào một hàng đợi hoàn thành. Các kiểu dịch vụ:
| Kiểu | Tin cậy | Có kết nối | Dùng cho |
|---|---|---|---|
| RC — tin cậy, có kết nối | có (ACK/NAK, truyền lại) | có, một QP cho mỗi peer | phần lớn lưu lượng RDMA; MPI, NCCL, lưu trữ |
| UC — không tin cậy, có kết nối | không | có | hiếm gặp |
| UD — không tin cậy, datagram | không | không, một QP dùng chung cho mọi peer | quản lý, IPoIB, multicast |
| XRC — tin cậy mở rộng, có kết nối | có | hàng đợi nhận dùng chung giữa các tiến trình | các tác vụ MPI lớn, để giảm số lượng QP |
| RD — tin cậy, datagram | có | không | gần như không được dùng |
Các thao tác RDMA (READ, WRITE, atomic) di chuyển dữ liệu trực tiếp giữa các buffer ứng dụng trên hai host mà không CPU nào phải sao chép dữ liệu đó; SEND/RECEIVE mang các thông điệp. Bộ nhớ phải được đăng ký (ghim lại và được cấp một khóa) trước khi HCA có thể chạm vào nó. GPUDirect RDMA mở rộng cơ chế này sang bộ nhớ GPU (Fabric GPU).
Điều khiển luồng và MTU
Mọi liên kết đều chạy điều khiển luồng theo credit trên từng làn ảo: bên nhận thông báo dung lượng buffer còn trống, bên gửi không bao giờ truyền nhiều hơn mức bên nhận có thể hấp thụ. Không khung nào bị rớt vì nghẽn mạng; thay vào đó, áp lực nghẽn lan truyền ngược về nguồn — cùng một sự đánh đổi như credit của Fibre Channel, và cũng là lý do một liên kết chậm hoặc lỗi duy nhất làm suy giảm cả một tác vụ. MTU của liên kết là 256–4096 byte (thường là 4096); MTU của đường đi được thỏa thuận từ đầu đến cuối. Mức dịch vụ (SL) ánh xạ vào các VL để tách riêng các lớp lưu lượng, và định tuyến thích ứng có thể lái luồng dữ liệu tránh các liên kết đang nghẽn.
Subnet manager
Mỗi subnet chỉ có đúng một subnet manager (SM) hoạt động (các subnet manager khác ở chế độ chờ). Nó:
- Khám phá cấu trúc mạng bằng cách duyệt khắp fabric bằng các gói quản lý định tuyến trực tiếp (SMP trên VL15/QP0) — tới từng cổng switch và HCA.
- Gán LID và cấu hình các cổng (tốc độ, độ rộng, MTU, phân xử VL, PKey).
- Tính toán tuyến đường — min-hop, up-down, fat-tree, dragonfly+, định tuyến thích ứng — và nạp vào bảng chuyển tiếp tuyến tính của từng switch.
- Quét lại định kỳ và khi có trap (cổng up/down), định tuyến lại để tránh các điểm lỗi.
- Chạy subnet administrator (SA), thành phần trả lời các truy vấn đường đi từ host.
OpenSM (mã nguồn mở) và các fabric manager của nhà sản xuất (UFM) hiện thực chức năng này; fabric manager cũng là nơi lỗi cổng, kết quả thỏa thuận tốc độ/độ rộng liên kết và DDM quang học được thu thập trên toàn hệ thống (Độ tin cậy liên kết & giám sát).
Thỏa thuận liên kết
Khi liên kết lên, cả hai đầu thỏa thuận độ rộng (1x/2x/4x) và tốc độ (tốc độ trên từng làn) theo giá trị chung cao nhất. Một liên kết lên ở 2x hoặc chậm hơn một thế hệ so với kỳ vọng chính là phiên bản InfiniBand của hiện tượng Ethernet “lên liên kết ở 10G, không phải 25G”: sợi quang hoặc laser của một làn có vấn đề, cáp cận biên, hoặc lệch thế hệ transceiver (Tốc độ & tốc độ truyền). Fabric manager báo cáo trạng thái đã thỏa thuận; ibstat / ibportstate hiển thị trạng thái đó trên host.
Công cụ quản lý và chẩn đoán
| Công cụ | Mục đích |
|---|---|
ibstat, ibstatus | trạng thái cổng cục bộ, tốc độ truyền, độ rộng, LID |
ibnetdiscover | kết xuất cấu trúc mạng |
ibdiagnet | kiểm tra toàn fabric: lỗi, lệch tốc độ truyền/độ rộng, GUID trùng lặp, thông tin cáp |
perfquery, ibqueryerrors | bộ đếm theo từng cổng: lỗi symbol, liên kết rớt, liên kết phục hồi, lỗi nhận tại cổng, tràn buffer quá mức, gói VL15 bị rớt, bộ đếm FEC |
mlxlink, mlxcables | chi tiết PHY theo từng cổng và EEPROM cáp/transceiver, DDM, histogram FEC |
ibportstate | ép tốc độ truyền/độ rộng, reset một cổng |
Lỗi symbol và số lần liên kết phục hồi là các bộ đếm ở lớp vật lý — tương đương với CRC/FEC của Ethernet, gắn liền với công suất Rx và độ sạch của đầu nối quang (Fabric).
InfiniBand so với RoCE trong một đoạn
RoCE v2 mang cùng một lớp giao vận verbs/RDMA trên nền UDP/IP/Ethernet; nó thay subnet manager bằng định tuyến IP, và PKey bằng VLAN, đồng thời thay điều khiển luồng credit bằng PFC/ECN (DCQCN) — cơ chế này phải được cấu hình đúng thì mới không mất gói (Ethernet không mất gói, Kết nối liên thông). Bản thân transceiver về mặt vật lý là như nhau; chỉ khác ở cách mã hóa thông tin nhận dạng và chính sách của host.
Trong CodingBox
Module InfiniBand được đọc như mọi QSFP/OSFP khác: thông tin nhận dạng (kể cả các bit tốc độ truyền InfiniBand trong byte 164 của SFF-8636 hoặc trong các application của CMIS), DDM theo từng làn và checksum, trên Check transceiver và DDM. Một cổng đang thỏa thuận ở tốc độ thấp hơn mức danh định thì đáng để đọc cả hai đầu trên bàn thử.