Logo slack_icon Join Slack
NVIDIA NMX-C (NVLink) Integration Plugin for Netris Controller — Netris Documentation

Get Started

  • Introduction to Netris
    • What is Netris
    • What Netris does
    • Who Netris is for
    • How an AI network differs from a traditional network
    • What to read next
  • Definitions
    • Access and roles
    • Fabric roles
    • Network constructs
    • Services
    • AI-specific
    • Infrastructure and operations
  • Netris Architecture
    • Core components (always present)
    • AI components (additive, when a GPU cluster is present)
    • Netris Controller
    • Netris Switch Agent
    • Netris SoftGate
    • Management Network Architecture
    • Security Design Principles
    • Shared Responsibility
    • What to read next

Try & Learn Netris

  • Lab Scenario: GPU-as-a-Service network with NVIDIA Spectrum-X architecture
    • Initialize the Netris controller
    • Start a simulation
    • Monitoring Dashboard
    • Topology
    • SSH to Switches
    • SSH to GPU servers
    • NHN (Netris host networking plugin)
    • Server Cluster Template
    • Server Cluster
    • Checking the connectivity
    • Cleanup the Controller
  • Learn Netris Operations with Kubernetes
    • Intro
    • Install Netris Operator
    • Deploy an Application with an On-Demand Netris Load Balancer
    • Using Netris Custom Resources
      • Introduction to Netris Custom Resources
      • L4LB Custom Resource
      • Importing Existing Resources from Netris Controller to Kubernetes
      • Reclaim Policy

Reference

  • Netris Supported Functionality & Platforms Matrix
    • Switch Fabric Management Functions
    • Host Networking
    • Monitoring & Telemetry
    • External Routing Functions
    • Cloud Networking Functions & Constructs
    • Overlay Network Functions
    • AI Specific Functions
    • Compute Platform Integrations
    • Security
    • Netris Controller Administration
    • Management Interfaces
  • Netris and NOS versions compatibility matrix
  • Hardware Requirements
    • Netris Controller
    • Netris SoftGate HS (Multi-VPC version)
  • Supported Switch Hardware
    • Nvidia
    • Dell
    • EdgeCore
    • Arista

Installation

  • Controller Installation
    • Installing HA Netris Controller in Air-Gapped Environments
      • Why Air-Gapped Installation?
      • Why a High Availability (HA) Cluster?
      • Prerequisites
      • Obtain the Installation File
      • Steps to Install
        • 1. Preparing Each Node
        • 2. Install K3s on All Nodes
        • 3. Import Necessary Container Images
        • 4. Configure kube-vip for KubeAPI High Availability
        • 5. Add Helm Chart Packages to K3s
        • 6. Verify and Scale Core K3s Components
        • 7. Deploy Kube-VIP Cloud Controller
        • 8. Install Traefik Proxy
        • 9. Deploy North-South controller VIP (optional)
        • 10. Deploy the Netris Controller
        • 11. (Optional) Enable SSL with cert-manager
        • 13. Set Up the Local Netris Repository
        • 13. Validate Your Deployment
      • After Installation
      • How to consume local repository
    • Upgrading HA Netris Controller in Air-Gapped Environments
      • Obtain the Upgrade File
      • 1. Preparing Each Node
        • 1.1 Transfer the File to the Servers
        • 1.2 Extract the Tarball
        • 1.3 Navigate to the Installation Directory
      • 2. Steps to Upgrade Controller
        • 2.1 Import Necessary Container Images
        • 2.2 Add Helm Chart Packages Upgrades to K3s
        • 2.3 Database backup
        • 2.4 Upgrade Netris Controller
      • 3. Steps to Upgrade the Local Netris Repository
    • Maintenance Procedures
      • Node Maintenance Best Practices
        • Individual Node Maintenance (Recommended Approach)
        • Full Cluster Maintenance (When All Nodes Need Simultaneous Maintenance)
      • Verifying MariaDB Cluster Health
      • Maintenance Best Practices
    • MariaDB automatic backups: locate, verify, and restore
      • Locate the backup directory on each controller node
      • Copy the backup file to your home directory
      • Verify the backup file integrity
      • Verify MariaDB cluster readiness before restore
      • Copy the backup file into a MariaDB pod
      • Restore the backup
      • Take a manual backup
      • Summary
    • Helm Chart Installation
      • Requirements
      • Get Repo Info
      • Installing the Chart
      • Uninstalling the Chart
      • Chart Configuration
    • Zero Touch Provisioning (ZTP)
      • Overview
      • Prerequisites
        • 1. HA Controller with North-South VIP
        • 2. Configure Netris Local Repository
        • 3. Upload NOS images to the local repo
        • 4. Controller Management Address IP in Controller Settings
        • 5. IPAM Subnets in the Management VPC
        • 6. V-Net with DHCP Relay
        • 7. Inventory Profile Configuration
        • 8. Switch MAC Address in Inventory
        • 9. Configure Static Routes on the Controller Nodes
        • 10. Deploy the Netris ZTP DHCP Server
        • 11. Verify ZTP Readiness
      • How ZTP works (Process Summary)
      • Troubleshooting
  • Network Switch Initial Setup
    • Nvidia Cumulus v5.9+ Switch Initial Setup
    • Nvidia Cumulus v5 Switch Initial Setup
    • Nvidia Cumulus v3.7 Switch Initial Setup
    • EdgeCore SONiC Switch Initial Setup
    • Dell SONiC Switch Initial Setup
    • Ubuntu SwitchDev Switch Initial Setup
  • SoftGate HS
    • Overview
      • Services Provided by SoftGate
      • What SoftGate does not do
      • Hardware Requirements
    • Performance
    • Architecture Overview
      • SoftGate physical connectivity
      • SoftGate logical connectivity
      • SoftGate node Control Plane
      • SoftGate node Data Plane
      • SoftGate Roles and Flavors
    • Installation and Initial Deployment
      • Prerequisites
      • Installation Guide
    • Upstream/Border Routers (EBGP)
      • Configuring upstream BGP
      • BGP route exchange between SoftGates, upstream routers, and downstream switches
    • High Availability and Load Distribution
      • Netris VPC originated traffic routing
      • Internet originated traffic routing
      • Failover behavior
    • Observability and Operations
  • Netris Host Networking
    • Overview
    • How It Works
    • Before You Begin
      • System Requirements
      • Dependencies
      • Recommended NVIDIA Component Versions
        • Spectrum-X v2.1.2
      • Permissions
    • Installation Overview
    • Installation
    • Configuration
      • 1. Review the Configuration File
      • 2. Configure BlueField3/ConnectX7/ConnectX8 NICs
      • 3. Verify BlueField3/ConnectX7/ConnectX8 NICs Parameters
      • 4. Start the NHN daemon
    • Operating the NHN plugin
      • Starting NHN
      • Monitoring NHN
      • Stopping NHN
    • Using the bf3-config
      • Command-Line Options
      • Examples
    • Using the Verifier
      • Command-Line Options
      • Examples
    • Network Configuration Formats
      • Network Manager Auto-Detection
      • Netplan (systemd-networkd)
      • Ifupdown (Ubuntu interfaces)

