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:
docker load -i <image_path>/cables_bringup_<version>.tar.gzdocker run --name cables_bringup -itd --network=host cables_bringupdocker 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.
Set the values in CVT environment variable configuration file [Least Priority]
Setting Environment variables when starting the docker container
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:
Edit the
<cable_bringup_root>/config/cvt_env.conffile.Save your changes.
Restart the CVT collector for the changes to take effect.
This can be done in the following ways:
supervisorctl restart cvt-service
supervisorctl stop cvt-service bringupcli -k
Note: A Docker container restart is not required—only the CVT collector needs to be restarted.
Sample cvt_env.conf file
[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 |
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 |
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:
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):
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:
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:
docker run --name cables_bringup -itd --network=host --env APACHE_HTTPS_PORT=9443 cables_bringup
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:
docker load -i /<image_path>/ufm-plugin-cablevalidation-<version>.tar.gz./manage_ufm_plugins.sh add -p cablevalidation -t <version>./manage_ufm_plugins.sh start -p cablevalidationdocker 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:
Copy the files to the plugin's data volume /opt/ufm/ufm_plugins_data/cablevalidation which is mapped to /data/ inside the plugin container.
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:
Execute /opt/ufm/scripts/manage_ufm_plugins.sh add -p cablevalidation to add the Cable Validation plugin.
Stop the plugin using /opt/ufm/scripts/manage_ufm_plugins.sh stop -p cablevalidation
Use vim /opt/ufm/files/conf/plugins/cablevalidation/config.cfg to modify the 'APACHE_HTTPS_PORT' variable.
Update and save the file.
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.