全部產品
Search
文件中心

Express Connect:物理專線網路效能測試方法

更新時間:Feb 05, 2024

物理專線接入完成後,您需要測試鏈路的效能,確保物理專線可以滿足您的業務需求。本文介紹通過Netperf和iPerf3工具測試物理專線效能的方法。

前提條件

  • 已完成物理專線的接入和路由配置,本地IDC(Internet Data Center)與阿里雲通過物理專線連通。
  • 準備1台IDC網路接入裝置:作為Netperf或iPerf3測試中的用戶端或伺服器端。

    本文中,IDC網路接入裝置的IP地址為192.168.100.1。

  • 準備8個專用網路ECS執行個體:作為Netperf或iPerf3測試中的用戶端或伺服器端。與IDC網路接入裝置之間建立控制串連,傳遞測試組態相關的資訊,以及測試結果。

    本文使用8個規格為ecs.se1.2xlarge,鏡像為centos_7_2_64_40G_base_20170222.vhd的ECS執行個體,IP地址為172.16.0.2~172.16.0.9。

搭建測試環境

安裝Netperf和iPerf3

完成以下操作,分別在IDC網路接入裝置和8個ECS執行個體上安裝Netperf和iPerf3。

說明 以下內容以在ECS執行個體安裝Netperf和iPerf3為例。
  1. 登入ECS執行個體。具體操作,請參見串連方式概述
  2. 安裝Netperf。
    1. 執行以下命令,下載Netperf安裝包。
      wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
    2. 依次執行以下命令,安裝Netperf。
      tar -zxvf netperf-2.5.0.tar.gz
      cd netperf-netperf-2.5.0
      ./configure 
      make 
      make install
    3. 執行netperf -Vnetserver -V,驗證安裝是否成功。
      系統回顯以下資訊時,表示安裝成功。
      Netperf version 2.5.0
  3. 安裝iPerf3。
    1. 執行以下命令,下載iPerf3。
      yum install git -y  
      git clone https://github.com/esnet/iperf
    2. 執行以下命令,安裝iPerf3。
      cd iperf
      ./configure && make && make install && cd ..
      cd src
      ADD_PATH="$(pwd)" 
      PATH="${ADD_PATH}:${PATH}"
      export PATH
    3. 執行iperf3 -v命令,驗證安裝是否成功。
      系統回顯以下資訊時,表示安裝成功。
      iperf 3.10.1+ (cJSON 1.7.13)
      Linux iZbp15y0zrhx2ry6vo1b4wZ 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64

開啟多隊列功能

假設與物理專線相連的介面為eth0,在IDC網路接入裝置執行ethtool -L eth0 combined 4命令,開啟多隊列功能。

執行命令後,系統回顯以下資訊:

echo "ff" > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo "ff" > /sys/class/net/eth0/queues/rx-1/rps_cpus
echo "ff" > /sys/class/net/eth0/queues/rx-2/rps_cpus
echo "ff" > /sys/class/net/eth0/queues/rx-3/rps_cpus

使用Netperf工具測試物理專線的包轉寄效能

Netperf概述

Netperf安裝完成後會建立兩個命令列工具:netserver(服務端:接收端工具)和netperf(用戶端:發送端工具),主要參數說明如下表所示。

工具名稱主要參數參數說明
netserver-p監聽的連接埠號碼。
netperf-HIDC網路接入裝置或ECS執行個體的IP地址。
-pIDC網路接入裝置或ECS執行個體的連接埠。
-l已耗用時間。
-t發送報文的協議類型:TCP_STREAM或UDP_STREAM。

推薦使用UDP_STREAM。

-m資料包大小。
  • 測試pps(packet per second)時,建議設定為1。
  • 測試bps(bit per second)時,建議設定為1400。

測試IDC網路接入裝置作為服務端的包轉寄效能

  1. 在IDC網路接入裝置啟動netserver進程,指定不同連接埠。
     netserver -p 11256
     netserver -p 11257 
     netserver -p 11258 
     netserver -p 11259 
     netserver -p 11260 
     netserver -p 11261 
     netserver -p 11262 
     netserver -p 11263
  2. 分別在8個ECS執行個體上執行netperf -H server_ip -p port 6 -t UDP_STREAM -l 300 -- -m 1命令,啟動netperf進程,並指定到IDC網路接入裝置的不同netserver連接埠。
    • 測試pps時,執行命令樣本如下所示:
      netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一個ECS執行個體
      netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1 #第二個ECS執行個體
      netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1 #第三個ECS執行個體
      netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1 #第四個ECS執行個體
      netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1 #第五個ECS執行個體
      netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1 #第六個ECS執行個體
      netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1 #第七個ECS執行個體
      netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1 #第八個ECS執行個體
    • 測試bps時,執行命令樣本如下所示:
      netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一個ECS執行個體
      netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二個ECS執行個體
      netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三個ECS執行個體
      netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四個ECS執行個體
      netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五個ECS執行個體
      netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六個ECS執行個體
      netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七個ECS執行個體
      netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八個ECS執行個體