Fabric Management

  • Netris Site
  • VPC
    • Overview
    • How a VPC’s VRF is placed on the fabric
    • Adding a new VPC
    • VPC child objects
    • System VPC and Default VPC
      • What the Default VPC is for
      • What the System VPC is for
    • Historical note: why System VPC and Default VPC are the same VPC today
  • Inventory
    • Adding Switches
    • Adding SoftGates
    • Adding Servers
    • Adding DPUs
  • Topology Manager
    • Adding Links
  • Inventory Profiles
    • SNMPv2 credentials
    • NetQ Settings
    • Fabric Settings
    • GPU Cluster Specific Settings
    • Custom Rules
    • ZTP Settings
  • IP Address Management (IPAM)
    • Allocations and Subnets
    • Subnet purpose and service dependencies
    • Add an Allocation
    • Add a Subnet
  • BGP
    • BGP Overview
    • Basic BGP
    • Advanced BGP
    • BGP Objects
      • IPv4 Prefix
      • IPv6 Prefix
      • Community
    • BGP route-maps
    • eBGP Importing Non-Default Routes into a VPC
      • How to Import Non-Default Prefixes
  • Switch Ports
  • Link Aggregation (LAG)
    • Automatic LAG with EVPN Multi-homing
    • Custom LAG
  • Maintenance Mode
    • Overview
    • Maintenance Mode for Softgate - What’s happening behind the scenes?
    • Maintenance Mode for Switch - What’s happening behind the scenes?
  • Static Routing

Services

  • V-Net
    • Introduction
    • L2VPN V-Nets
      • DHCP and DHCP Relay
        • DHCP Option Sets
        • Netris DHCP
        • DHCP Relay
      • Link Aggregation and Multihoming
        • Ethernet VPN Multi-Homing (EVPN-MH)
        • MC-LAG
      • V-Net Fields explained
      • Advanced V-Net Fields explained
      • Multisite V-Nets
      • Link Aggregation and Multihoming
      • DHCP
      • Labels
    • L3VPN
      • Creating an L3VPN V-Net
      • Rules and limits
    • Verification Tools
      • UI Tools
  • Server Cluster
    • Introduction
    • Server Cluster Template
      • Server Cluster Template Examples:
        • Ethernet-only Fabric Example
        • Infiniband Fabric Example
        • NVLink (NVL72 or NVL144) Fabric Example
        • IPv6 Example
      • Template Fields Explained:
      • Adding a Server Cluster Template
      • Advanced Uses
        • Non-overlapping subnets
        • Specify gateway
    • Creating Server Cluster
      • Adding a Server Cluster
      • Shared Endpoints
        • Shared and dedicated endpoints across fabrics
        • Untagged VLAN on Shared Endpoints
      • Server Cluster Fields Explained:
  • NAT
    • Enabling NAT
    • Defining NAT rules
  • L4 Load Balancer (L4LB)
    • Enabling L4LB service
    • Consuming L4LB service
  • VPC Peering
    • Peering a BGP-only VPC
  • VPC Connect
    • Overview
  • Access Control Lists (ACL)
    • Where ACL Entries Are Installed
    • ACL Default Policy
    • ACL Entries / Rules
      • Description of ACL entry fields.
    • Checking for overlapping rules
    • ACL Processing Order

