Skip to content

Adaptive routing, SHIELD and hash-based forwarding

S3·E2The call at 02:10, the bridge at 02:40 · Hotel room, customer NOC and the Dell SE on the bridge

S3·E2Analyze~30 minsources checked todayverified against UFM Enterprise 6.24.1 SM default properties; UFM Appliance 1.6.0 CLI; MLNX-OS 3.12.6200 LTS; IBUtils2 2.26.0 and 2.24.0; NVOS 25.02.4002 profile page; NCCL user guide. Research notes fetched 2026-09-07

Builds on: Routing engines and how OpenSM picks a path, QoS: service levels, virtual lanes, SL2VL and VL arbitration

Before you read: what do you already know?

3 quick questions. Wrong answers are fine and expected; trying first makes the lesson stick.

After this lesson you can

  • Decide from a customer's SM parameters and switch profile whether adaptive routing can possibly be active.
  • Name every parameter that must change to turn adaptive routing on at both ends, and say which end each one lives on.
  • Trace `pfrn_sl` through an SL2VL table and show the case where SHIELD traffic is silently dropped on VL15.
  • Distinguish adaptive routing, SHIELD or pFRN, and hash-based forwarding by what each one reacts to.
  • Collect the evidence files that prove the configuration, and state what a back-to-back link cannot show.

Episode 2 — The call at 02:10, the bridge at 02:40

The situation · Hotel room, customer NOC and the Dell SE on the bridge

The night-shift operator calls at 02:10. He has walked every row since midnight - no amber lights, nothing reseated - and has stuck a label reading SLOW ONE on the switch he blames. By 02:40 it is a bridge call from a hotel room: the overnight run is 30 percent slower than the same job on the lab pod, a firmware case is open, and the Dell SE wants to know if NVIDIA is replacing hardware.

Two questions before anyone reboots anything. First: who is the master subnet manager? That can end the call in one line - a subnet manager running via MLNX-OS does not support adaptive routing, fault routing (SHIELD or FRN), congestion control, or SHARP.[2] Second, is AR on at both ends: the switch has it enabled by default on system profile ib-single-switch, and MLNX-OS states the rest plainly - the AR option needs to be enabled in the SM for it to take effect.[2]

AR exists because a static forwarding table is only optimal for the traffic it was computed for. When unexpected traffic patterns cause some paths to be overloaded, AR can automatically move traffic to less congested paths according to the current temporal state of the network.[2] The routing engine decides which exit ports are legal; AR chooses among them at transmission time - which is why ar_mode = 3 is auto mode, adaptive routing determined by the routing engine.[1]

Adaptive routing is a bargain between two devices. Either end silent means off.

Their SM excerpt lands at 03:05. Read it from both ends.

1Adaptive routing needs both ends to agree

NVIDIA describes adaptive routing plainly: when unexpected traffic patterns cause some paths to be overloaded, AR can automatically move traffic to less congested paths according to the current temporal state of the network.[2] NVIDIA’s own SuperPOD reference architecture names it alongside two siblings: InfiniBand provides additional features to optimize performance including adaptive routing (AR), collective communication with SHARP and dynamic network healing with SHIELD.[14]

The operational fact that resolves most tickets is that AR has two ends. On the switch, MLNX-OS says AR support is enabled by default on system profile ib-single-switch, that you disable it with either system profile ib-no-adaptive-routing-single-switch or system profile ib with the no-adaptive-routing parameter, and then adds the sentence to quote back to a customer: the AR option needs to be enabled in the SM for it to take effect.[2] On the SM side, UFM ships routing_engine = ar_updn and ar_mode = 3, where 3 is auto mode in which adaptive routing is determined by the routing engine; 0 disables it, 1 enables local adaptive routing in which switches select the exit port based on local buffer utilisation, and 2 is adaptive routing with notifications and is deprecated.[1]

