NVIDIA Network Operator v26.7.0

NVIDIA Spectrum-X NIC Configuration

NVIDIA NIC Configuration Operator in Network Operator 26.7.0 applies Spectrum-X NIC tuning from a Spectrum-X profile — a versioned YAML document published for each Reference Architecture and supplied to the cluster as a labeled ConfigMap. The spectrumXOptimized.version field names that ConfigMap.

This replaces the fixed RA-version enum used in earlier releases. In Network Operator 26.4.0 and earlier, version accepted only a fixed set of built-in RA versions, and the tuning tables shipped inside the operator image. From 26.7.0, the operator carries no built-in profiles: every Spectrum-X deployment must apply a profile ConfigMap first, and NIC tuning can be revised without a new operator release.

For the Network Operator Spectrum-X RA support matrix and validated hardware, operating system, and Kubernetes combinations, see Platform Support.

Spectrum-X configuration applies to ConnectX-7 NIC, ConnectX-8 SuperNIC, ConnectX-9 SuperNIC, and BlueField-3 SuperNIC; Hardware Plane Load Balancing (hwplb) additionally requires ConnectX-8 SuperNIC or ConnectX-9 SuperNIC. Device IDs and the modes each NIC accepts are listed under NIC type constraints.

Note

ConnectX-9 SuperNIC support for Spectrum-X is Tech Preview. The NIC Configuration Operator API accepts ConnectX-9 SuperNIC and applies Spectrum-X settings to it, but ConnectX-9 SuperNIC is not part of Spectrum-X RA 2.3 and is not covered by an RA-validated configuration. Use it for evaluation only.

Configuring ConnectX-9 SuperNIC additionally requires a Spectrum-X profile that carries mlxConfig tuning for device ID 1025. A profile that omits it applies no Spectrum-X parameters to those NICs and reports no error. Contact NVIDIA Support or your NVIDIA CPM for a profile that covers ConnectX-9 SuperNIC. Hardware Multiplane on ConnectX-9 SuperNIC also depends on DOCA xPlane support for that NIC — see Architecture and Components.

ConnectX-9 SuperNIC remains fully supported by Network Operator for general RoCE and InfiniBand workloads — see Platform Support.

Important

Upgrading from Network Operator 26.4.x or earlier is not a drop-in change. A NicConfigurationTemplate that carries version: "RA2.1" no longer resolves to a built-in profile — it now resolves to a ConfigMap named RA2.1, and Spectrum-X configuration will not be applied until a matching profile ConfigMap exists. Apply the profile ConfigMap for your Reference Architecture before or together with the upgrade.

To install the operator and for more information on the CRDs, see NIC Firmware Configuration and Configuration Details.

A Spectrum-X profile holds the NIC tuning for one Reference Architecture: the non-volatile mlxConfig parameters applied per multiplane mode and device ID, the runtimeConfig parameters for RoCE, adaptive routing, congestion control and inter-packet gap, and the congestion-control settings docaCCVersion and useSoftwareCCAlgorithm.

Download the profile published for your Reference Architecture from the NVOnline portal, or contact your NVIDIA CPM. Apply it as-is — the published file already carries the network.nvidia.com/operator.nic-configuration.spectrum-x-profile label and the complete data.profile body:

Copy
Copied!
            

kubectl apply -f spectrum-x-profile-configmap.yaml

The ConfigMap name is the value you reference from spectrumXOptimized.version. Profiles are keyed by name and not by namespace, so use unique profile names across every namespace the operator watches.

For the full profile ConfigMap format, the label rules, and a complete annotated example, see Configuration Details.

Note

version is a free-form name and is not validated against existing ConfigMaps, so a template that references a missing profile is accepted by the API and only fails when it is applied. For that and the other profile failure signatures, see Verify and Troubleshoot.

Note

For Spectrum-X RA 2.1 and later, the DOCA SPC-X CC algorithm package is included in the operator image and does not need to be deployed separately. For RA 2.0 and earlier, the package must be deployed manually using the example below.