Netris Integrations

  • NVIDIA UFM (InfiniBand) Integration Plugin for Netris Controller
    • Overview
      • Key Benefits
    • Architecture
    • Prerequisites
    • UFM Configuration Requirements
    • Installation
      • Multiple UFM Instances
    • Configuration Parameters
      • Netris Controller Configuration
      • NVIDIA UFM Configuration
      • Agent Configuration
    • Usage Guide
      • 1. Server Configuration in Netris
      • 2. Create a Server Cluster Template
      • 3. Create Server Clusters
      • 3. Verification
      • 4. Monitoring Integration Status
    • Functional Workflow
      • PKey membership: dedicated and shared
    • InfiniBand Security (Recommended)
      • What is MKey Protection?
      • Impact on Netris Integration
      • Configuration Steps
        • 1. Set the MKey Value
        • 2. Enable MKey Protection Level
        • 3. Enable VSKey (Vendor Specific Key)
        • 4. Restart UFM Service
        • 5. Verification
    • Monitoring and Troubleshooting
      • Viewing Logs
      • Common Issues and Solutions
        • Connection Issues to Netris Controller or UFM
        • PKey Assignment Issues
        • SHARP Reservation Issues
        • Synchronization Delays
    • Version Compatibility
    • Getting Started Guide
      • Quick Setup Example
    • Additional Resources
  • NVIDIA NMX-C (NVLink) Integration Plugin for Netris Controller
    • Overview
      • Key Benefits
    • Architecture
      • High-Level Workflow
    • Version Compatibility
    • Prerequisites
    • Netris NVLink Plugin Installation
      • Installing the Netris NVLink plugin
        • Step 1: Configuring the NMX-C plugin credentials
        • Step 2: Configuring NMX Controller connection
        • Step 3: Applying the K8S deployment
      • Loading GPU Inventory
        • Step 1: Install the nvlink-loader
        • Step 2: Load the GPU inventory into the Netris Controller
        • Step 3: Verify the imported GPU inventory
    • Using the Netris NVLink plugin
    • Verification
    • Maintenance and Deprovisioning
    • Additional Resources
  • Kubernetes Integration
    • Install Netris Operator
      • Helm Chart Method
      • Regular Manifest Method
    • Using Type ‘LoadBalancer’
    • Using Netris Custom Resources
      • Introduction to Netris Custom Resources
      • L4LB Custom Resource
      • V-Net Custom Resource
      • BGP Custom Resource
      • Importing existing resources from Netris Controller to Kubernetes
      • Reclaim Policy
    • Calico CNI Integration
      • Disabling Netris-Calico Integration
  • Netris-CloudStack Integration
    • High-Level Concept of Integration
      • How It Works
      • Challenges Addressed
      • Benefits
      • Use Cases
    • Compute and Network Architecture
      • Diagram Overview
      • Network Flow
    • Prerequisites
      • Step-by-Step Configuration Instructions for the Netris Controller
      • IPAM Setup
        • Create an Allocation
        • Create Subnets
      • Inventory Setup
        • Adding Servers
        • Creating Servers’ Links
        • Optimize BGP Overlay for Hypervisor
        • Adding Subnets for CloudStack Cluster
        • Enabling Internet Connectivity for ACS Servers
        • Enabling Access to CloudStack Management GUI
        • Creating CloudStack Networks
    • Server Configuration and Software Installation
      • Configuring Network on CloudStack Management Server (Server 1)
        • Understanding the Network Layout
        • Netplan Configuration
      • Install Netris-CloudStack Agent on Hypervisor Servers
        • Bringing Up NICs Before Installation
        • Pre-Installation Steps (For Deployments Without OOB)
        • Key Functions of the Netris-CloudStack Agent
        • Installation Steps
        • Example Successful Output of One-Liner Script
        • Verification Steps
        • Checking Network Connectivity
        • Finalizing the Network Setup
        • Keeping the Temporary OOB VNet for Emergency Access
        • Managing Additional NICs on the Server
      • Install CloudStack Management Service
        • Installation Steps
    • Configuring CloudStack for Netris Integration
      • Enabling the Netris Plugin in CloudStack
      • Initializing CloudStack Setup
        • Steps to Initialize CloudStack
    • Using CloudStack with Netris Isolation Method
      • Creating a VPC
      • Creating a Network Tier
      • Port Forwarding
        • Seamless Integration Between CloudStack and Netris
        • Step-by-Step Process for Configuring Port Forwarding in CloudStack with Netris
        • Key Notes:
      • Configuring Static NAT in CloudStack
        • How Static NAT Works with CloudStack and Netris
        • Steps to Configure Static NAT:
        • How CloudStack and Netris Work Together
        • Final Notes
  • Terraform: Netris provider
    • Install Terraform
    • Create a directory for Terraform files
    • Configure a provider
    • Prepare an infrastructure plan
    • Create resources
    • Delete resources
  • EVPN on Host
    • Overview
      • Supported Operating Systems
    • Use Cases
      • Managed Kubernetes
      • Other Uses
    • How It Works
      • Bare Metal GPU Nodes
      • Shared Nodes
      • Underlay Configuration
      • Packet Flow
      • Management Plane
    • Prerequisites
      • 1. Management V-Net
      • 2. Server Objects
      • 3. Server Networking Configuration
      • 4. Netris Controller
    • Installation
      • Install the EVPN-on-Host agent
      • Enable Underlay
      • Verification
    • Provisioning Tenants
      • Verification
  • BlueField-3 DPU Support in Netris
    • Overview
    • What Is a DPU
    • Prerequisites and Assumptions
    • Use Cases
    • Configuring a Server with a DPU
    • VF Interface Naming
    • Connecting DPU VFs to a VNet
    • Monitoring

Monitoring & Observability

  • Graph Boards
    • Graph Boards
    • API Logs
    • Dashboard
  • Topology & Wiring Validation
    • Switch-to-switch and Switch-to-SoftGate
    • Switch-to-Server
  • NVIDIA NetQ Integration
    • Topology Blueprint Activation
  • Netris Healthchecks
    • RX/TX drops and errors threshold calculation method
  • Looking Glass

Tutorials

  • Getting Started with Switch-Fabric Manager & VPC

Miscellaneous

  • Accounts
    • Users
    • Tenants
      • Admin Tenant vs Guest Tenant
    • Permission Groups
    • User Roles
  • Custom NVUE Configuration Snippets
  • Custom Arista Configuration Snippets
  • Labels
    • How labels work
    • Rules and limits
    • When to use labels