Before any of that, there is a question that can end the call in one line. If the customer runs the switch-embedded subnet manager, adaptive routing is not merely off - it is not implemented: subnet manager running via MLNX-OS does not support adaptive routing, fault routing (SHIELD or FRN), congestion control, or SHARP.[2] Ask who the master SM is before you look at a single parameter.[2]

a cabling contract, not a switch feature
Rail-optimized fat tree — one slice: 3 nodes × 4 rails, 4 leaf, 2 spineS0spine (root)AR groupS1spine (root)AR groupL0leaf — rail 0AR groupL1leaf — rail 1AR groupL2leaf — rail 2AR groupL3leaf — rail 3AR groupnode n0 — 4 of 8 rails shownr0srcr1r2r3node n1 — 4 of 8 rails shownr0r1r2r3node n2 — 4 of 8 rails shownr0dstr1r2r3
2 SU
Path

1 switch hop · 1 equal-cost path · same rail (rail 0)

L0

One hop is the rail-optimization payoff: same-rail traffic never touches a spine.

Rail-optimized fat tree

  • Every GPU's rail-N port lands on leaf N: "Traffic per rail of the DGX H200 systems is always one hop away from the other 31 nodes in a SU. Traffic between nodes, or between rails, traverses the spine layer."
  • Same rail, different node = 1 switch hop. Different rail = 3 hops through a spine.
  • H200 SuperPOD compute fabric: QM9700 NDR, "Rail-optimized, non-blocking, full fat-tree network with eight NDR400 connections per system".
  • Nothing is enabled on the switch to get this. It is decided by where the technician plugs the cable.

FAE angle. On an eight-rail PowerEdge XE9680 the rail map is the deliverable. Dell's slot priority for NDR400 1P cards is 33, 37, 35, 39, 32, 36, 34, 38, leaving 31 and 40 for the storage NIC or a BlueField-3 — DPUs over 75 W are legal only in 31/40. Check it against ibdev2netdev and each card's numa_node, then validate with ibdiagnet --rail_validation (→ ibdiagnet2.rails).

DGX H200 SuperPOD RA — Network Fabrics

Adaptive routing, SHIELD and pFRN over the same links
  • Every equal-cost path the diagram highlights is what AR chooses between: "when unexpected traffic patterns cause some paths to be overloaded, AR can automatically move traffic to less congested paths."
  • UFM SM defaults: ar_mode = 3 (auto — the routing engine decides), ar_sl_mask = 0xFFFF, ar_transport_mask = 0x000A (bit 1 RC and bit 3 — not UD), enable_ar_by_device_cap = TRUE.
  • SHIELD / fast link fault recovery: shield_mode = 3 (auto — enhanced with ar_updn, ar_ftree, dfp2). pFRN runs between switches on pfrn_sl = 4: "Make sure pfrn_sl is properly mapped in sl2vl qos settings", or that traffic lands on VL15 and disappears.
  • AR needs both ends. On MLNX-OS, "AR support is enabled by default on system profile 'ib-single-switch'… The AR option needs to be enabled in the SM for it to take effect."
  • And the SM has to be capable: "Subnet manager running via MLNX-OS does not support adaptive routing, fault routing (i.e., SHIELD or FRN), congestion control, SHIELD, and SHARP." A switch-embedded SM makes this overlay a lie.
ibdiagnet -r --fast_recovery    # AR validation + SHIELD info
# evidence files: ibdiagnet2.ar  ibdiagnet2.far  ibdiagnet2.rn  ibdiagnet2.rnc2
# SM side: dump_ar = TRUE writes the AR data to file

UFM SM Default Properties

Scalable-unit arithmetic — 2 SU

DGX H200 SuperPOD compute fabric — QM9700 NDR

Sources: opensm(8) · UFM SM defaults · MLNX-OS Subnet Manager · SHARP environment · Quantum-X800 switches · MCA4J80 ACC · ibdiagnet · ibdiagnet dump files · Dell XE9680 technical guide

