TT Lab
Blog

한국어 English 日本語 中文

Get started
Blog

Blog

GPU Networks Read via RDMA and NCCL: InfiniBand, RoCE, Kubernetes Deployment

Status: Draft (Updated 2026-10-06). Based on descriptions verified with official documentation, and only the parts directly observed with software RoCE (rxe) (section "Field Measurement" at the end of Section 10) are values measured in a disposable virtual machine. There are no measurements using actual RDMA hardware and GPUs. Please read "Verified Versions and Dates" and "Unverified Items" at the end of this article first. Writing Rules: Field measurement data is the default, and items that could not be measured are marked as "Unmeasured".

Table of Contents

Summary

When multiple GPUs compute a single model together, communication equals performance. Inside the server, NVLink handles this, while outside the server, InfiniBand or RoCE (RDMA over Converged Ethernet) networks supporting RDMA (Remote Direct Memory Access) take charge. NCCL (NVIDIA Collective Communications Library) detects this layer and orchestrates collective communications (such as all-reduce). This post covers layer-by-layer bandwidth differences, why RoCE is difficult, NCCL environment variables and measurement tools, troubleshooting sequences, and Kubernetes configurations.

What You Can Explain in an Interview After Reading This Post

  1. Why TCP is insufficient and the differences between InfiniBand and RoCE v2 (specifically, what PFC and ECN do in RoCE and symptoms when configurations are incorrect).
  2. How NCCL performs collective communication, nccl-tests how to read its busbw, and the troubleshooting sequence when multi-node performance drops.
  3. The components required for pods to use RDMA in Kubernetes, and the points where RDMA is needed in inference (KV transfer, expert parallelism, model loading).

Author's Background. I am experimenting in a standard Ethernet (1-2.5GbE class) environment and have no experience with RDMA, InfiniBand, NVLink, or VAST. This post is compiled from reading official documentation and is not a record of operational experience. The hands-on section is limited to what is feasible, and unexecuted parts are marked as such.

1. Why TCP Is Not Enough

According to the Dynamo documentation, RDMA allows network adapters to move data from one host's memory to another host's memory (or GPU-to-GPU when using GPUDirect RDMA) without going through the CPU, kernel, or TCP/IP stack. TCP typically involves copying between user buffers and kernel buffers, system calls, and interrupts. RDMA enables kernel bypass and zero-copy because the NIC directly reads and writes to memory whose pages are pinned in advance through pre-registration (ibv_reg_mr). The speed difference is also mathematically massive. 1GbE is 0.125GB/s, and a 400Gb/s NIC is 50GB/s, which is 400 times faster. Therefore, TCP serves as a fallback path when RDMA is absent (NCCL_IB_DISABLE=1 NCCL falls back to IP sockets if this occurs).

2. InfiniBand and RoCE v2

Item InfiniBand RoCE v2
Network Dedicated RDMA network Operates on top of standard Ethernet switches
Protocol Proprietary transport layer Runs on top of UDP/IP destination port 4791, enabling L3 routing
Management Subnet Manager (SM) required Ethernet configurations such as PFC, ECN, and DSCP are key
Diagnostics ibstat, perfquery, ibdiagnet, sminfo ethtool -S, switch counters, rping

RoCE v1 uses only the Ethernet link layer for a single broadcast domain, whereas v2 adds UDP/IP to enable routing (Wikipedia).

Why RoCE Is Difficult. Because RDMA is vulnerable to packet loss, loss must be prevented or mitigated in Ethernet. NVIDIA Cumulus documentation explains two methods. PFC (Priority Flow Control) applies hop-by-hop pauses per priority to prevent buffer overflows, while ECN (Explicit Congestion Notification) marks congested packets at the switch so the receiving NIC sends back a CNP (Congestion Notification Packet) to lower the transmission rate. By default, RoCE data uses priority 3 and CNP uses strict priority queue 6. Onyx documentation distinguishes between lossless (PFC across the entire network), semi-lossless (PFC only between hosts and top-of-rack switches), and lossy (no PFC) modes. DCQCN (SIGCOMM 2015) is an ECN-based RoCE v2 congestion control designed to reduce the side effects of PFC; according to the abstract, it is implemented in Mellanox NICs and deployed in Microsoft datacenters. DCQCN does not replace PFC. Section 7 of the paper notes that when the loss rate exceeds 0.1%, throughput plummets, making PFC still necessary. PFC can cause network-wide deadlocks (a 2016 Microsoft paper reports an actual deadlock caused by a combination of PFC and packet flooding for unknown MAC addresses in a test cluster, along with an incident where a single NIC continuously sent PAUSE frames, blocking the entire network; see "External Evidence" below), and it is noted that Ethernet DCB configurations are more complex than InfiniBand (Wikipedia).