Release Notes

  • Release Notes
    • Netris 4.14.0 Release Notes (Jul/31/2026)
      • What’s new in Netris 4.14.0?
      • Features
      • Enhancements
      • Bug fixes
      • Security fixes
      • References
    • Netris 4.13.0 Release Notes (Jul/15/2026)
      • What’s new in Netris 4.13.0?
      • Features
      • Enhancements
      • Bug fixes
      • Security fixes
      • References
    • Netris 4.12.0 Release Notes (Jul/2/2026)
      • What’s new in Netris 4.12.0?
      • Features
      • Enhancements
      • Bug fixes
      • Security fixes
      • References
    • Netris 4.11.0 Release Notes (Jun/15/2026)
      • What’s new in Netris 4.11.0?
      • Features
      • Enhancements
      • Bug fixes
      • Security fixes
      • References
    • Netris 4.10.0 Release Notes (May/19/2026)
      • What’s new in Netris 4.10.0?
      • Features
      • Enhancements
      • Bug fixes
      • Security fixes
      • References
    • Netris 4.9.0 Release Notes (Apr/30/2026)
      • What’s new in Netris 4.9.0?
      • Features
      • Bug fixes and improvements
      • References
    • Netris 4.8.0 Release Notes (Apr/15/2026)
      • What’s new in Netris 4.8.0?
      • Features
      • Bug fixes
      • References
    • Netris 4.7.0 Release Notes (Mar/11/2026)
      • What’s new in Netris 4.7.0?
      • Features
      • Bug fixes
      • References
    • Netris 4.6.1 Release Notes (Feb/27/2026)
      • What’s new in Netris 4.6.1?
      • Features
      • Enhancements
      • Bug fixes
      • Security fixes
      • References
    • Netris 4.6.0 Release Notes (Feb/10/2026)
      • What’s new in Netris 4.6.0?
      • Features
      • Enhancements
      • Bug fixes
      • References
    • Netris 4.5.3 Release Notes (August/27/2025)
      • What’s new in Netris 4.5.3?
      • Features
      • Bug fixes
      • References
    • Netris 4.4.0 Release Notes (May/15/2025)
      • What’s new in Netris 4.4.0?
      • Features
      • Enhancements
      • References
    • Netris 4.3.0 Release Notes (July/31/2024)
      • What’s new in Netris 4.3.0?
      • Features
      • Bug fixes
      • References
    • Netris 4.2.0 Release Notes (May/1/2024)
      • What’s new in Netris 4.2.0?
      • Features
      • Bug fixes
      • References
    • Netris 4.1.1 Release Notes (Jan/31/2024)
      • What’s new in Netris 4.1.1?
      • Features
      • Bug fixes
      • References
    • Netris 4.0.0 Release Notes (Jul/25/2023)
      • What’s new in Netris 4.0.0?
      • Features
      • Bug fixes
      • References
    • Netris 3.5.0 Release Notes (Oct/24/2023)
      • What’s new in Netris 3.5.0?
      • Features
      • Bug fixes
      • References
    • Netris 3.4.4 Release Notes (Sep/29/2023)
      • What’s new in Netris 3.4.4?
      • Features
      • Bug fixes
      • References
    • Netris 3.4.3 Release Notes (Nov/09/2023)
      • What’s new in Netris 3.4.3?
      • Bug fixes
      • References
    • Netris 3.4.0 Release Notes (Mar/06/2023)
      • What’s new in Netris 3.4.0?
      • New Platform Integration
      • Features
      • Bug fixes
      • References
    • Netris 3.3.0 Release Notes (Dec/05/2022)
      • What’s new in Netris 3.3.0?
      • Features
      • Bug fixes
      • Various improvements and bug fixes
      • References
    • Netris 3.2.1 Release Notes (Oct/05/2022)
      • What’s new in Netris 3.2.1?
      • Bug fixes
      • References
    • Netris 3.2.0 Release Notes (Sep/22/2022)
      • What’s new in Netris 3.2.0?
      • Features
      • Bug fixes
      • References
    • Netris 3.1.0 Release Notes (Aug/1/2022)
      • What’s new in Netris 3.1.0?
      • Features
      • Bug fixes
      • References
    • Netris 3.0.0 Release Notes (Oct/6/2021)
      • What’s new in Netris 3.0.0?
      • References
    • Netris 2.9.0 Release Notes (Mar/5/2021)
      • What’s new in Netris 2.9.0?
      • References
    • Netris 2.8.0 Release Notes (May/13/2020)
      • What’s new in Netris 2.8.0?
      • Features
      • Bug fixes
      • References
Netris docs
  • NVIDIA NMX-C (NVLink) Integration Plugin for Netris Controller
  • Edit on GitHub
Previous Next

NVIDIA NMX-C (NVLink) Integration Plugin for Netris Controller

Table of Contents

  • Overview

    • Key Benefits

  • Architecture

    • High-Level Workflow

  • Version Compatibility

  • Prerequisites

  • Netris NVLink Plugin Installation

    • Installing the Netris NVLink plugin

      • Step 1: Configuring the NMX-C plugin credentials

      • Step 2: Configuring NMX Controller connection

      • Step 3: Applying the K8S deployment

    • Loading GPU Inventory

      • Step 1: Install the nvlink-loader

      • Step 2: Load the GPU inventory into the Netris Controller

      • Step 3: Verify the imported GPU inventory

  • Using the Netris NVLink plugin

  • Verification

  • Maintenance and Deprovisioning

  • Additional Resources

Overview

The Netris NVLink plugin provides an integration between your Netris Controller and NVIDIA NMX Controller (NMX-C) for AI infrastructures that include NVIDIA NVLink Multi-Node NVL72 fabrics. Netris already acts as your Ethernet fabric manager and, with this NVLink integration, allows you to continue using Netris as your one source of truth for all your data center networking intent, including your East-West, North-South, Out-of-Band management, and scale-up (NVL72) networking fabrics. See the “How an AI network differs from a traditional network” section of Introduction to Netris for more details about different network fabrics in a typical AI data center.