Adaptive-routing overlay on a rail-optimized fabric. The highlighted equal-cost paths are exactly what AR chooses between; pick a source and destination on different rails to see how many alternatives the spine layer actually offers.

2The SM knob surface, and the two masks that silently exclude traffic

Once AR is genuinely available, four parameters decide how much of the customer’s traffic it touches.

ar_sl_mask defaults to 0xFFFF, a 16-bit bitmask indicating which SLs should be configured for AR; the UFM appliance CLI exposes it as ib sm ar-sl-mask <mask> over the range 0x0000 to 0xffff, and show ib sm ar-sl-mask prints the current value.[1][3] ar_transport_mask defaults to 0x000A, and its description reads bit 0 = UD, bit 1 = RC, bit 2 = UC, bit 3 = DCT, bits 4-7 reserved - so the shipped default sets bits 1 and 3, enabling RC and DCT while leaving UD and UC out.[1] That is a deliberate exclusion worth stating to a customer before they measure with the wrong traffic type.

enable_ar_by_device_cap is TRUE and read-only: enable adaptive routing only to devices that support packet reordering.[1] That is the HCA half of the contract - AR reorders packets by design, so the SM will not arm it towards an adapter that cannot cope. Around those sit enable_ar_group_copy = TRUE, cache_ar_group_id = TRUE and dump_ar = FALSE, the last being the switch to write adaptive routing data to file when you need evidence.[1] For trees that are not balanced there is a small family of their own: ar_tree_asymmetric_flow = 1, ar_tree_asymmetric_flow_threshold = 0 and ar_tree_asymmetric_flow_threshold_limit = 2.[1]

The messages AR and pFRN exchange between switches are protected by their own key family. NVIDIA lists C_Key and N2N_Key as securing node management communication for the IB infrastructure features that propagate status and messages between nodes without directly involving the SM, and says this is used in adaptive routing algorithms and Proactive Fault Routing Notification (pFRN); N2N_Key granularity is per link, port to port.[9] On a hardened fabric, key configuration and AR are therefore the same conversation.

3SHIELD and pFRN: the SL that must be mapped

SHIELD, NVIDIA’s self-healing fabric feature, appears in the SM parameter table as shield_mode, default 3 and read-only, described as advanced routing and fast link fault recovery: 0 disables fast link fault recovery, 1 enables local fast link fault recovery, 2 enables the legacy form, and 3 is auto mode in which the enhanced form is used with ar_updn, ar_ftree and dfp2 and the local form otherwise; changing the default value is not recommended.[1] Note the coupling: the enhanced behaviour is available only under the adaptive engines, so the routing-engine choice made in the previous lesson decides which SHIELD you get.[1]

pFRN, Proactive Fault Routing Notification, is how switches tell each other about a failure. Its parameters are pfrn_sl = 4 with the instruction to make sure pfrn_sl is properly mapped in the SL2VL QoS settings, pfrn_mask_clear_timeout = 180 seconds, pfrn_mask_force_clear_timeout = 720 seconds, and pfrn_over_router_enabled = 2 where 0 ignores, 1 disables and 2 enables.[1]

That instruction is the whole trap. In an OpenSM SL2VL template, VL15 used there means drop this SL.[7] The shipped qos_swe_sl2vl default is 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,7, which maps SL 4 to VL 4 and is fine.[7] But a customer who writes their own eight-class QoS design, or who inherits one, can easily land SL 4 on VL15 - and then pFRN notifications are dropped by the switch with no counter that says so, while shield_mode still reads 3 and every screenshot looks correct.[1][7] The second half of the same trap is max_op_vls = 2 in UFM: an eight-lane design collapses onto two lanes, so the VL you carefully assigned may not exist operationally at all.[1]

