物理專線接入完成後,您需要需要對物理專線的效能進行測試,確保物理專線可以滿足您的業務需求。

前提條件

在測試前,確保您完成以下環境準備:

  • 完成物理專線接入和路由配置。本地IDC與VPC必須由一根專線連通。

  • 準備1台本地IDC網路接入裝置: 被壓力測試網路PPS的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

Netperf是一個網路效能的測量工具,主要針對基於TCP或UDP傳輸。

完成以下操作,分別在IDC網路裝置和8台ECS執行個體上安裝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 -hnetserver -h驗證安裝是否成功。

安裝iPerf3

Iperf3是一個網路效能測試工具。Iperf3可以測試最大TCP和UDP頻寬效能。

完成以下操作,分別在IDC網路裝置和8台ECS執行個體上安裝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 -h,驗證安裝是否成功。

開啟多隊列功能

在IDC網路接入裝置內部執行以下命令,開啟多隊列功能。(假設與物理專線相連的介面為eth0。)

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安裝完成後會建立兩個命令列工具:netserver(伺服器端)和netperf(用戶端)。兩個工具的主要參數說明如下表所示。

工具名稱 主要參數 參數說明
Netserver(伺服器端:接收端工具) -p 監聽的的連接埠號碼。
netperf(用戶端:發送端工具) -H IDC網路接入裝置或VPC伺服器的IP地址。
-p IDC網路接入裝置或VPC伺服器的連接埠。
-l 已耗用時間。
-t 發送報文的協議類型:TCP_STREAM 或 UDP_STREAM。

建議使用UDP_STREAM。

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

測試收方向

  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. 在VPC內的8台ECS執行個體上啟動netperf進程,分別指定到IDC網路接入裝置的不同netserver連接埠。
     netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台
    netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1 #第二台
    netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1 #第三台
    netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1 #第四台
    netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1 #第五台
    netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1 #第六台
    netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1 #第七台
    netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1 #第八台
  3. 如果需要測試bps,將上述命令修改為:
     netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台
    netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二台
    netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三台
    netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四台
    netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五台
    netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六台
    netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七台
    netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八台

測試發方向

  1. 在8台VPC ECS執行個體內啟動netserver進程,指定連接埠,如下所示:
    netserver -p 11256
  2. 在IDC網路接入裝置內啟動8個netperf進程,指定為不同IP地址。
     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執行個體
  3. 如果需要測試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執行個體

測試發方向

  1. 在8台VPC ECS執行個體內啟動netserver進程,指定連接埠,如下所示:
    netserver -p 11256
  2. 在IDC網路接入裝置內啟動8個netperf進程,指定為不同IP地址。
     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執行個體
  3. 如果需要測試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執行個體

分析測試結果

用戶端的netperf進程執行完畢後,會顯示如下結果。
   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 網路輸送量(Mbit/s)

通過發送成功的報文數除以測試時間,即可算出測試鏈路的pps,即pps=發送成功的報文數/測試時間。

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

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

工具名稱 主要參數 參數說明
iPerf3 -s 表示作為伺服器端接收資料。
-i 設定每次報告之間的時間間隔,單位為秒。
-p 指定服務端的監聽連接埠。
-u 表示使用UDP協議發送報文。若不指定該參數則表示使用TCP協議。
-l 設定讀寫緩衝區的長度。通常測試包轉寄效能是建議該值設為16,測試頻寬是建議該值設為1400。
-b UDP模式使用的頻寬,單位bits/s。
-t 設定傳輸的總時間。Iperf在指定的時間內,重複的發送指定長度的資料包,預設值為10秒。
-A 設定CPU親和性,可以將的iPerf3進程綁定對應編號的邏輯CPU,避免iPerf3的進程在不同的CPU間被調度。

測試收方向

  1. 在IDC網路接入裝置中以server模式啟動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. 在VPC ECS執行個體上以client模式啟動iperf3進程,分別指定到IDC網路接入裝置的不同連接埠。
     iPerf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16001 -A 1
     iPerf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16002 -A 2
     iPerf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16003 -A 3
     iPerf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16004 -A 4
     iPerf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16005 -A 5
     iPerf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16006 -A 6
     iPerf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16007 -A 7
     iPerf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16008 -A 8

測試發方向

  1. 在每個VPC ECS執行個體上server模式啟動iperf3進程並指定連接埠。
     iPerf3 -s -i 1 -p 16001
  2. 在IDC接入裝置上以client模式啟動8個iperf3進程,-c的值為各個陪練機的IP地址。
     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進程執行完畢後,會顯示如下結果。

[ 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
顯示結果中各欄位含義如下表所示。
欄位 含義
Transfer 傳輸的總資料量
Bandwidth 頻寬大小
Jitter 抖動
Lost/Total Datagrams 丟失報文數/總報文數(丟包率)

PPS=對端收到的包/時間

说明 建議您在server端運行 sar命令來統計實際收到的包並作為實際結果,例如: sar -n DEV 1 320

阿里雲側速率限制

除了物理專線的限制外,VPC與本機資料中心之間的通訊還受到以下限制。

  • OSS的讀寫速率上限為5Gbit/s。
  • 為了提高可靠性,從VPC到邊界路由器(VBR)方向的單個hash流,在阿里雲內部被限速為“Express Connect規格頻寬/12”。例如VBR到VPC的頻寬為large1,即1Gbps頻寬,則單個hash流的最大頻寬為85Mbps。

    hash流定義:源IP地址、源連接埠、傳輸層協議、目的IP地址和目的連接埠,這五個量組成的一個集合所定義的資料流。 例如:“192.168.1.1 10000 TCP 121.14.88.76 80” 就構成了一個hash流。即一個IP地址為192.168.1.1的終端通過連接埠10000,利用TCP協議,和IP地址為121.14.88.76,連接埠為80的終端進行的串連就是一個hash流。