Key Benefits

  • Unified Management Interface: Define tenant isolation intent by simply listing servers in a Server Cluster object. Netris implements your declared intent in all appropriate Netris-managed fabrics, including Ethernet, InfiniBand, DPUs, and NVL72.

  • Automated Provisioning: Automatically configure NVLink partitions on NVL72 Multi-Node fabrics to align with tenant boundaries configured on other fabrics such as East-West (via Ethernet or InfiniBand) and North-South Ethernet. No additional actions are required to be taken outside of Netris to partition the NVL72 domain, making Netris your one-stop shop for declaring your multi-tenancy intent across all Netris-managed networking fabrics.

  • Simplified Operations: The Server Cluster feature eliminates the need to manage NVL72 partitions and GPU UIDs separately, as well as switch ports, VLANs, VRFs on Ethernet, and GUIDs, PKeys, SHARP groups on InfiniBand.

Architecture

The Netris NVLink plugin acts as the integration layer between Netris Controller and NVIDIA NMX controllers (NMX-C):

  1. Netris Controller: Orchestrates the Ethernet switches and provides the primary user interface for all your network automation, abstraction, and multi-tenancy actions.

  2. NVIDIA NMX Controller (NMX-C): Manages the NVLink Multi-Node fabric switches and provides specialized NVLink functionality, such as hardware lifecycle management.

  3. Netris NVLink Plugin: Synchronizes multi-tenancy configurations between both systems.

_images/NVIDIA_NVLink-Integration.svg

Figure: Netris NVLink Integration architecture

Tip

NVIDIA NetQ (NMX-M) is not required by Netris, but it is recommended for granular Network + GPU telemetry.

When you define a Server Cluster in Netris, the plugin automatically:

  • Discovers GPU UIDs for each server using the preloaded GPU ledger (see the Loading GPU Inventory section below for more details).

  • Creates and manages appropriate NVL partitions in NMX-C.

  • Assigns appropriate GPU UIDs to appropriate NVL partitions.

The Netris NVLink plugin runs continuously and, by default, validates that the operator’s intent is correctly applied every 10 seconds. If the NVLink partition doesn’t match the intent declared in the Netris Controller, the Netris NVLink plugin will enforce the intent in the appropriate NMX controller (NMX-C).

The NMX controller (NMX-C) remains the source of truth for GPU assignment to NVLink partitions (see the Verification section below). The Netris Controller is the source of truth for the operator’s intent, and the Netris NVLink plugin will continuously enforce the operator’s intent as expressed through the Server Cluster object in the Netris Controller.

NVL72 is a rack-scale system, and a typical data center deployment will have multiple NMX controllers (NMX-Cs) — one per rack (see NVIDIA materials for more information on NVL72). Netris will automatically discover which NMX controllers (NMX-Cs) must create the NVL72 partition and will only create partitions in the appropriate NMX controllers.

High-Level Workflow

  1. Install and configure the Netris NVLink plugin.

  2. Preload GPU mapping.

  3. The Netris NVLink plugin automatically discovers the current state from defined NMX-C(s).

  4. Netris determines the desired partition based on the Server Cluster Template and Server Cluster membership.

  5. The Netris NVLink plugin reconciles every 10 seconds.

Tip

Server Cluster is the only supported way for Netris to manage NVLink partitions.

Tip

Netris creates, modifies, and destroys NVL72 partitions, and adds or removes GPU UIDs from them. All other NVLink related activities, such as NVLink switch life cycle management, are performed by NMX-C and/or other relevant NVIDIA solutions. NVIDIA NMX-C is the NVLink fabric manager.

Version Compatibility

Component

Minimum Version

Netris Controller

4.6.0+

Netris NVLink Plugin

Bundled with Netris Controller

NVIDIA NMX-C

Consult your NVIDIA representative for supported versions

Tip

The Netris NVLink plugin communicates with NMX-C using its gRPC API with TLS client certificate authentication. Ensure your NMX-C version supports gRPC API access.

Prerequisites

Before installing the Netris NVLink plugin, ensure there is:

  1. A functioning Netris Controller environment. See Netris Controller Installation documentation for more details.

  2. Network connectivity between the Netris Controller and the NVIDIA NMX controller (NMX-C).

  3. Credentials for the Netris Controller.

  4. A GPU UID inventory file (CSV) mapping each server hostname to its GPU UIDs, ready to be loaded via nvlink-loader (see the Loading GPU Inventory section below for CSV format details).

  5. mTLS client certificate(s), private key(s), and the root CA certificate for authenticating NMX controllers (NMX-Cs).

Netris NVLink Plugin Installation

Installing the Netris NVLink plugin

The Netris NVLink plugin ships with the Netris Controller, but requires the additional steps outlined below to initialize. In the rest of the steps below, the guide assumes you unpacked the tarball into ~/netris-controller-ha/ (see Installing HA Netris Controller in Air-Gapped Environments for more details).

Tip

Perform all steps in this section from the primary Netris Controller node only; they do not need to be repeated on standby nodes.

Step 1: Configuring the NMX-C plugin credentials

Provide the controller credentials that the Netris NVLink plugin will use to communicate with the Netris Controller by editing and applying the netris-controller-ha/manifests/netris-controller/nvlink/secret.yaml file.

~$ vi ./netris-controller-ha/manifests/netris-controller/nvlink/secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: netris-controller-nvlink-agent-envs
  namespace: netris-controller
type: Opaque
stringData:
  NETRIS_CONTROLLER_ADDR: http://netris-controller-ha-web-service-backend.netris-controller
  NETRIS_CONTROLLER_LOGIN: "netris"
  NETRIS_CONTROLLER_PASSWORD: "Password!"
  NETRIS_SITE_NAME: "Site"
  # NETRIS_VERIFY_SSL: "true"