Whether the software congestion-control algorithm is used, and which version the operator runs, is declared by the useSoftwareCCAlgorithm and docaCCVersion keys of the Spectrum-X profile rather than configured on the NicConfigurationTemplate.

To enable the DOCA SPC-X CC algorithm on NIC devices, the DOCA SPC-X CC .deb package for ubuntu 22.04 is required. This configuration step will be removed in the future, once the DOCA SPC-X CC algorithm is publicly available. To access the package, contact your NVIDIA CPM. The package should be available in the cluster and then its URL should be provided in the packageUrlSource field of the SpectrumXOperator CR.

Copy
Copied!
            

apiVersion: configuration.net.nvidia.com/v1alpha1 kind: NicFirmwareSource metadata: name: spectrum-x-configuration namespace: nvidia-network-operator spec: # should point to the URL of the DOCA SPC-X CC .deb package for Ubuntu 22.04 docaSpcXCCUrlSource: "https://example.com/doca-spcx-cc_3.1.0105-1_amd64.deb"

Firmware Upgrade

If the firmware on the devices needs to be updated, extend the NicFirmwareSource CR with fields for ConnectX and BlueField firmware. Make sure to use the correct firmware for your devices.

Copy
Copied!
            

apiVersion: configuration.net.nvidia.com/v1alpha1 kind: NicFirmwareSource metadata: name: spectrum-x-configuration namespace: nvidia-network-operator spec: # should point to the URL of the DOCA SPC-X CC .deb package for Ubuntu 22.04 docaSpcXCCUrlSource: "https://example.com/doca-spcx-cc_3.1.0105-1_amd64.deb" # a list of firmware binaries zip archives from the Mellanox website, can point to any URL accessible from the cluster binUrlSources: - https://www.mellanox.com/downloads/firmware/fw-ConnectX8-rel-40_46_3048-900-9X85E-00NX-MC0_Ax-UEFI-14.39.14-FlexBoot-3.8.100.signed.bin.zip # a URL to the BlueField Bundle (BFB) file, can point to any URL accessible from the cluster bfbUrlSource: - https://example.com/bf-fwbundle-3.1.0-77_25.07-prod.bfb

Configure and apply the NicFirmwareTemplate CR:

Copy
Copied!
            

apiVersion: configuration.net.nvidia.com/v1alpha1 kind: NicFirmwareTemplate metadata: name: spectrum-x-configuration namespace: nvidia-network-operator spec: nicSelector: nicType: "a2dc" # BlueField-3 SuperNIC. Can also be "1021" for ConnectX-7, "1023" for ConnectX-8, or "1025" for ConnectX-9 # partNumbers: # - "MCX713106AEHEA_QP1" template: nicFirmwareSourceRef: spectrum-x-configuration updatePolicy: Update

Reference the profile ConfigMap by name from spectrumXOptimized.version. Spectrum-X optimizations require linkType: Ethernet and numVfs: 1.

Copy
Copied!
            

apiVersion: configuration.net.nvidia.com/v1alpha1 kind: NicConfigurationTemplate metadata: name: spectrum-x-configuration namespace: nvidia-network-operator spec: nodeSelector: feature.node.kubernetes.io/network-sriov.capable: "true" nicSelector: nicType: a2dc # BlueField-3 SuperNIC. Use "1023" for ConnectX-8 SuperNIC, or "1025" for ConnectX-9 SuperNIC (tech preview) template: numVfs: 1 linkType: Ethernet spectrumXOptimized: enabled: true version: "spectrum-x-ra2.3-profile" # name of the Spectrum-X profile ConfigMap overlay: "none" # For an L3 EVPN overlay, use "l3"

Multiplane configuration

Multiplane modes let a NIC drive multiple data planes on the same rail. Set multiplaneMode and numberOfPlanes alongside the profile reference.

Note

It is recommended to perform a NIC configuration reset before applying or switching between multiplane configurations to ensure a clean and consistent initial state. See Reset NIC Configuration to Default for details.

Copy
Copied!
            