max_op_vls = 21 SL dropped on VL15
SL (packet)qos_ca_sl2vlVL lane (own buffers + flow control)SL 00SL 11SL 22SL 33SL 415SL 55SL 66SL 77SL 88SL 99SL 1010SL 1111SL 1212SL 1313SL 1414SL 157VL0SL 0,2,6,8,10,12,14 · hi 4 / lo 0VL1SL 1,3,5,7,9,11,13,15 · hi 0 / lo 4VL2not operationalVL3not operationalVL4not operationalVL5not operationalVL6not operationalVL7not operationalVL8not operationalVL9not operationalVL10not operationalVL11not operationalVL12not operationalVL13not operationalVL14not operationalVL15SMPs only — mapping here = dropmax_op_vls = 2
Set the target VL for SL 4:
SL2VL · IBA 7.6.6

SL 4VL15 — dropped

silent dropAR enabled for this SLpfrn_sl

VL15 is management-only, so an SL mapped there is thrown away with no counter and no error. qos_*_sl2vl is "a list of VLs corresponding to SLs 0-15 (Note that VL15 used here means drop this SL)". Catch it with ibdiagnet -r --r_opt check_sl.

SL 4 is UFM’s pfrn_sl — the SL switches use to signal pFRN (SHIELD) to each other.

Read it back on the box: smpquery SL2VL <lid> <port> and smpquery VLArb <lid> <port>; fabric-wide it is ibdiagnet2.slvl. Watch it move with perfquery -X <lid> 1 / -S under ib_write_bw -S 4.

Adaptive routing must use the same tables

16 of 16 SLs are in the AR mask (default 0xFFFF = all). ar_sl_mask default 0xFFFF — "16-bit bitmask indicating which SLs should be configured for AR".

pfrn_sl 4VL15: SHIELD/pFRN notifications are silently dropped and fast link-fault recovery never fires. pfrn_sl = 4 — "SL for pFRN communication between switches. Make sure pfrn_sl is properly mapped in sl2vl qos settings."

ar_mode default 3 = "Auto mode in which adaptive routing is determined by the routing engine." shield_mode default 3 (auto). The switch-embedded SM implements none of AR, SHIELD/FRN, congestion control or SHARP.

VL arbitration tables — IBA 7.6.9, weights in 64-byte credits
VLhighlowlow bytes/roundSLs here
VL00SL0 SL2 SL6 SL8 SL10 SL12 SL14
VL1256SL1 SL3 SL5 SL7 SL9 SL11 SL13 SL15
VL2256
VL3256
VL4256
VL5256
VL6256
VL7256
VL8256
VL9256
VL10256
VL11256
VL12256
VL13256
VL14256

high_limit: "the number of bytes that can be sent is high_limit times 4K bytes. A high_limit value of 255 indicates that the byte limit is unbounded… A value of 0 indicates that only a single packet from the high-priority table may be sent before an opportunity is given to the low-priority table."

Your options file right now
qos_ca_high_limit 0
qos_ca_vlarb_high 0:4,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0
qos_ca_vlarb_low  0:0,1:4,2:4,3:4,4:4,5:4,6:4,7:4,8:4,9:4,10:4,11:4,12:4,13:4,14:4
qos_ca_sl2vl      0,1,2,3,15,5,6,7,8,9,10,11,12,13,14,7
max_op_vls        2
OpenSM defaults, verbatim
qos_ca_max_vls 15
qos_ca_high_limit 0
qos_ca_vlarb_high 0:4,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0
qos_ca_vlarb_low  0:0,1:4,2:4,3:4,4:4,5:4,6:4,7:4,8:4,9:4,10:4,11:4,12:4,13:4,14:4
qos_ca_sl2vl      0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,7

Four parameter sets configure these tables: qos_ca_* (CAs), qos_rtr_* (routers), qos_sw0_* (switch port 0), qos_swe_* (switch external ports). -Q / --qos "enables QoS setup. It is disabled by default." UFM ships qos = TRUE.