In the secret.yaml file you should only need to update the values of the NETRIS_CONTROLLER_LOGIN, NETRIS_CONTROLLER_PASSWORD, and NETRIS_SITE_NAME variables. The value of NETRIS_SITE_NAME must match the Site name defined in the Netris controller. See Netris Site for more details on creating a Site in Netris.

Warning

Do not modify the value of the NETRIS_CONTROLLER_ADDR variable.

Apply the updated secret.yaml

~$ kubectl apply -f ./netris-controller-ha/manifests/netris-controller/nvlink/secret.yaml

Tip

The username and password supplied in the secret.yaml must have “Permit All” selected as the value of the “Permission Group” field, “All Tenants” added, and Edit selected when adding a Netris user.

_images/nvlink-add-user.png

Figure: Adding a Netris user with the Permission Group set to Permit All and All Tenants selected

Tip

If you update the credentials, please repeat Step 1 of this installation guide and restart the deployment.

kubectl rollout restart deployment/netris-controller-nvlink-agent -n netris-controller

Step 2: Configuring NMX Controller connection

Edit the ./netris-controller-ha/manifests/netris-controller/nvlink/config.yaml file and provide the IP addresses of all the NMX Controllers (NMX-Cs) in scope, as well as the NMX-C PKI certificate bundle, i.e., the file names for the Signed Certificate, Private Key, and the Root CA Certificate.

~$ vi ./netris-controller-ha/manifests/netris-controller/nvlink/config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: netris-controller-nvlink-agent-config
  namespace: netris-controller
data:
  config: |-
    nmx-config:
      verify-ssl: true
      cert-file: /etc/netris-nvlink-agent/tls/client.crt
      key-file: /etc/netris-nvlink-agent/tls/client.key
      root-ca: /etc/netris-nvlink-agent/tls/rootCA.crt
      common-name: nmxc.example.com
      nmx-c:
        nmxc_001:
          addresses:
            - 192.0.2.1:8601
        nmxc_002:
          addresses:
            - 192.0.2.2:8601
        nmxc_003:
          addresses:
            - 192.0.2.3:8601
        nmxc_004:
          addresses:
            - 192.0.2.4:8601
        nmxc_005:
          addresses:
            - 192.0.2.5:8601
        nmxc_006:
          addresses:
            - 192.0.2.6:8601

Tip

The /etc/netris-nvlink-agent/tls/ path is the path to the file inside the container, and not on the host system. It should match the value of the mountPath key in the deploy.yaml file.

Depending on your NMX-C configuration, you may provide one shared PKI certificate bundle for all NMX Controllers, as shown above, or specify a unique certificate bundle per NMX-C as shown below.

apiVersion: v1
kind: ConfigMap
metadata:
  name: netris-controller-nvlink-agent-config
  namespace: netris-controller
data:
  config: |-
    nmx-config:
      verify-ssl: true
      root-ca: /etc/netris-nvlink-agent/tls/rootCA.crt
      nmx-c:
        nmxc_001:
          cert-file: /etc/netris-nvlink-agent/tls/nmx01/client.crt
          key-file: /etc/netris-nvlink-agent/tls/nmx01/client.key
          common-name: nmxc001.example.com
          addresses:
            - 192.0.2.1:8601
        nmxc_002:
          cert-file: /etc/netris-nvlink-agent/tls/nmx02/client.crt
          key-file: /etc/netris-nvlink-agent/tls/nmx02/client.key
          common-name: nmxc002.example.com
          addresses:
            - 192.0.2.2:8601
        nmxc_003:
          cert-file: /etc/netris-nvlink-agent/tls/nmx03/client.crt
          key-file: /etc/netris-nvlink-agent/tls/nmx03/client.key
          common-name: nmxc003.example.com
          addresses:
            - 192.0.2.3:8601
Netris NVLink Plugin Configuration Parameters

The following configuration options are available in the Netris NVLink plugin YAML configuration file:

  • nmx-config - top-level mapping for the plugin configuration

  • verify-ssl - key to signal the plugin whether to use TLS authentication when accessing the NMX controller (NMX-C)

  • cert-file - absolute path to the client certificate

  • key-file - absolute path to the private key of the client certificate

  • root-ca - absolute path to the root CA certificate file.

  • common-name - must match the value of the CN field of the certificate presented by the NMX controller (NMX-C).

  • nmx-c - contains a mapping describing each NMX controller (NMX-C) you’d like Netris to create NVLink partitions in. It must contain at least one key with a value of a list of hostnames and port numbers

    • addresses - IP address and port number of each NMX-C endpoint.

Each NMX-C must be presented through a separate key.

Apply the configuration to your Kubernetes cluster:

~$ kubectl apply -f ./netris-controller-ha/manifests/netris-controller/nvlink/config.yaml

Load the PKI certificate bundle into the K8S secrets (the example command below assumes the relevant PKI files are located in current directory):

~$ kubectl -n netris-controller create secret generic netris-controller-nvlink-agent-tls \
  --from-file=client.key=./client.key \
  --from-file=client.crt=./client.crt \
  --from-file=rootCA.crt=./rootCA.crt

If your deployment requires a unique client certificate per NMX-C, you will need to create multiple K8S secrets as shown below:

~$ kubectl -n netris-controller create secret generic netris-controller-nvlink-agent-tls-nmx01 \
  --from-file=client.key=./nmx01/client.key \
  --from-file=client.crt=./nmx01/client.crt \
  --from-file=rootCA.crt=./rootCA.crt