apiVersion: configuration.net.nvidia.com/v1alpha1 kind: NicConfigurationTemplate metadata: name: spectrum-x-multiplane-configuration namespace: nvidia-network-operator spec: nodeSelector: feature.node.kubernetes.io/network-sriov.capable: "true" nicSelector: nicType: "1023" # ConnectX-8 SuperNIC. Use "1025" for ConnectX-9 SuperNIC (tech preview) template: numVfs: 1 linkType: Ethernet spectrumXOptimized: enabled: true version: "spectrum-x-ra2.3-profile" overlay: "none" multiplaneMode: "hwplb" # Hardware Plane Load Balancing numberOfPlanes: 4

The profile must contain tuning for the multiplane mode and device ID you select. A profile that has no mlxConfig entry for the requested mode leaves those parameters at their device defaults.

Multiplane modes

The following multiplane modes are available:

Mode

Description

Supported NICs

Planes

none Single plane mode (no multiplane). This is the default. BlueField-3 SuperNIC, ConnectX-7 NIC, ConnectX-8 SuperNIC, ConnectX-9 SuperNIC 1
hwplb Hardware Plane Load Balancing. Uses hardware LAG resource allocation and NIC-level plane configuration to distribute packets across planes in the NIC hardware. The planes are hidden from the workload, which sees a single interface per rail. The recommended mode on multiplane platforms. ConnectX-8 SuperNIC, ConnectX-9 SuperNIC 2, 4
swplb Software Plane Load Balancing. The NIC port is split into multiple PFs, each assigned to a separate data plane; the software stack distributes packets across planes. Each plane is exposed to the workload as its own interface. BlueField-3 SuperNIC, ConnectX-8 SuperNIC, ConnectX-9 SuperNIC 2, 4
uniplane Uniplane mode. Single-plane physical topology that uses the Spectrum-X multiplane software stack and IP schema — multiple PFs all connect to the same ToR/plane (rather than separate planes as in swplb / hwplb). Not part of Spectrum-X RA 2.3. The API accepts the value, but it takes effect only if the Spectrum-X profile you apply carries a uniplane section; published profiles do not. For production deployments use none for Single-Plane, or hwplb / swplb for Dual-Plane / Quad-Plane. BlueField-3 SuperNIC, ConnectX-8 SuperNIC, ConnectX-9 SuperNIC 2
Note

On multiplane platforms, hwplb is the mode Spectrum-X RA 2.3 recommends — select swplb only for a software-based multiplane deployment, for example when each plane must be visible to the workload as a separate interface, or on NICs that do not support hwplb. This is a Reference Architecture recommendation, not an API default: the multiplaneMode field itself defaults to none, so multiplane deployments must set it explicitly.

The modes a given deployment can actually use are additionally bounded by the Spectrum-X profile: a mode is configurable only if the profile carries mlxConfig tuning for that mode and device ID.

NIC type constraints

NIC Type

Device ID

Supported Multiplane Modes

ConnectX-7 NIC 1021 none
ConnectX-8 SuperNIC 1023 none, swplb, hwplb, uniplane
ConnectX-9 SuperNIC (tech preview) 1025 none, swplb, hwplb, uniplane
BlueField-3 SuperNIC a2dc none, swplb, uniplane
Warning

The hwplb multiplane mode requires ConnectX-8 SuperNIC (device ID 1023) or ConnectX-9 SuperNIC (device ID 1025). Attempting to configure hwplb on BlueField-3 SuperNIC or ConnectX-7 NIC is rejected by the API validation.

Configure custom interface names

The NicInterfaceNameTemplate CRD allows you to define custom naming patterns for RDMA and network device interfaces on Spectrum-X NICs. This is useful in multiplane and multi-rail deployments where predictable interface naming is required.

The operator deploys udev rules to the host to rename network and RDMA interfaces according to the specified naming template.

The template uses the following placeholders for device name construction:

  • %nic_id%: The index of the NIC in the flattened list of NICs

  • %plane_id%: The index of the plane of the specific NIC

  • %rail_id%: The index of the rail where the given NIC belongs to

Copy
Copied!
            

