NVIDIA UFM Cable Validation Tool v1.7.1

Deploying the Module

Fabric Size

CPU Requirements*

Memory Requirements

Disk Space Requirements

Minimum

Recommended

Up to 1000 nodes

4-core server

4 GB

20 GB

50 GB

1000-5000 nodes

8-core server

16 GB

40 GB

120 GB

5000-10000 nodes

16-core server

32 GB

80 GB

160 GB

Above 10000 nodes

Contact NVIDIA Support

The Cable Validation tool can be deployed in two methods:

Deploy the cables_bringupcontainer on a host as described below:

  1. docker load -i <image_path>/cables_bringup_<version>.tar.gz

  2. docker run --name cables_bringup -itd --network=host cables_bringup

  3. docker exec -it cables_bringup /bin/bash

Setting Docker Environment

There are three ways to set environment variables to help customize some of the settings on CVT.

  1. Set the values in CVT environment variable configuration file [Least Priority]

  2. Setting Environment variables when starting the docker container

  3. Exporting environment variables manually inside the container [Highest Priority]

Environment Variable Configuration File

To enhance flexibility and usability, CVT supports environment variable management through a dedicated file. All variables listed below can be set in the configuration file, which includes default values for easy customization.

If an environment variable is defined in both the Docker environment and the configuration file, the Docker environment value takes precedence.

Step 1: Configuration File

The cvt_env.conf file is installed with CVT and comes preloaded with default values.

You can modify this file to match your environment requirements.

Step 2: Updating Variables

To update an environment variable:

  1. Edit the <cable_bringup_root>/config/cvt_env.conf file.

  2. Save your changes.

  3. Restart the CVT collector for the changes to take effect.

    This can be done in the following ways:

    1. supervisorctl restart cvt-service
    2. supervisorctl stop cvt-service bringupcli -k
Note

Note: A Docker container restart is not required—only the CVT collector needs to be restarted.

Sample cvt_env.conf file

Copy
Copied!
            

