在评估云平台网络质量时,最直观的办法就是实测。Azure虚拟机的规格文档里都会标注一个最大网络带宽(Mbps),但这个数字是理论上限,实际能跑出多少,需要用工具验证。iPerf3 是业界公认的网络性能测试标准工具,它通过在两台机器之间建立 TCP 或 UDP 数据流,直接测出内网的实际吞吐量。本文以两台 Windows 虚拟机为例,完整演示一次 Azure 内网带宽评测的全过程。

一、测试前的准备:虚拟机选型与网络配置
首先要明确一点:Azure 虚拟机的网络带宽上限由机型决定,而不是由网卡决定。比如 Standard_D2s_v5 标称 1 Gbps 左右,而 Standard_D8s_v5 可以到 12.5 Gbps,D 系列往上还有更高规格。如果你测出来的结果远低于预期,第一步应该检查机型规格表,而不是怀疑 iPerf3 本身。
第二个关键点是加速网络。在 Azure 创建虚拟机时,如果镜像支持,默认会开启加速网络,它基于 SR-IOV 技术,绕过虚拟交换机直接与物理网卡通信,能显著降低延迟和 CPU 占用。可以在 Azure 门户的虚拟机网卡设置里查看加速网络是否为已启用状态。对于 Dv4/Dv5 这类较新机型,不开加速网络,高带宽测试时 CPU 会成为瓶颈,iPerf3 单线程跑不满的情况非常常见。
两台虚拟机必须位于同一个虚拟网络的同一区域,这样流量走内网,不经过公网,测试结果才代表真实的内网带宽。如果两台机器在不同 VNet 但做了对等互连,流量依然算内网,也是可以的。测试期间建议关闭 Windows Update、杀毒软件实时扫描等后台任务,避免它们抢占带宽干扰结果。
二、下载安装 iPerf3 并放行防火墙端口
Windows 版 iPerf3 没有官方安装包,可以使用 Cygwin 编译版本,也可以直接下载社区维护的二进制包,解压到某个目录即可使用,比如解压到 C:\Tools\iperf3 目录下。解压后会得到 iperf3.exe,无需安装,打开 PowerShell 切换到该目录就能运行。
iPerf3 默认使用 5201 端口,Windows 防火墙默认拦截入站连接,所以服务端虚拟机必须放行该端口。用管理员权限的 PowerShell 执行以下命令:
# 放行 iPerf3 默认端口 5201 的入站 TCP 规则 New-NetFirewallRule -DisplayName "iPerf3 TCP 5201" -Direction Inbound -Protocol TCP -LocalPort 5201 -Action Allow # 如果还要测 UDP,需要额外放行 UDP 5201 New-NetFirewallRule -DisplayName "iPerf3 UDP 5201" -Direction Inbound -Protocol UDP -LocalPort 5201 -Action Allow
除了 Windows 防火墙,Azure 还有一层网络安全组 NSG。检查虚拟机网卡关联的 NSG,确认入站安全规则里也放行了 5201 端口,否则客户端连接时会直接报 unable to connect 错误。这是新手最容易踩的坑,很多人只在系统里放行了端口,却忘了 NSG 那一层。
三、执行带宽测试并解读结果
准备就绪后,先在服务端机器上启动 iPerf3 服务模式:
# 服务端:监听 5201 端口,等待客户端连接 cd C:\Tools\iperf3 .\iperf3.exe -s
然后到客户端机器上发起测试。最基本的命令是 iperf3 -c 服务端内网IP,默认单线程跑 10 秒 TCP 测试。想更真实地压满带宽,建议加上并行线程参数:
# 客户端:8 线程并行,测试 30 秒,输出详细间隔信息 .\iperf3.exe -c 10.0.1.4 -P 8 -t 30 -i 5
其中 -P 8 表示 8 个并行流,-t 30 是持续 30 秒,-i 5 是每 5 秒打印一次区间速率。测试结束后会输出一个 SUM 汇总行,这就是最终的内网带宽结果。比如显示 9.41 Gbits/sec,说明这台机器基本跑满了 10 Gbps 的标称带宽。
结果解读时重点关注三个指标:带宽(bandwidth)是核心数值;重传是 TCP 重传次数,数值偏高说明链路有丢包或拥塞;如果想测 UDP,用 -u -b 0 参数则可以看抖动和丢包率,这两个指标对实时音视频类业务尤为重要。建议每种配置至少跑三次取平均,避免偶发波动误导判断。
四、测试结果不达标的排查思路
如果实测带宽明显低于机型标称值,可以按以下顺序排查。第一,检查加速网络是否启用,未启用时重新开启需要先 deallocate 虚拟机再操作。第二,观察测试期间的 CPU 占用率,Windows 版 iPerf3 在高吞吐下单线程 CPU 可能先到瓶颈,多开几个并行线程往往立竿见影。第三,确认两台虚拟机在同一区域,跨区域流量走的是骨干网,延迟和带宽表现与内网完全不同。
另外还有一点容易被忽略:Azure 的带宽配额是双向分立的,入站和出站各有上限。iPerf3 默认是客户端上传(测服务端的入站),加 -R 参数反转方向再测一次,两个方向的数值可能差异明显,规划业务流量时要分别评估。通过这几轮测试和排查,你就能对 Azure 虚拟机的真实内网性能有一个清晰的量化认识,为后续的架构设计和容量规划提供可靠依据。