~$ kubectl -n netris-controller create secret generic netris-controller-nvlink-agent-tls-nmx02 \
  --from-file=client.key=./nmx02/client.key \
  --from-file=client.crt=./nmx02/client.crt \
  --from-file=rootCA.crt=./rootCA.crt
~$ kubectl -n netris-controller create secret generic netris-controller-nvlink-agent-tls-nmx03 \
  --from-file=client.key=./nmx03/client.key \
  --from-file=client.crt=./nmx03/client.crt \
  --from-file=rootCA.crt=./rootCA.crt

Step 3: Applying the K8S deployment

If you are using a unique certificate bundle per NMX-C, you will need to edit ./netris-controller-ha/manifests/netris-controller/nvlink/deploy.yaml before using it to include all the volume mounts and secrets you have created earlier. Otherwise, no changes to deploy.yaml are necessary.

The example below shows the per-NMX-C-certificate variant of the deploy.yaml file.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: netris-controller-nvlink-agent
  namespace: netris-controller
spec:
  replicas: 1
  selector:
    matchLabels:
      app: netris-controller-nvlink-agent
  template:
    metadata:
      labels:
        app: netris-controller-nvlink-agent
    spec:
      containers:
      - name: nvlink-agent
        image: netrisai/bare-metal-nvlink-agent:4.6.1-001
        command: ["/app/servicebin", "-c", "/app/config.yaml"]
        envFrom:
        - secretRef:
            name: netris-controller-nvlink-agent-envs
        env:
        - name: NETRIS_TIMEOUT
          value: "10"
        - name: RECONCILE_INTERVAL
          value: "10"
        volumeMounts:
        - name: nvlink-tls-nmxc01
          mountPath: /etc/netris-nvlink-agent/tls/nmxc01
          readOnly: true
        - name: nvlink-tls-nmxc02
          mountPath: /etc/netris-nvlink-agent/tls/nmxc02
          readOnly: true
        - name: nvlink-tls-nmxc03
          mountPath: /etc/netris-nvlink-agent/tls/nmxc03
          readOnly: true
        - name: nvlink-config
          mountPath: /app/config.yaml
          subPath: config
          readOnly: true
      volumes:
        - name: nvlink-tls-nmxc01
          secret:
            secretName: netris-controller-nvlink-agent-tls-nmx01
            defaultMode: 0400
        - name: nvlink-tls-nmxc02
          secret:
            secretName: netris-controller-nvlink-agent-tls-nmx02
            defaultMode: 0400
        - name: nvlink-tls-nmxc03
          secret:
            secretName: netris-controller-nvlink-agent-tls-nmx03
            defaultMode: 0400
        - name: nvlink-config
          configMap:
            name: netris-controller-nvlink-agent-config

Apply the deployment

~$ kubectl apply -f ./netris-controller-ha/manifests/netris-controller/nvlink/deploy.yaml

Loading GPU Inventory

You must preload the mapping between the GPU UIDs and the servers in which those GPUs are installed before the automatic NVL partition management can start.

Here is an example of the GPU UID inventory file:

hostname,gpuUid
hgx-pod00-su0-h00,875835130816197840
hgx-pod00-su0-h00,961186615343340613
hgx-pod00-su0-h00,796824814706104730
hgx-pod00-su0-h00,684212070855729123
hgx-pod00-su0-h01,718625720642846212
hgx-pod00-su0-h01,788578661925003442
hgx-pod00-su0-h01,910329783472956766
hgx-pod00-su0-h01,814561743235261831
hgx-pod00-su0-h02,996615732638596030
hgx-pod00-su0-h02,884228998345288014
hgx-pod00-su0-h02,730725932032980822
hgx-pod00-su0-h02,749618463645136824
hgx-pod00-su0-h03,893225768947662203
hgx-pod00-su0-h03,825286183620844317
hgx-pod00-su0-h03,784007583961668668
hgx-pod00-su0-h03,713366763878128965

Tip

In this file, the hostname refers to the server’s object name in Netris Inventory.

Step 1: Install the nvlink-loader

The nvlink-loader binary ships as part of the Netris Controller distribution package. Copy the nvlink-loader.bin binary into the Netris controller’s local /usr/local/bin and make it executable.

~$ sudo cp ./netris-controller-ha/files/k3s/nvlink-loader.bin /usr/local/bin/nvlink-loader && sudo chmod +x /usr/local/bin/nvlink-loader

Step 2: Load the GPU inventory into the Netris Controller

Warning

You only need to load the inventory on the primary Netris controller node. Do not repeat this action on standby controller nodes.

Execute nvlink-loader script to import the GPU UID inventory into the Netris Controller

~$ nvlink-loader --csv-file gpu-mapping.csv --netris-url "https://controller.acme.com" --username "admin" --password "passw0rd"

Where

--csv-file <filename>    specifies the comma-separated value (CSV) file with GPU UID inventory

--netris-url "<URL>"     specifies the Netris Controller URL

--username "<username>"  specifies the Netris administrator username

--password "<password>"  specifies the Netris administrator password

Upon successful import, you should see output similar to the one below

INFO [0000] Found 72 GPU mappings in CSV file
INFO [0000] Logging in to Netris…
INFO [0000] Successfully logged in to Netris
INFO [0000] Fetching inventory from Netris (import mode)...
INFO [0001] Found 38 server inventory items
INFO [0002] Successfully updated server 'hgx-pod00-su0-h00' with 4 GPU mappings
INFO [0003] Successfully updated server 'hgx-pod00-su0-h01' with 4 GPU mappings
INFO [0004] Successfully updated server 'hgx-pod00-su0-h02' with 4 GPU mappings
<output truncated for brevity>

Step 3: Verify the imported GPU inventory

You can also confirm successful import by examining the appropriate server objects in the Netris controller. In the Custom JSON field of each relevant server object in Netris Inventory, you should see a JSON object similar to the following

