测试 Azure VM 之间的网络延迟

本文介绍如何使用公开可用的工具 Latte(用于 Windows)或 SockPerf(用于 Linux)测试 Azure 虚拟机 (VM) 之间的网络延迟。

为获得最准确的结果,应使用专为该任务设计的工具衡量 VM 网络延迟,并排除其他类型的延迟,例如应用程序延迟。 Latte 和 SockPerf 专注于传输控制协议 (TCP) 和用户数据报协议 (UDP) 流量,可提供最相关的网络延迟结果。 大多数应用程序都使用这些协议,此流量对应用程序性能的影响最大。

许多其他常见的网络延迟测试工具(如 Ping)不会衡量 TCP 或 UDP 流量。 Ping 之类的工具使用 Internet 控制消息协议 (ICMP),而应用程序不使用这些协议。 ICMP 流量的处理方式与应用程序流量不同,不会直接影响应用程序性能。 ICMP 测试结果不会直接应用于使用 TCP 和 UDP 的工作负载。

Latte 和 SockPerf 仅衡量 TCP 或 UDP 有效负载传递时间。 这些工具使用以下方法来衡量两台物理计算机或虚拟计算机之间的网络延迟:

  1. 通过将一方指定为发送方,一方指定为接收方,在计算机之间创建双向通信通道。
  2. 在两个方向上发送和接收数据包,并衡量往返时间 (RTT)。

优化网络延迟的提示和最佳做法

若要针对网络延迟优化 VM,请在创建 VM 时遵循以下建议:

  • 使用最新版本的 Windows 或 Linux。
  • 启用“加速网络”以提高性能。
  • 使用 Azure 邻近放置组部署 VM。
  • 创建更大的 VM 以提高性能。

使用以下最佳做法来测试和分析网络延迟:

  1. 完成网络 VM 的部署、配置和优化后,在部署的 VM 之间执行基线网络延迟测量,以建立基准。

  2. 测试更改以下任何组件对网络延迟的影响:

    • 操作系统 (OS) 或网络堆栈软件,包括配置更改。
    • VM 部署方法,例如部署到可用性区域或邻近放置组 (PPG)。
    • VM 属性,例如加速网络或大小更改。
    • 虚拟网络配置,例如路由或筛选更改。
  3. 在进行受控更改之前,始终将新的测试结果与基线或最新测试结果进行比较。

  4. 每当观察或部署更改时,请重复测试。

使用 Latte 或 SockPerf 测试 VM

使用以下过程通过 Latte(用于 Windows)或 SockPerf(用于 Linux)安装和测试网络延迟。

准备 VM

发送方接收方 Linux VM 上,运行以下命令来准备 SockPerf,具体取决于 Linux 发行版。

  • Ubuntu:

    #Ubuntu - Install Git and other helpful tools
    sudo apt-get install build-essential -y
    sudo apt-get install git -y -q
    sudo apt-get install -y autotools-dev
    sudo apt-get install -y automake
    sudo apt-get install -y autoconf
    sudo apt-get install -y libtool
    sudo apt update
    sudo apt upgrade
    
  • SUSE:

    #SUSE - Install Git and other helpful tools
    sudo zypper install gcc
    sudo zypper install git
    sudo zypper install gcc-c++
    sudo zypper install ncurses-devel
    sudo zypper install automake
    sudo zypper install autoconf
    sudo zypper install libtool
    sudo zypper install make
    

复制、编译和安装 SockPerf

运行以下命令来复制、编译和安装 SockPerf:

#Bash - all distros

#From bash command line (assumes Git is installed)
git clone https://github.com/mellanox/sockperf
cd sockperf/
./autogen.sh
./configure --prefix=

#make is slow, may take several minutes
make

#make install is fast
sudo make install

在 VM 上运行 SockPerf

  1. SockPerf 安装完成后,在接收方 VM 上启动 SockPerf。 可输入任意可用端口号。 以下示例使用端口 12345。 将 10.0.0.4 的示例 IP 地址替换为接收方 VM 的 IP 地址。

    #Server/Receiver for IP 10.0.0.4:
    sudo sockperf sr --tcp -i 10.0.0.4 -p 12345
    
  2. 现在接收方正在侦听,请在发送方或客户端计算机上运行以下命令,将数据包发送到侦听端口上的接收方,在本例中为 12345

    #Client/Sender for IP 10.0.0.4:
    sockperf ping-pong -i 10.0.0.4 --tcp -m 350 -t 101 -p 12345 --full-rtt
    
    • 选项 -t 设置测试时间(以秒为单位)。 大约 100 秒就足以返回具有代表性的结果。
    • -m 表示消息大小(以字节为单位)。 平均数据包通常为 350 字节消息大小。 可以调整大小以更准确地表示 VM 的工作负载。
  3. 等待结果。 根据虚拟机之间的距离,迭代次数会有所不同。 考虑先运行大约五秒的短时间测试以使测试成功,然后再运行较长时间的测试。

后续步骤