The qos-setup section of the QoS policy file "is not supported in OpenSM currently - the section is parsed and ignored. SL2VL and VLArb tables should be configured in the OpenSM options file".

Prove it on the fabric
  • smpquery SL2VL <lid> <port> and smpquery VLArb <lid> <port> read the programmed tables straight from the SMA.
  • saquery exposes SL2VLTableRecord (SL2VL) and VLArbitrationTableRecord (VLAR).
  • ibdiagnet --r_opt check_sl validates "all SL2VL mappings don’t route to VL15".
  • ibdiagnet2.slvl holds the SL/VL tables of the fabric switches; ibdiagnet --qos "Displays qos config sl".
  • perfquery -X/--xmtsl and -S/--rcvsl read PortXmitDataSL / PortRcvDataSL per-SL counters.
  • UFM ships max_op_vls = 2 (RW). The UFM table warns "Note, SM will flap all fabric" when it changes.

FAE angle. Check in this order: max_op_vls, then qos_*_sl2vl, then the VLArb weights. Raising max_op_vls flaps the whole fabric — it is a maintenance-window change, not a live tune. Then prove it: ibdiagnet --qos, ibdiagnet -r --r_opt check_sl, ibdiagnet2.slvl.

QoS Management in OpenSM · UFM SM defaults · ibdiagnet routing validation · RFC 4392

A broken mapping on purpose: SL 4 is pointed at VL15. Read what the SL 4 row reports, then set it back to VL 4 and watch the verdict change. Leave max_op_vls at 2 while you do it - that is the UFM default and it collapses the design a second time.

4Hash-based forwarding is a third mechanism, not a synonym

Adaptive routing reacts to congestion. SHIELD and pFRN react to failure. Hash-based forwarding reacts to neither - it spreads flows deterministically across the members of an AR group by hashing header fields, which is why it appears in the same parameter block and means something different.

The knobs are hbf_sl_mask = 0xFFFF, hbf_hash_type = 0 where 0 is CRC and 1 is XOR, hbf_seed_typ = 0 where 0 is configurable and 1 is random, and hbf_seed = 0xFFFFFFFF, where that value stands for taking the 32 LSB of the node GUID as the HBF hash seed.[1] The field selection is hbf_hash_fields = 0x0000000040F00C0F, whose documented bits are 1 DLID, 2 SL, 3 VL, 4 LRH LNH, 10 SGID, 11 DGID, 20 BTH destination QP, 21 DETH source QP, 22 DCETH V1 source QP, 23 DCETH V1 ISID and 30 input port, with the note that changing the value is not recommended.[1] Weighted HBF adds hbf_weights, default auto, which configures the ratio between three subgroups of the adaptive routing group as a tuple of three values.[1]

Two neighbouring features are easy to promise by accident. Congestion control is not on: upstream OpenSM marks --congestion_control as experimental and disabled by default, and UFM ships mlnx_congestion_control = 0, meaning ignore.[11][1] And the UFM SDN documentation page for adaptive routing does not document the setup inline at all - it points readers to a community how-to, which is a useful thing to know before you promise a customer a manual page.[10]

On the switch side of a newer platform, the AR resource pool is a system profile setting in NVOS: nv action change system profile adaptive-routing-groups 2048, and the profile change warning is explicit - the operation will reset the system configuration and initiate a reboot.[8] The valid range is where the sources disagree: the profile page’s own example uses 2048 while a search summary claims 128 to 1792 in multiples of 128, so this course does not quote a range. Confirm it against the exact NVOS build in front of you before you put a number in a design document.[8]

5Proving it, and what a two-node lab cannot show