Failures appear silently. The MinIO MemKV runbook (third-party material, not NVIDIA documentation) notes that PFC priority, DSCP mapping, and MTU must match, and if the Ethernet MTU is 1500, the active RoCE MTU is negotiated down to 1024, and if misconfigured, it ends with IBV_WC_RETRY_EXC_ERR , which only becomes apparent between nodes.

3. Layers and Bandwidth

 노드(예: 8 GPU)
 GPU0 ... GPU7 ══ NVLink / NVSwitch ══ (노드 안 전체 연결)
   │PCIe          │PCIe
  NIC0    ...    NIC7 ──> 같은 번호 NIC 끼리 같은 리프 스위치 (rail)
Layer Bandwidth Source and Unit
NVLink 4th Gen (H100) 900GB/s per GPU NVIDIA specifications, bidirectional total
NVLink 5th Gen (Blackwell) 1,800GB/s per GPU Same notation as above
PCIe 5.0 x16 32GT/s per lane, approx. 63GB/s per direction 32GT/s from Rambus documentation, 63GB/s calculated by the author assuming 128b/130b encoding
Single ConnectX-7 400Gb/s, 50GB/s per direction NVIDIA. DGX H100 features 8 compute InfiniBand cards
Standard Ethernet 0.125~0.31GB/s Theoretical values for 1GbE, 2.5GbE

