Skip to content

RoCE Configuration and Operations on Spectrum-X · Part 5 of 9

Act 5 ”” PFC Configuration and Storm Prevention

Building the model…

PFC alone: nothing slows the senders, so ingress counters hit XOFF and the switch pauses them. No drops, but every pause stalls the whole upstream port.

PFC operates on IEEE 802.3x PAUSE frame mechanics extended to per-priority operation by IEEE 802.1Qbb. When a switch's TC3 egress queue depth crosses the xoff threshold, the switch generates a priority-specific PAUSE frame and sends it to the upstream link partner.

Per-priority enable/disable ”” critical rule: Only TC3 (RoCEv2) should be lossless. Enabling PFC on multiple priorities causes buffer starvation cascades. The correct configuration: PFC on priority 3 only. All other priorities: PFC disabled.

PFC watchdog ”” deadlock detection: The PFC watchdog monitors how long each lossless queue has been continuously paused. Default timer on Cumulus Linux: 200ms. If TC3 remains in a PAUSE state for longer than 200ms, the watchdog fires.

Two watchdog actions:

  • Drop mode (correct for RoCEv2): The watchdog starts dropping frames from the paused queue, breaking the deadlock at the cost of retransmissions.
  • Forward mode: Not recommended for RoCEv2 because it defeats the lossless guarantee.
# Configure PFC watchdog
leaf-01# nv set interface swp1-32 qos pfc watchdog action drop
leaf-01# nv set interface swp1-32 qos pfc watchdog timeout 200

# Verify PFC counters
leaf-01# nv show interface swp1 counters pfc
Interface swp1 PFC Counters:
  Priority 3:
    TX pause frames:       142
    RX pause frames:       0
    Pause duration (ms):   12.4 avg / 38.1 max
    Watchdog fires:        0
  Priority 0-2,4-7:       not enabled

PFC headroom calculation: With a 5m passive DAC cable between DGX H100 and leaf switch:

cable propagation delay:    5m × 5ns/m = 25ns
switch processing delay:    ~300ns (Spectrum-4 cut-through)
total: ~325ns

headroom = 325ns × 400Gbps = 325e-9 × 400e9 = 130,000 bits = ~16 KB
# NIC-side PFC verification (DGX node)
dgx-01:~$ ethtool -S mlx5_0 | grep pfc
  rx_pfc_xon_frames_priority_3:   142
  rx_pfc_xoff_frames_priority_3:  142
  tx_pfc_xon_frames_priority_3:   0
  tx_pfc_xoff_frames_priority_3:  0
ANIMATED SIMULATION
PFC Storm Progression and Watchdog Response
TC3 Queue
5%
— xoff(75%)
— ecn(40%)
Phase 1: Idle
Fabric at rest. TC3 queue empty. No congestion signals.
ECN Marking
OFF
PFC Active
OFF
Watchdog
OFF
Throughput: 100%
Read aloudPage 5