_images/NVL-Server-GPU-inventory.png

Figure: GPU UID mapping shown in the server's Custom JSON field

Using the Netris NVLink plugin

After successfully configuring the Netris NVLink plugin and loading the GPU inventory, as shown above, you can use the Server Cluster functionality to create, update, and delete NVL72 NVLink partitions.

Tip

You must update your Server Cluster Template to include NVLink integration. See the Server Cluster documentation for more details.

Tip

In the most basic sense, when you create a Server Cluster using a Server Cluster Template with NVLink integration, as shown in the Server Cluster documentation, Netris will look up the relevant GPU UIDs in the Netris Inventory for each server object included in the given Server Cluster and create one NVL72 partition per NMX-C named after the Server Cluster, including the Server Cluster ID. Then Netris will assign the appropriate GPU UIDs to that partition.

Warning

Netris does not enforce the completeness of the GPU inventory or the correctness of the server-to-GPU ID mapping. Please verify the content of your inventory CSV file before loading it into the Netris Controller.

Warning

NVIDIA does not support NVL72 partitions spanning more than one NVL domain. If your Server Cluster spans multiple NVL72 domains, each NVL72 domain will have a partition created within it with GPU UIDs from that domain only. Please reach out to Netris support or your NVIDIA representative with questions about operating multiple NVL72 domains.

Verification

When you need to directly validate NVL72 partitions and their membership, Netris recommends using a script to simplify access to NMX-C.

Here is an example of that script.

#!/bin/bash

# NMX-C Partition Info Script
# Usage: ./nmx-get-partitions.sh [gateway_id]

# Configuration
GATEWAY_ID="${1:-gateway_id}"
NMX_HOST="nmxc-01.acme.com:8601"
CERT_PATH="/home/ubuntu/netris-nvlink-agent/client.crt"
KEY_PATH="/home/ubuntu/netris-nvlink-agent/client.key"
CACERT_PATH="/home/ubuntu/netris-nvlink-agent/rootCA.crt"

echo "=== NMX-C Partition Information ==="
echo "Gateway ID: $GATEWAY_ID"
echo "Host: $NMX_HOST"
echo "====================================="
echo

# Get partition info from NMX-C
grpcurl -d "{\"gatewayId\": \"$GATEWAY_ID\"}" \
  -cert "$CERT_PATH" \
  -key "$KEY_PATH" \
  -cacert "$CACERT_PATH" \
  "$NMX_HOST" \
  nmx_c.NMX_Controller.GetPartitionInfoList | \
jq -r '
  .partitionInfoList[] |
  "Partition ID: \(.partitionId.partitionId)",
  "Name: \(.name // "N/A")",
  "Number of GPUs: \(.numGpus // "N/A")",
  "GPU UIDs:",
  (if .gpuUidList then (.gpuUidList[] | "  - \(.)") else "  - None" end),
  "Health: \(.health // "N/A")",
  "Type: \(.partitionType // "N/A")",
  "----------------------------------------"
'

Below are a few examples of running this verification script.

The following output shows that only a default partition is present in the NMX controller (NMX-C) and no GPU UIDs are assigned to it.

~$ ./nmx-get-partitions.sh
=== NMX-C Partition Information ===
Gateway ID: gateway_id
Host: nmxc-01.acme.com:8601
===================================

Partition ID: 32766
Name: Default Partition
Number of GPUs: N/A
GPU UIDs:
- None
Health: NMX_PARTITION_HEALTH_HEALTHY
Type: NMX_PARTITION_TYPE_GPUUID_BASED

The customer may choose to configure each NVL72 domain with a default partition (see NVIDIA NVLink Multi-Node Documentation for more details). Netris is fully compatible with this scenario and will remove the GPU UIDs from the default NVL72 partition prior to assigning them to a new tenant partition.

The output below shows a new NVL72 partition created with 8 GPUs after a Server Cluster was instantiated containing servers with those GPU UIDs. Note that the partition name contains the Server Cluster ID (192 in this example), which may be helpful during troubleshooting. Netris will always include the Server Cluster ID in the NVL72 partition name.

~$ ./nmx-get-partitions.sh
=== NMX-C Partition Information ===
Gateway ID: gateway_id
Host: nmxc-01.acme.com:8601
===================================

Partition ID: 32766
Name: Default Partition
Number of GPUs: N/A
GPU UIDs:
- None
Health: NMX_PARTITION_HEALTH_HEALTHY
Type: NMX_PARTITION_TYPE_GPUUID_BASED
-----------------------------------
Partition ID: 8593
Name: netris-cluster-192
Number of GPUs: 8
GPU UIDs:
- 875835130816197840
- 961186615343340613
- 796824814706104730
- 684212070855729123
- 718625720642846212
- 788578661925003442
- 910329783472956766
- 814561743235261831
Health: NMX_PARTITION_HEALTH_HEALTHY
Type: N/A
-----------------------------------

Maintenance and Deprovisioning

If you need to perform maintenance on one or more GPU servers that are part of an NVL72 partition, Netris recommends that you remove those servers from the Server Cluster before performing this maintenance. Doing so will remove the relevant GPU UIDs from the tenant’s NVL72 partition.

Warning

Removing a server from a Server Cluster will also remove this server from every and all V-Nets and VPCs that this server was a member of as a result of being a member of a Server Cluster. Netris will not remove this server from any V-Nets where the switch ports connected to this server were assigned to this V-Net manually or using labels.

Additional Resources

  • NVIDIA NMX-C Documentation

  • NVIDIA NVLink Multi-Node Documentation

Previous Next

© Copyright 2022, Netris.

Built with Sphinx using a theme provided by Read the Docs.
Alternate Versions v: 4.14

Free theme by Read the Docs.