Evidence, in the order a customer can actually produce it. ibdiagnet -r provides a report of the fabric qualities and validates adaptive routing configuration against up-down min-hop tables; --fast_recovery displays Fast Recovery information, which is the SHIELD and FRN family.[6][4] The files to ask for are ibdiagnet2.ar for adaptive routing tables, ibdiagnet2.far for AR with SHIELD settings, ibdiagnet2.far_flid for non-local FLIDs only, ibdiagnet2.rn for SHIELD configuration tables and ibdiagnet2.rnc2 for SHIELD, SHIELDv2 and HBF counters.[5] Remember that ibdiagnet2.ar is one of the files disabled by default and needs --enable_output.[5] From the SM side, dump_ar = TRUE writes the adaptive routing data to file.[1]

ibdiagnet -r --fast_recovery --enable_output default,ar
ibdiagnet -r --r_opt static_ca2ca     # static CA-to-CA checks even with AR on
ibdiagnet -r --r_opt check_sl         # no SL2VL mapping routes to VL15

The --r_opt sub-options matter here for two different reasons: static_ca2ca forces static CA-to-CA checks even with AR on, and check_sl validates that all SL2VL mappings do not route to VL15 - the direct machine check for the pFRN trap in segment 3.[6]

Reading a customer config excerpt

A customer sends two artefacts. From the switch, show system profile reports ib-single-switch. From the SM, an excerpt:

routing_engine ar_updn
ar_mode 3
ar_sl_mask 0x0001
ar_transport_mask 0x000A
shield_mode 3
pfrn_sl 4
qos_swe_sl2vl 0,1,2,3,15,5,6,7,8,9,10,11,12,13,14,7
max_op_vls 2

The verdicts, each with its rule:

  1. Switch side is correct: AR is enabled by default on system profile ib-single-switch.[2]
  2. SM side is armed: ar_mode 3 is auto mode where adaptive routing is determined by the routing engine, and ar_updn is an adaptive engine.[1]
  3. ar_sl_mask 0x0001 is the first defect. Only SL 0 is configured for adaptive routing. If the job runs on any other SL, AR does nothing for it. The default is 0xFFFF.[1]
  4. The SL2VL line is the second defect. SL 4 maps to VL15, and VL15 in an SL2VL template means drop this SL - so pFRN, which uses pfrn_sl = 4, is being dropped while shield_mode still reads 3.[7][1]
  5. max_op_vls 2 is the third. Whatever the SL2VL table says, only two operational VLs exist, so an eight-class design was never real. Changing it flaps the fabric, so it is a maintenance-window change.[1]
  6. UD traffic is out of scope by design under ar_transport_mask 0x000A; state it rather than treating it as a bug.[1]

What must change: ar_sl_mask to cover the job’s SLs; qos_swe_sl2vl so SL 4 lands on a real VL; a decision on max_op_vls with its fabric flap. Proof afterwards: ibdiagnet -r --fast_recovery plus --r_opt check_sl, then diff ibdiagnet2.ar before and after.[4][6][5]

What the masks were doing

How it ended

By 04:10 the masks are the whole story. ar_sl_mask was set to 0x0001 against a default of 0xFFFF, so only SL 0 was ever adaptive and the job’s traffic was not.[1] Their hand-written SL2VL table pointed SL 4 - the pfrn_sl default - at VL15, which in an OpenSM SL2VL template means drop this SL, so SHIELD read enabled and was mute.[1][7] Both fixes go into the maintenance window, with ibdiagnet -r --fast_recovery and --r_opt check_sl captured before and after.[4][6]

What you say on the call: close the firmware case. Two bitmasks were deciding which of your traffic adaptive routing was allowed to touch.

At 07:15 procurement forwards the draft quote: one server struck out, a note in the margin - the switch can run this, right?

Lab

Goal: read what the Dell-lab adapter reports about adaptive routing, and write the sentence that explains why the demonstration stops there.