[Version] # DO NOT EDIT THIS SECTION # Developer note: when adding/removing/changing a variable, you must increment the version number. # Version of the cvt_env.conf file # This version is used to check if the cvt_env.conf file is compatible with the current version of the CVT # If the version is not compatible, the original cvt_env.conf file will be saved as cvt_env.conf.save # and the new cvt_env.conf file will be created with the current version # The new cvt_env.conf file will be used to start the CVT   CVT_ENV_VERSION=1.0.0   # Variable names are case-sensitive, and should be unique among sections.   # Network Configuration [network] # IP addresses used by the agents: # if no Environment Variable is set, the IP address of the default interface will be used. # if AGENTS_COLLECTOR_NAT_IP is set # - the agents (switch and host) will use this IP address # otherwise # - if DEFAULT_AGENTS_INTERFACE_NAME is set, switch and host agents will use the IP address of the interface # specified by DEFAULT_AGENTS_INTERFACE_NAME # - if HOST_SPECIFIC_INTERFACE_NAME is set, host agents will use the IP address of the interface # specified by HOST_SPECIFIC_INTERFACE_NAME   # Collector External (NAT) IP address; define if there is a NAT between the collector and the agents # this IP address is used by the agents to communicate the collector # fetch images and send data/reports to the collector # Leave empty if there is no NAT between the collector and the agents AGENTS_COLLECTOR_NAT_IP=   # Interface name of the collector over which all the agents (switch and host) will communicate # The IP address of this interface will be used by all agents (switch and host) to communicate to the # collector to fetch images and send data/reports DEFAULT_AGENTS_INTERFACE_NAME=   # Use the following variable if you want to use a different interface of the collector for the host agents # Define if the interface to connect with hosts is different from the one used for switch agents # specified by DEFAULT_AGENTS_INTERFACE_NAME # The IP address of this interface will be used by the host agents to communicate to the # collector to fetch images and send data/reports # Leave empty if you want to use the same interface as DEFAULT_AGENTS_INTERFACE_NAME HOST_SPECIFIC_INTERFACE_NAME=   # Agent Configuration (settings used by the agents themselves) [agent] # set `true` if the switch hostname contains a dot (other than the domain part) CV_DOT_IN_HOSTNAME= # Time after which a full report is forced to be published. # Value to be provided in minutes. Default is 720 minutes (12 hours). # Interval less than 10 mins is not supported. FULL_REPORT_PUBLISH_INTERVAL_MINUTES=720 # Set to `true` to publish amber data on each agent iteration, regardless of changes. # Default is `false` - amber is only published when there are changes or during forced full reports. AMBER_PUBLISH_EACH_ITERATION=false # Agent data collection interval in seconds. Default is 600 seconds (10 minutes). # This controls how often the agent collects and processes port/link data. AGENT_COLLECT_INTERVAL=600   # Collector Configuration (settings used by the collector to manage agents) [collector] # Max time to wait for an agent to become inactive in minutes MAX_INACTIVE_INTERVAL=15 # Interval to check for new switches in minutes CHECK_NEW_SWITCHES_INTERVAL=15 # Time to wait for an agent to become active after start validation (minutes) START_VALIDATION_TIMEOUT=5 # Time to wait for an agent to become inactive in minutes WAIT_TIME_INACTIVE_AGENTS=1   # Worker Concurrency Settings # Max number of workers to run in parallel for general operations (validation, connectivity, DNS) CVT_MAX_WORKERS=30 # Max number of workers for agent deployment (limited due to 384MB image transfers) CVT_DEPLOYMENT_MAX_WORKERS=30   # Timeout Settings # Quick timeout for unreachable devices (seconds) - reduces wait time for failed connections CVT_QUICK_TIMEOUT=3 # Agent communication timeout (seconds) - timeout for individual HTTP requests to agents AGENT_COMM_TIMEOUT=30   # Batch Processing Settings # Batching threshold - only use batching for deployments larger than this (reduces overhead) CVT_BATCHING_THRESHOLD=5000 # Batch size when batching is used (devices per batch) CVT_BATCH_SIZE=1000   # DNS Resolution Settings # DNS resolver options for fast timeouts to avoid long waits on unresolvable hostnames # This configures the system resolver behavior when load_topo performs parallel DNS resolution # Format: timeout:X attempts:Y single-request # - timeout:X = seconds to wait per DNS query (default: 1) # - attempts:Y = number of retry attempts (default: 1, no retries) # - single-request = send A and AAAA queries separately (improves performance) CVT_DNS_RES_OPTIONS=timeout:1 attempts:1 single-request   # SSH Configuration [ssh] # SSH private key file path for passwordless authentication to HOST devices only # NOTE: SSH keys are NOT used for switch devices (switches use password authentication) # Used by both SSH commands and SFTP file transfers during agent deployment to hosts # # IMPORTANT: Path must be accessible inside the collector container, not the host system # If using Docker volumes, ensure the key file is mounted into the container # # Leave empty to use standard SSH key discovery (recommended) # When empty, SSH will automatically try default container locations like: # - ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 # # Set to specific path only if you need to use a non-standard key location # Examples: # CV_SSH_KEY_FILE=/opt/collector/keys/host_key (container path) # CV_SSH_KEY_FILE=/home/collector/.ssh/custom_key (container path) CV_SSH_KEY_FILE=   # SSH connection timeout in seconds # Applied to both SSH command execution and SFTP file transfers # Increase for slow networks, decrease for faster failure detection SSH_CONN_TIMEOUT=20   # Enable automatic SSH key discovery from SSH agent and default locations # NOTE: Only applies to HOST devices, not switches # When enabled, the system will try to use keys from (inside container): # - SSH agent (if running and accessible in container) # - Default container locations (~/.ssh/id_rsa, ~/.ssh/id_dsa, etc.) # Only used for host devices when no password is provided SSH_LOOK_FOR_KEYS=true   [application] # Topology loading at startup - specify what to load: # none - do not load any topology file (default) # last - load the last loaded topology from history # <path> - load a specific topology file (supports .topo, .dot, .xlsx, .json) # Examples: # STARTUP_TOPOLOGY=none # STARTUP_TOPOLOGY=last # STARTUP_TOPOLOGY=./topologies/production.topo # STARTUP_TOPOLOGY=/absolute/path/to/topology.xlsx STARTUP_TOPOLOGY=none   # automatically start validation if a topology file is loaded AUTO_START_VALIDATION=false   [data management] # set `true` if you want to poll for stats from CVT collector ENABLE_STATS_POLLING=false


Configuration Parameters

Section

Parameter

Description

network

AGENTS_COLLECTOR_NAT_IP

NAT IP address between collector and agents. Leave empty if no NAT.

DEFAULT_AGENTS_INTERFACE_NAME

Interface for all agents to communicate with the collector.

HOST_SPECIFIC_INTERFACE_NAME

Interface for host agents if different from default.

agent

CV_DOT_IN_HOSTNAME

Set true if hostname contains extra dots (not in domain).

FULL_REPORT_PUBLISH_INTERVAL_MINUTES

Minutes until forced full report; min 10 mins.

AMBER_PUBLISH_EACH_ITERATION

Set True if amber file is to be published every iteration, regardless of changes.

AGENT_COLLECT_INTERVAL

Agent data collection interval in seconds.

collector

MAX_INACTIVE_INTERVAL

Minutes before inactive agent is considered down.

CHECK_NEW_SWITCHES_INTERVAL

Minutes between checks for new switches.

START_VALIDATION_TIMEOUT