Converting NVLink 4th Generation per direction (half) yields about 450GB/s, which is roughly 9 times that of a single NIC (author's conversion). The H800 cluster in the DeepSeek-V3 report also had NVLink at 160GB/s versus InfiniBand at 50GB/s, and this gap drives the trend from Part 6 where "TP is inside the node, while PP and EP are between nodes." Systems like NVL72 change the boundary as 72 GPUs form a single NVLink domain. The rail structurewas confirmed in the DGX SuperPOD reference architecture, where identically numbered NICs in each server are connected to the same leaf switch so that servers on the same rail traverse only a single switch.

4. GPUDirect RDMA and GPUDirect Storage

GPUDirect RDMA allows NICs to directly read and write GPU memory, eliminating the host memory hop. Official documentation prerequisites state that it is optimal when two devices share the same PCIe root complex with only PCIe switches in between (performance degrades if crossing QPI/UPI), and IOMMU must be disabled or set to 1:1 passthrough. NCCL documentation guides users to load the nvidia-peermem module on every boot or use the open-source driver's DMA-BUF path (unloaded modules and ACS are also common causes), and restricts the maximum distance (LOC, PIX, PXB, PHB, SYS) between the NIC and GPU using NCCL_NET_GDR_LEVEL .

GPUDirect Storage (GDS) eliminates CPU bounce buffers via DMA between storage and GPU memory, supporting cuFile APIs along with local NVMe, NVMe-oF, Lustre, WekaFS, and NFS over RDMA. If conditions are not met, it falls back to a compatibility mode that passes through CPU memory, destroying the performance benefit.

5. NCCL

Operations. Collective operations in the NCCL 2.32.3 documentation include AllReduce, Broadcast, Reduce, AllGather, ReduceScatter, AlltoAll, Gather, and Scatter, along with point-to-point send/recv. All ranks must call them with the same count and datatype; mismatches lead to undefined behavior such as hangs, crashes, or data corruption.

Algorithms and Topologies. NCCL_ALGO Algorithms listed in the documentation are Ring, Tree, CollnetChain, CollnetDirect, NVLS, NVLSTree, and PAT (NVLS is NVLink SHARP offload). According to the NCCL 2.4 blog, the ring utilizes full bandwidth but latency is proportional to the number of GPUs, whereas the double binary tree maintains bandwidth while latency increases logarithmically, improving latency by up to 180 times compared to the ring on Summit with 24,576 GPUs (NVIDIA's claimed measurement). NCCL detects NVLink, PCIe, and NIC connections during initialization to build a graph, and outputs the detection results via NCCL_TOPO_DUMP_FILE .

Variable Role (per documentation)
NCCL_DEBUG VERSION, WARN, INFO, TRACE(Added in 2.32). ATTN . Filter subsystems using NCCL_DEBUG_SUBSYS .
NCCL_SOCKET_IFNAME IP interfaces to use. List of prefixes, ^ to exclude, = for exact match.
NCCL_IB_HCA RDMA adapters to use. <hca>[:<port>] list, ^ to exclude, = for exact match.
NCCL_IB_DISABLE If 1, disables IB/RoCE and falls back to IP sockets, etc.
NCCL_NET_GDR_LEVEL Maximum allowed GPUDirect RDMA distance between NIC and GPU.
NCCL_IB_GID_INDEX, NCCL_IB_TC RoCE GID and traffic class. Do not set for 2.21 or higher as GID is auto-selected.
NCCL_CROSS_NIC Whether to allow rings and trees to use different NICs. Dependent on whether the network is rail-optimized.

The documentation warns against leaving debugging and tuning variables in production settings, noting that a gain in one benchmark may be a loss elsewhere. In inference, NCCL is used for layer-wise all-reduce in TP, and EP routes differ depending on the backend (allgather_reducescatter, DeepEP, etc.). KV transfer is handled by NIXL/UCX, so NCCL variables do not apply (Part 6).

6. How to Measure

./build/all_reduce_perf -b 8 -e 128M -f 2 -g 8                    # 노드 안 GPU 8장
mpirun -np 64 -N 8 ./build/all_reduce_perf -b 8 -e 8G -f 2 -g 1  # 8노드 x 8 GPU (MPI=1 빌드)
ib_write_bw -d mlx5_0 -a                       # perftest 서버
ib_write_bw -d mlx5_0 <서버주소> -a            # 클라이언트. --use_cuda=0 을 더하면 GPU 메모리 경로
ib_write_lat -d mlx5_0 <서버주소>              # 꼬리 지연 확인

nccl-tests outputs time, algbw(크기/시간), and busbw. busbw is a value multiplied by an operation-specific correction factor to compare against hardware limits regardless of the number of ranks; for AllReduce, it is algbw × 2(n−1)/n, and for ReduceScatter, AllGather, and AlltoAll, it is algbw × (n−1)/n . You look at how close the busbw of large messages is to the NVLink or NIC theoretical limits, and for small messages, you look at time (latency). The order in the NCCL documentation is to look at intra-node nvbandwidth and nvidia-smi topo -m, and inter-node ib_write_bw/ib_write_lat first, and if these values match expectations but NCCL alone is slow, then suspect the NCCL configuration.

7. Common Failures

Symptom Check Basis
IB Link Downgrade ibstat Rate and Active status, and mlxlink width and speed NCCL documentation
Incorrect HCA/Interface Selecting an interface that is UP but incapable of communication results in initialization failure or hanging. NCCL_SOCKET_IFNAME, NCCL_IB_HCA configuration. In the logs, NET/IB/GDRDMA instead of NET/Socket if it is TCP NCCL, vLLM Documentation
Pinned Memory Limit ibv_create_qp, ibv_reg_mr unlimited memlock if it fails. Kubernetes uses IPC_LOCK or node-level lifting NCCL, vLLM, Dynamo Documentation
RoCE GID Error ibv_modify_qp ... Invalid argument. If less than 2.21, show_gids to check RoCE v2 GID NCCL Documentation
MTU Mismatch ibv_devinfo 's active_mtu. Fails only between nodes Third-Party Runbook
PFC/ECN Misconfiguration Tail latency, unstable throughput. ethtool -S pause/PFC counters and rdma statistic retry counters, and investigate congestion control before NCCL NCCL Documentation
One slow link Because collective operations involve all ranks, the slowest segment slows down the entire process (author's explanation). If even a single rail is slow, ibdiagnet NCCL documentation

8. RDMA in Kubernetes

flowchart TB
  subgraph Node[GPU 노드]
    OFED[MOFED 드라이버<br/>ofedDriver]
    PEER[nvidia_peermem<br/>GPU Operator]
    DP[RDMA 공유 디바이스 플러그인]
    MUL[Multus + NetworkAttachmentDefinition]
  end
  OFED --> DP
  DP -->|rdma/hca_shared_devices_a 광고| KL[kubelet]
  KL --> Pod[파드: GPU + rdma 자원 + 보조 인터페이스 net1]
  MUL --> Pod
  PEER --> Pod

NVIDIA Network Operator (latest v26.4.2, 2026-09-16) enables sub-configurations with a single NicClusterPolicy(README notation is NICClusterPolicy, name is nic-cluster-policy fixed as). The items include the MOFED driver container (ofedDriver), rdmaSharedDevicePlugin, sriovDevicePlugin, secondaryNetwork(Multus, containernetworking plugin, IPoIB CNI), nvIpam, nicConfigurationOperator and others, and the MacvlanNetwork, HostDeviceNetwork, IPoIBNetwork CRD is converted NetworkAttachmentDefinition into.

9. Where RDMA is Needed in Inference (Connecting to Part 6)

Point Communication Rationale
KV Cache Transfer GPU-to-GPU from prefill to decode via NIXL (UCX), not NCCL Dynamo RDMA, vLLM NixlConnector documentation
Expert Parallelism all-to-all per layer. DeepSeek-V3 reduces latency in decode using IB point-to-point and IBGDA DeepSeek-V3, vLLM EP documentation
Cross-node TP Because it is an all-reduce per layer, a high-speed adapter like InfiniBand is desirable (vLLM documentation uses "preferably"). There are also measurements indicating that cross-node TP has poor scalability (see "External Evidence" below) vLLM Parallelism Documentation, Singhania et al. 2026
Large Model Loading Shared storage and GDS. Dynamo warns that downloading models exceeding 70B per pod takes several hours Dynamo installation, GDS documentation

NVIDIA's Dynamo documentation states that moving KVs over TCP results in a TTFT of about 98 seconds, and over RDMA, 200–500 ms. There are conditions mentioned within the document set. The 98-second figure is for Llama-3.1-8B, 8,000 input tokens, on an AWS p5.48xlarge when NIXL on an EFA pod silently falls back to UCX's slow path,and the 200–500 ms value is marked by the same document as a "specification-based expectation" (the actual measured additional KV transfer overhead with EFA under the same conditions was 37 ms). It should not be read as a general comparison between TCP and RDMA (Part 6 "External Evidence").

10. Hands-on Tryout

Since there is no RDMA hardware, this is in the realm of software and TCP. Items 1 and 2 were not run directly, and item 3 (software RoCE) records the results executed directly in "Actual Measurement" below.

  1. iperf3 to check Ethernet limits. Run iperf3 -s and iperf3 -c <서버> -P 4 -t 10 on two servers and compare them with the 1GbE and 2.5GbE theoretical values in the table above. Avoid control plane (etcd) nodes and perform this during off-peak hours. Direct execution result: Across three different node pairs (pod network, 10 seconds), a single stream was 894–902 Mbit/s and 4 streams were 901–912 Mbit/s, both being identical (0 retransmissions), which is about 90–91% of 1GbE wire speed (about 112 MB/s). Moving KVs over this network takes about 8 seconds for 8,000 tokens (about 917 MB for a 1.7B model at 114,688 bytes per token), and about 19 seconds for about 2.1 GB for a 32B model at 256 KiB per token (calculated). Since the same 1.7B model takes about 1 second (8.2k tok/s, Part 21) to process an 8,000-token input on an 8GB-class GPU, In this network, recomputing KVs is faster than transferring them(comparison between measurements in parts 14 and 21, and this calculation).
  2. TCP socket NCCL. On two servers with a single GPU each (e.g., hostA, hostB), MPI=1 built with nccl-tests directly on the hosts. Make sure no other workloads are using the GPUs first. mpirun Check first that no other workloads are using the GPUs.
    mpirun -np 2 -H hostA:1,hostB:1 -x NCCL_IB_DISABLE=1 -x NCCL_SOCKET_IFNAME=<인터페이스> \
      -x NCCL_DEBUG=INFO ./build/all_reduce_perf -b 8 -e 256M -f 2 -g 1
    
    The expectation is that socket transfers will appear in the logs and the busbw for large messages will not exceed the link speed (0.125GB/s for 1GbE), rather than actual measurements. A single node with one GPU has no communication partner, so it is meaningless.
  3. Observing verbs flow with Soft-RoCE (rxe). According to RHEL documentation, Soft-RoCE is a Technology Preview and is scheduled for removal in RHEL 10. Performance is bottlenecked by the CPU so the numbers are meaningless; it is used for checking concepts like device enumeration, port states, and MTU. Since it creates kernel modules and RDMA devices, do this on a disposable VM rather than a production node.
    sudo rdma link add rxe0 type rxe netdev <이더넷 인터페이스>
    rdma link show; ibv_devices; ibv_devinfo -d rxe0 | grep -E "state|active_mtu"
    ib_write_bw -d rxe0 -a          # VM 두 대에 rxe 를 만들고 서버/클라이언트로
    sudo rdma link delete rxe0      # 정리 (man rdma-link 로 확인)
    

Measurement: Reproducing both verbs flow and failures using Soft-RoCE (rxe)

Environment. Both server and client were run within a single disposable virtual machine (4 vCPU, 4GiB, Linux 6.8, virtual NIC MTU 1500) by connecting to its own address. rdma-core, ibverbs-utils, perftest(ib_write_bw, ib_write_lat), iperf3 was installed. The default cloud kernel image did not include the rdma_rxe module, so modprobe could not find the module; installing the additional module package (linux-modules-extra-<커널 버전>) brought it up. Since performance numbers are CPU-bound, this is strictly for verifying concepts.

Verified Items Results
Creating Devices rdma link add rxe0 type rxe netdev <인터페이스> in a single line ACTIVE, LINK_UP. ibv_devinfo has transport: InfiniBand, link_layer: Ethernet, max_mtu 4096, active_mtu 1024
GID table 4 entries, all of them RoCE v2. Link-local IPv6, mapped IPv4 ::ffff:a.b.c.d, and even the address of another interface (overlay network) on the same machine ended up in one device's GID table (the kernel source says it registers the addresses of the device with RDMA and its upper device; the overlay interface flannel.1 is a VXLAN device and shows up in sysfs as an upper device of enp1s0 (upper_flannel.1), which matches this explanation)
MTU The device over the 1500 Ethernet MTU is active_mtu 1024, and the device over the loopback with MTU 65536 is 4096. The write throughputs are 533 MB/s and 1,643 MB/s respectively, showing a 3.1x difference (not a strict comparison due to different paths)
Write Throughput by Size 2B at 0.30 MB/s (message rate of about 0.16 Mpps), 1KiB at 208 MB/s, 64KiB at 536 MB/s, and 2MiB at 529 MB/s, saturating at around 0.53 GB/s. The message rate for small messages is capped at about 0.24 Mpps
TCP over the Same Path iperf3 Single stream at 34.7 Gbit/s (about 4.3 GB/s), 4 streams at 137 Gbit/s. About 8 times faster than rxe write
Write Latency 2B typical value 2.09µs (since it is within the same machine and has no network round-trip, it cannot be compared with hardware values)
Statistical counters rdma statistic show link rxe0/1 include sent_pkts, rcvd_pkts, duplicate_request, out_of_seq_request, rcvd_rnr_err, retry_exceeded_err, completer_retry_err, link_downed , etc. Confirmed that the "Retry Counter" in the table of Section 7 actually exists
Non-existent device name ib_write_bw -d rxe9 → IB device rxe9 not found, Unable to find the Infiniband/RoCE device, exit code 1

The limitations of this test are a single virtual machine, a software implementation, and no GPUs. RDMA between two nodes, the throughput and latency of actual NICs, PFC and ECN, nccl-tests, and GPUDirect RDMA were not measured (unmeasured).

External Evidence: Findings verified through papers and official materials

RoCE congestion control, descriptions of NCCL and GPUDirect, and the performance of software RoCE, which could not be directly measured, were verified using primary sources. For external figures, because equipment and conditions varied, only the consistency of directions and structures was evaluated.

Topic Material and Verified Location Verified Content and Conditions Relationship to This Article
DCQCN Zhu et al., "Congestion Control for Large-Scale RDMA Deployments", SIGCOMM 2015, Sections 1, 2, 6, and 7 Implemented ECN-based end-to-end congestion control in the NIC. In a 40Gbps environment, average latency for 2KB transfers is 25.4µs for TCP and 1.7µs for RDMA reads and writes. Incast degree 10 results in over 6 million PAUSE messages without DCQCN, and about 3,000 with it. Section 7 specifies that throughput drops sharply when the loss rate exceeds 0.1%, and that PFC does not become unnecessary. Supports. Consistent with the description "Congestion control to reduce the side effects of PFC". Corrected "deployed" in our article to "being deployed" from the abstract.
PFC Deadlock and PAUSE Storms Guo et al., "RDMA over Commodity Ethernet at Scale", SIGCOMM 2016, Sections 4.2, 4.3, and 6.2 In the test cluster, deadlock occurred due to the interaction between packet flooding with unknown MAC addresses and PFC, which persisted even after restarting servers. Due to a NIC bug, a single server generated over 2,000 PAUSE frames per second, affecting half of the customer servers. 99th percentile latency was 90µs for RDMA and 700µs for TCP (50/50 mixed traffic). Supports. Provides actual incident evidence for "PFC misconfiguration becomes a network-wide issue".
Fine-Grained Congestion Control Li et al., "HPCC", SIGCOMM 2019 Rate control using in-band telemetry. 99th percentile completion time slowdown for flows under 3KB is 53.9 for DCQCN vs 2.70 for HPCC (Alibaba internal measurement, assuming FPGA NICs and P4 switches). Related. Demonstrates the limitations of ECN-based methods and reliance on PFC.
Common NCCL Issues NCCL 2.32.3 "Networking Troubleshooting", "GPU troubleshooting" ibv_create_qp·ibv_reg_mr failure is an issue with the pinned memory limit (unlimited memlock). Incorrect GID selection causes ibv_modify_qp ... Invalid argument, while versions 2.21 and higher select GIDs dynamically. If ACS and IOMMU are enabled, GPUDirect P2P is bypassed, leading to performance degradation or hangs. Supports. Aligns with the table in Section 7 and this reproduction of memlock for the same solution.
memlock and Permissions Linux kernel drivers/infiniband/core/umem.c(master, as of inspection date) Exceeding RLIMIT_MEMLOCK during user memory registration fails with CAP_IPC_LOCK when -ENOMEM is absent. Supports. Explains why root was not subject to the limit.
MTU NVIDIA MLNX_OFED v5.9 "RoCE" documentation ibv_devinfo example, kernel rxe_param.h mlx5 devices with an Ethernet MTU of 1500 max_mtu 4096, active_mtu 1024. rxe subtracts an 80-byte header and rounds down. Supports. Corrects the MTU description above based on the source code.
GPUDirect RDMA NVIDIA "GPUDirect RDMA" documentation, Sections 1 and 3.4 The NIC and GPU must share the same PCIe root complex, optimal with only PCIe switches; traversing the CPU is slow, and traversing QPI causes performance limits or instability. Performance figures are not provided in the documentation. Supports. Consistent with Section 4 description. Benefit figures can be found in the DCQCN 2016 paper (CPU cycles 20% vs under 3%).
Software RoCE linux-rdma mailing list (2019, maintainer diagnosis), kernel rxe_icrc.c, Red Hat RHEL 9 documentation Reports soft-RoCE at around 2Gbps versus TCP at 20Gbps, with the CPU calculating ICRC (CRC32) for every packet. RHEL documentation notes it as a Technology Preview scheduled for removal in RHEL 10. Partially supports. Aligned with our results (rxe write around 4.2Gbit/s, same-machine TCP around 34Gbit/s). No controlled measurement papers were found within accessible scope.
Cross-Node Parallelization DeepSeek-V3 Technical Report (arXiv 2412.19437) Sections 3.2 and 3.4. Singhania et al., arXiv 2511.09557. vLLM Parallelization Documentation Expert parallelism sends tokens up to a maximum of 4 nodes, transmitting via IB then NVLink; decode uses IB point-to-point and IBGDA (NVLink 160GB/s vs IB 50GB/s). Cross-node TP has poor scalability, and there are cases in heavy-decode batches where PP underperforms TP. vLLM documentation describes high-speed adapters as "desirable". Supports. Consistent with the table in Section 9, while softening "necessary" to "desirable".

Figures from materials that could not be opened due to access restrictions (IEEE Network 2019 paper, Kernel Bugzilla 190951, SoftRDMA) were omitted.

11. Potential Interview Questions

  1. Why use RDMA instead of TCP? Because the NIC directly reads and writes to fixed memory without kernel copies or CPU involvement, latency and CPU overhead are reduced. GPUDirect RDMA further eliminates traversing host memory.
  2. How do you choose between InfiniBand and RoCE v2, and what are the risks of RoCE? IB offers simple configuration with dedicated fabrics and an SM, whereas RoCE uses existing Ethernet and L3 routing but requires aligning PFC, ECN, DSCP, and MTU all together. Misconfigurations manifest as tail latency or failures exclusively between nodes, which are verified via switch counters.
  3. all_reduce_perf If busbw is half of the NIC line rate, where should you check first? ib_write_bw Check whether the NIC itself achieves line rate using nvidia-smi topo -m , inspect the GPU-NIC distance using NCCL_DEBUG=INFO , and verify the selected transport (NET/IB, GDRDMA usage) and rail configuration using
  4. . What is the diagnostic sequence if multi-node training suddenly slows down?ibstat Check link degradation (ibdiagnetRate), port error counters, specific rail imbalance ( ), and in the case of RoCE, PFC and ECN counters, in that order. Adjust NCCL variables only when the hardware is verified to be healthy.
  5. What is required for a Kubernetes pod to use RDMA? MOFED and the device plugin (Network Operator), pod resource requests for rdma/... , nvidia_peermem, memlock limits, Multus secondary interfaces or SR-IOV if needed, and placement that assigns a NIC close to the GPU.

12. Common Misconceptions

References (Actually Accessed)

Checked versions, dates, and unverified items

The verification date is 2026-10-05. NCCL v2.32.3-1 (2026-09-17), perftest 26.07.8 (2026-09-28), Network Operator v26.4.2 (2026-09-16), RDMA Shared Device Plugin v1.5.4 (2026-07-28), Multus v4.3.1 (2026-09-08), and SR-IOV Device Plugin v3.11.0 (2025-12-16) were verified via the GitHub Releases API, while nccl-tests was read from master (commit of 2026-10-02) without a release.

Unverified items: (1) The main text of the DCQCN paper has now been read directly (see "External Evidence" below). (2) The system requirements in the Network Operator README (ConnectX-5, Ubuntu 20.04) appear outdated, and the current support matrix was not verified. (3) How to match and allocate GPU-NIC pairs in Kubernetes. (4) rdma link delete and the expected output of nccl-tests were not executed. (5) MTU negotiation rules are based on third-party runbooks. (6) InfiniBand link-layer flow control and NVLink 6th-generation details were not covered. (7) All three practical exercises in Section 10 remain unexecuted.

Sign in to like

Comments

No comments yet.

Sign in to leave a comment