Pre-flight inventory (read-only). ibstat for device, port state and rate; ibv_devinfo for the device list; ibstatus for the rate string; sminfo for the master SM if one exists. Save all four with today’s date.

  1. ibv_devinfo -v | less - expected: the full device attributes for the local HCA, including port capabilities. Record the device name in mlx5_N form; every later command uses it. If the command is missing, the RDMA user-space tools are not installed; that is a package problem, not a fabric one.
  2. ibv_devinfo -v | grep -iE 'link_layer|max_msg|port_cap|active_speed|active_width' - expected: link_layer: InfiniBand on a card in IB mode. If it says Ethernet, this port is not on an IB fabric and nothing in this lesson applies to it.
  3. smpquery MEPI <lid> <port> for the local port, where MEPI is the MlnxExtPortInfo attribute. Expected: the vendor extended port information block. If the fabric has no SM and the port is Initializing, this query may fail - record the failure rather than working around it.
  4. Write the customer sentence, in your own words, and keep it: adaptive routing is a fabric-side feature that chooses between alternative paths, so a back-to-back link between two HCAs cannot demonstrate it; the local adapter can only show that it supports the capability.
  5. Record what you would need to make a real demonstration: at least two switches with alternative paths, a capable SM (UFM or a host SM), the ib-single-switch profile on the switches, and ar_mode, ar_sl_mask and ar_transport_mask covering the traffic you intend to generate.[2][1]
  6. Confirm nothing changed: re-run the four pre-flight commands and diff against your saved files. Expected: identical output. This lab is read-only; there is nothing to roll back.
  7. Optional, only in a customer or NVIDIA lab with UFM and at least two Quantum switches, and with written permission for the change window: capture ibdiagnet -r --fast_recovery --enable_output default,ar before the change, enable AR in the SM, capture again, and diff ibdiagnet2.ar. Expected: a difference in the AR tables and no new errors in the routing report. Rollback: restore the previous SM parameter values and re-capture; the diff should return to the before state.[4][5]

Retrieval check

10 questions from memory. Answer before looking anything up; misses become flashcards.

Explain it to a Dell SE

Explain to a Dell SE, in five sentences, why a customer can have adaptive routing configured on every switch and still have none of it running, and what two pieces of evidence you would ask for.

14 flashcards for this lesson — 0 in deck. Spaced review lives at /review.

Sources

Facts in this lesson were checked against UFM Enterprise 6.24.1 SM default properties; UFM Appliance 1.6.0 CLI; MLNX-OS 3.12.6200 LTS; IBUtils2 2.26.0 and 2.24.0; NVOS 25.02.4002 profile page; NCCL user guide. Research notes fetched 2026-09-07. Dates are when each page was fetched.

  1. UFM Enterprise 6.24.1 User Manual: UFM Subnet Manager Default Properties · fetched 2026-09-07
  2. Subnet Manager | NVIDIA MLNX-OS User Manual v3.12.6200 LTS · fetched 2026-09-07
  3. UFM Enterprise Appliance Software 1.6.0: InfiniBand Commands · fetched 2026-09-07
  4. ibdiagnet Basic Commands | IBUtils2 · fetched 2026-09-07
  5. ibdiagnet Dump Files | IBUtils2 · fetched 2026-09-07
  6. Routing Validation | IBUtils2 2.26.0 · fetched 2026-09-07
  7. QoS Management in OpenSM · fetched 2026-09-07
  8. Profile | NVOS User Manual for InfiniBand Switches v25.02.4002 · fetched 2026-09-07
  9. NVIDIA InfiniBand: Security Overview and Guidelines - Security in InfiniBand · fetched 2026-09-07
  10. Adaptive Routing | UFM-SDN Appliance User Manual v4.18.14 · fetched 2026-09-07
  11. opensm(8) man page source, linux-rdma/opensm master · fetched 2026-09-07
  12. NCCL Environment Variables - NCCL user guide · fetched 2026-09-07
  13. NVIDIA-Certified Professional: AI Networking (NCP-AIN) certification page · fetched 2026-09-07
  14. DGX SuperPOD RA featuring DGX H200: Key Components · fetched 2026-09-07

The same idea elsewhere

Other lessons that cover this ground, sometimes from another course's angle.