iPerf3 — Installation¶
This guide covers deploying iPerf3 on Azure Local cluster nodes (Windows or Linux) and configuring SSH access required by the automation scripts.
Prerequisites¶
In addition to the common prerequisites:
- Cluster nodes (Windows or Linux VMs) reachable via SSH (port 22)
- SSH key-based authentication configured — the
linux_sshcredential must be available via Key Vault or interactively iperf3binary installed on each node (see below)- Firewall rules permitting TCP/UDP on port 5201 between all cluster nodes (the default iPerf3 port)
Install iPerf3¶
Linux Nodes (Ubuntu/Debian)¶
# Install via package manager
sudo apt-get update && sudo apt-get install -y iperf3
iperf3 --version
Linux Nodes (RHEL/Rocky/AlmaLinux)¶
Windows Nodes¶
Download the iPerf3 Windows binary from the iperf3 releases page and place iperf3.exe in a directory on $env:PATH (e.g., C:\tools\iperf3\):
# On the target Windows node (via PowerShell remoting)
Invoke-Command -ComputerName "hci01-node1" -ScriptBlock {
$uri = "https://github.com/ar51an/iperf3-win-builds/releases/download/3.17.1/iperf3.exe"
Invoke-WebRequest -Uri $uri -OutFile "C:\tools\iperf3\iperf3.exe"
[System.Environment]::SetEnvironmentVariable("PATH",
$env:PATH + ";C:\tools\iperf3", "Machine")
}
Verify Installation¶
Expected: iperf 3.x.x on all nodes.
SSH Key Configuration¶
Start-IperfTest.ps1 uses SSH/SCP with BatchMode=yes (no password prompts). The linux_ssh credential must contain a path to a private key that is authorized on all target nodes.
# Interactive credential prompt (for local runs)
.\tools\iperf\scripts\Start-IperfTest.ps1 `
-ClusterName "hci01.corp.infiniteimprobability.com" `
-Nodes @("hci01-node1", "hci01-node2") `
-Profile "tcp-throughput" `
-CredentialSource Interactive # Prompts for SSH username and key path
For CI/CD, store the private key path in Key Vault as the linux_ssh secret.
Firewall Configuration¶
By default, iPerf3 uses port 5201 for both the server listener and the data stream. All cluster nodes must allow inbound and outbound TCP/UDP on this port from each other:
# Windows: add firewall rule on each cluster node
Invoke-Command -ComputerName @("hci01-node1", "hci01-node2", "hci01-node3") -ScriptBlock {
New-NetFirewallRule `
-Name "iPerf3" `
-DisplayName "iPerf3 network test" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 5201 `
-Action Allow
}
For Linux nodes, use ufw allow 5201/tcp && ufw allow 5201/udp.
Remote Directory Structure¶
| Path | Purpose |
|---|---|
/tmp/iperf-results/<RunId>/<client>-to-<server>.json |
Per-pair JSON result file |
Results are SCP-copied by Collect-IperfResults.ps1 and removed from the remote node after successful collection.
Next Steps¶
- Workload Profiles — TCP throughput, UDP latency, or mesh all-to-all testing
- Monitoring — Network and CPU alert thresholds during iPerf3 runs