測試IDC網路接入裝置作為用戶端的包轉寄效能

  1. 分別在8個ECS執行個體上執行netserver -p 11256命令,啟動netserver進程,並指定連接埠。
  2. 在IDC網路接入裝置內執行netperf -H ECS_ip -p port -t UDP_STREAM -l 300 -- -m 1命令,啟動8個netperf進程,並指定為不同的ECS執行個體IP地址。
    • 測試pps時,執行命令樣本如下所示:
       netperf -H 172.16.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一個ECS執行個體
       netperf -H 172.16.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第二個ECS執行個體
       netperf -H 172.16.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第三個ECS執行個體
       netperf -H 172.16.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第四個ECS執行個體
       netperf -H 172.16.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第五個ECS執行個體
       netperf -H 172.16.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第六個ECS執行個體
       netperf -H 172.16.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第七個ECS執行個體
       netperf -H 172.16.0.9 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第八個ECS執行個體
    • 測試bps時,執行命令樣本如下所示:
       netperf -H 172.16.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一個ECS執行個體
       netperf -H 172.16.0.3 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二個ECS執行個體
       netperf -H 172.16.0.4 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三個ECS執行個體
       netperf -H 172.16.0.5 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四個ECS執行個體
       netperf -H 172.16.0.6 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五個ECS執行個體
       netperf -H 172.16.0.7 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六個ECS執行個體
       netperf -H 172.16.0.8 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七個ECS執行個體
       netperf -H 172.16.0.9 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八個ECS執行個體

分析測試結果

用戶端的netperf進程執行完畢後,會顯示以下結果。通過發送成功的報文數除以測試時間,計算出測試鏈路的pps,即pps=發送成功的報文數÷測試時間。

Socket  Message  Elapsed      Messages
Size    Size     Time         Okay Errors   Throughput
bytes   bytes    secs            #      #   10^6bits/sec
124928       1   10.00     4532554      0       3.63
212992           10.00     1099999              0.88

顯示結果中各欄位含義如下表所示。

欄位含義
Socket Size緩衝區大小
Message Size資料包大小(Byte)
Elapsed Time測試時間(s)
Message Okay發送成功的報文數
Message Errors發送失敗的報文數
Throughput網路輸送量(Mbps)

使用iPerf3測試物理專線的頻寬

iPerf3概述

iPerf3的主要參數說明如下表所示。

主要參數參數說明
-s服務端專用參數,表示iPerf3以服務端模式運行。
-c用戶端專用參數,表示iPerf3以用戶端模式運行。
-i設定每次報告之間的時間間隔,單位為秒。
-p
  • 服務端:指定服務端監聽的連接埠,預設為5201,同時監聽TCP/UDP。
  • 用戶端:指定用戶端串連服務端的連接埠,預設為5201。如果同時有-u參數,表示通過UDP發起串連,否則預設使用TCP串連。
-u表示使用UDP協議發送報文。若不指定該參數則表示使用TCP協議。
-l設定讀寫緩衝區的長度。通常測試包轉寄效能時建議該值設為16,測試頻寬時建議該值設為1400。
-bUDP模式使用的頻寬,單位bit/s。
-t設定傳輸的總時間。iPerf3在指定時間內,重複發送指定長度資料包的時間,預設值為10秒。
-A設定CPU親和性,可以將iPerf3進程綁定對應編號的邏輯CPU,避免iPerf3進程在不同的CPU間被調度。

測試IDC網路接入裝置作為服務端的頻寬

  1. 在IDC網路接入裝置上執行以下命令,以服務端模式啟動iPerf3進程,指定不同連接埠。
     iperf3 -s -i 1 -p 16001
     iperf3 -s -i 1 -p 16002
     iperf3 -s -i 1 -p 16003
     iperf3 -s -i 1 -p 16004
     iperf3 -s -i 1 -p 16005
     iperf3 -s -i 1 -p 16006
     iperf3 -s -i 1 -p 16007
     iperf3 -s -i 1 -p 16008
  2. 分別在8個ECS執行個體上執行iperf3 -u -l 16 -b 100m -t 120 -c server_ip -i 1 -p port -A 1命令,以用戶端模式啟動iPerf3進程,並指定到IDC網路接入裝置的不同連接埠。
    執行命令樣本如下:
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16001 -A 1 #第一個ECS執行個體
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16002 -A 2 #第二個ECS執行個體
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16003 -A 3 #第三個ECS執行個體
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16004 -A 4 #第四個ECS執行個體
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16005 -A 5 #第五個ECS執行個體
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16006 -A 6 #第六個ECS執行個體
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16007 -A 7 #第七個ECS執行個體
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16008 -A 8 #第八個ECS執行個體

測試IDC網路接入裝置作為用戶端的頻寬

  1. 分別在8個ECS執行個體上執行iperf3 -s -i 1 -p 16001命令,以服務端模式啟動iPerf3進程並指定連接埠。
  2. 在IDC網路接入裝置上執行以下命令,以用戶端模式啟動8個iPerf3進程。
     iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.2 -i 1 -p 16001 -A 1
     iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.3 -i 1 -p 16001 -A 2
     iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.4 -i 1 -p 16001 -A 3
     iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.5 -i 1 -p 16001 -A 4
     iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.6 -i 1 -p 16001 -A 5
     iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.7 -i 1 -p 16001 -A 6
     iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.8 -i 1 -p 16001 -A 7
     iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.9 -i 1 -p 16001 -A 8

分析測試結果

用戶端的iPerf3進程執行完畢後,會顯示以下結果。通過將對端收到的包數除以時間,計算出測試鏈路的pps,即pps=對端收到的包÷時間。

[ ID]  Interval        Transfer    Bandwidth      Jitter    Lost/Total Datagrams
[  4]  0.00-10.00 sec  237 MBytes  199 Mbits/sec  0.027 ms  500/30352 (1.6%)
[  4]  Sent 30352  datagrams
說明 建議您在服務端通過sar命令來統計實際收到的包並作為實際結果,例如:sar -n DEV 1 320

顯示結果中各欄位含義如下表所示。

欄位含義
Transfer傳輸的總資料量
Bandwidth頻寬大小
Jitter抖動
Lost/Total Datagrams丟失報文數/總報文數(丟包率)