apiVersion: configuration.net.nvidia.com/v1alpha1 kind: NicInterfaceNameTemplate metadata: name: spectrum-x-interface-names namespace: nvidia-network-operator spec: # Number of PFs per NIC, used to calculate the number of planes per NIC pfsPerNic: 2 # Template for RDMA device names. Placeholders: %nic_id%, %plane_id%, %rail_id% rdmaDevicePrefix: "rdma_%nic_id%_%plane_id%_%rail_id%" # Template for net device names. Placeholders: %nic_id%, %plane_id%, %rail_id% netDevicePrefix: "net_%nic_id%_%plane_id%_%rail_id%" # PCI address to rail mapping. First dimension is rail index, second is NIC PCI addresses in the rail railPciAddresses: - ["0000:1a:00.0", "0000:2a:00.0"] - ["0000:3a:00.0", "0000:4a:00.0"]

The railPciAddresses field defines the PCI address to rail mapping. The first dimension is the rail index and the second dimension is the list of PCI addresses of the NICs in that rail.

Generated udev rules

The operator generates udev rules based on the template and writes them to the host. The rules are written to two separate files.

Example generated udev rules for net devices (/etc/udev/rules.d/10-nic-net-interface-naming.rules):

Copy
Copied!
            

# Auto-generated by nic-configuration-operator # Do not edit manually SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:1a:00.0", NAME="net_0_0_0" SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:1a:00.1", NAME="net_0_1_0" SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:3a:00.0", NAME="net_1_0_1" SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:3a:00.1", NAME="net_1_1_1"

Example generated udev rules for RDMA devices (/etc/udev/rules.d/10-nic-rdma-interface-naming.rules):

Copy
Copied!
            

# Auto-generated by nic-configuration-operator # Do not edit manually ACTION=="add", KERNELS=="0000:1a:00.0", SUBSYSTEM=="infiniband", RUN+="/usr/bin/rdma dev set %k name rdma_0_0_0" ACTION=="add", KERNELS=="0000:1a:00.1", SUBSYSTEM=="infiniband", RUN+="/usr/bin/rdma dev set %k name rdma_0_1_0" ACTION=="add", KERNELS=="0000:3a:00.0", SUBSYSTEM=="infiniband", RUN+="/usr/bin/rdma dev set %k name rdma_1_0_1" ACTION=="add", KERNELS=="0000:3a:00.1", SUBSYSTEM=="infiniband", RUN+="/usr/bin/rdma dev set %k name rdma_1_1_1"

Note

The actual generated names depend on the netDevicePrefix / rdmaDevicePrefix you set on the NicInterfaceNameTemplate — see the Quick-Start walkthroughs for the recommended rail / plane-based naming (for example, net_rail0_plane0).

The following validation rules are enforced by the API:

  • Spectrum-X optimizations can only be enabled when linkType is Ethernet and numVfs is 1.

  • Spectrum-X optimizations can only be enabled for ConnectX-7 NIC (nicType: 1021), ConnectX-8 SuperNIC (nicType: 1023), ConnectX-9 SuperNIC (nicType: 1025), or BlueField-3 SuperNIC (nicType: a2dc).

  • When Spectrum-X optimizations are enabled, roceOptimized must not be enabled (RoCE settings are included in the Spectrum-X configuration).

  • version is required and is not validated against existing ConfigMaps — any name is accepted.

  • When multiplaneMode is none, numberOfPlanes must be 1.

  • When multiplaneMode is not none, numberOfPlanes must not be 1.

  • The hwplb multiplane mode can only be enabled for ConnectX-8 SuperNIC (nicType: 1023) or ConnectX-9 SuperNIC (nicType: 1025).

rawNvConfig may be combined with Spectrum-X optimizations: the raw parameters are merged as overrides on top of the parameters calculated from the Spectrum-X profile. Parameter names must not use index-range syntax such as NAME[0..3] — list each index explicitly.

Previous Spectrum-X Kubernetes Architecture and Components
Next Verify and Troubleshoot Spectrum-X
© Copyright 2025-2026, NVIDIA. Last updated on Sep 1, 2026