Minutes allowed for agent to become active after start.

WAIT_TIME_INACTIVE_AGENTS

Minutes to wait before confirming inactivity.

CVT_MAX_WORKERS

Max parallel workers.

CVT_DEPLOYMENT_MAX_WORKERS

Max number of workers for agent deployment.

CVT_QUICK_TIMEOUT

Quick timeout in seconds for unreachable devices.

AGENT_COMM_TIMEOUT

Agent communication timeout in seconds - timeout for individual HTTP requests to agents.

CVT_BATCHING_THRESHOLD

Batching threshold - Use batching for deployments larger than this value.

CVT_BATCH_SIZE

Batch size when batching is used (devices per batch).

CVT_DNS_RES_OPTIONS

This configures the system resolver behavior when load_topo performs parallel DNS resolution.

ssh

CV_SSH_KEY_FILE

Path to SSH private key file.

SSH_CONN_TIMEOUT

SSH connection timeout in seconds.

SSH_LOOK_FOR_KEYS

When enabled, the system will try to use keys from inside container. Only used for host devices when no password is provided.

application

STARTUP_TOPOLOGY

Topology loading at startup - specify what to load.

AUTO_START_VALIDATION

Automatically start validation if a topology file is loaded.

data management

ENABLE_STATS_POLLING

Set true if you want to poll for stats from CVT collector.

Setting Environmental Variables with Docker Run

Specifying the Network Interface

If the host system is equipped with multiple network interfaces and the switches are connected to the host through an interface that differs from the default management interface, the user can designate this particular interface by utilizing a specific environment variable, namely AGENTS_IFC_NAME. To illustrate, assuming the hypothetical interface name is eno3:

Copy
Copied!
            

docker run --name cables_bringup -itd --network=host --env AGENTS_IFC_NAME=eno3


Adding Hostnames

If the switches are not configured in the DNS server, you may add hostnames; the user may use the --add-host option when running the container. For example (assuming the switch name is switch-3245fa and its IP is 192.168.1.1):

Copy
Copied!
            

docker run --name cables_bringup -itd --network=host --add-host=switch-3245fa:192.168.1.1 cables_bringup


Using Volumes

Volumes can be used for data persistence or easier file transfer to the cables_bringup container. The volume must be mapped to /cable_bringup_root in the container for data persistence. This volume can also be used for loading topology files. Example:

Copy
Copied!
            

docker run --name cables_bringup -itd --network=host -v /opt/bringup_data:/cable_bringup_root cables_bringup


Overriding Apache Configuration

In the event that a host machine is running another Apache instance and utilizing the default ssh ports 443, an alternative port may be designated for the bringup server by the user, these ports should be available and free. To accomplish this, the APACHE_HTTPS_PORT environment variables can be employed. Consider the following example:

Copy
Copied!
            

docker run --name cables_bringup -itd --network=host --env APACHE_HTTPS_PORT=9443 cables_bringup

Warning

Warning: Please note that Running Cable Validation as plugin is not supported on UFM Gen2.0.

Deploy the module as a UFM Enterprise plugin as follows:

  1. docker load -i /<image_path>/ufm-plugin-cablevalidation-<version>.tar.gz

  2. ./manage_ufm_plugins.sh add -p cablevalidation -t <version>

  3. ./manage_ufm_plugins.sh start -p cablevalidation

  4. docker exec -it ufm-plugin-cablevalidation bash

Copy Files to the Plugin

Users have two methods for copying files, such as topology files, to the Cable Validation plugin:

  1. Copy the files to the plugin's data volume /opt/ufm/ufm_plugins_data/cablevalidation which is mapped to /data/ inside the plugin container.

  2. Use docker cp to copy the needed files to the container.

Overriding the Apache Configuration

When using Cable Validation as a plugin, the default ports 443 are already in use by UFM Enterprise. Therefore, port 8633 will be used for HTTPS by default. Users can opt to use different ports for the bring-up server, provided that these ports are available and free.

The plugin config.cfg file can be modified to update APACHE_HTTPS_PORT variables for that purpose. To make this adjustment, follow these steps:

  1. Execute /opt/ufm/scripts/manage_ufm_plugins.sh add -p cablevalidation to add the Cable Validation plugin.

  2. Stop the plugin using /opt/ufm/scripts/manage_ufm_plugins.sh stop -p cablevalidation

  3. Use vim /opt/ufm/files/conf/plugins/cablevalidation/config.cfg to modify the 'APACHE_HTTPS_PORT' variable.

  4. Update and save the file.

  5. Start the plugin again with /opt/ufm/scripts/manage_ufm_plugins.sh start -p cablevalidation.

With these changes, the new configuration will take effect, and Apache will run with the updated ports.

© Copyright 2025, NVIDIA. Last updated on Nov 12, 2025