物理專線接入完成后,您需要測(cè)試鏈路的性能,確保物理專線可以滿足您的業(yè)務(wù)需求。本文介紹通過Netperf和iPerf3工具測(cè)試物理專線性能的方法。

前提條件

  • 已完成物理專線的接入和路由配置,本地IDC(Internet Data Center)與阿里云通過物理專線連通。
  • 準(zhǔn)備1臺(tái)IDC網(wǎng)絡(luò)接入設(shè)備:作為Netperf或iPerf3測(cè)試中的客戶端或服務(wù)器端。

    本文中,IDC網(wǎng)絡(luò)接入設(shè)備的IP地址為192.168.100.1。

  • 準(zhǔn)備8個(gè)專有網(wǎng)絡(luò)ECS實(shí)例:作為Netperf或iPerf3測(cè)試中的客戶端或服務(wù)器端。與IDC網(wǎng)絡(luò)接入設(shè)備之間建立控制連接,傳遞測(cè)試配置相關(guān)的信息,以及測(cè)試結(jié)果。

    本文使用8個(gè)規(guī)格為ecs.se1.2xlarge,鏡像為centos_7_2_64_40G_base_20170222.vhd的ECS實(shí)例,IP地址為172.16.0.2~172.16.0.9。

搭建測(cè)試環(huán)境

安裝Netperf和iPerf3

完成以下操作,分別在IDC網(wǎng)絡(luò)接入設(shè)備和8個(gè)ECS實(shí)例上安裝Netperf和iPerf3。

說明 以下內(nèi)容以在ECS實(shí)例安裝Netperf和iPerf3為例。
  1. 登錄ECS實(shí)例。具體操作,請(qǐng)參見連接方式概述
  2. 安裝Netperf。
    1. 執(zhí)行以下命令,下載Netperf安裝包。
      wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
    2. 依次執(zhí)行以下命令,安裝Netperf。
      tar -zxvf netperf-2.5.0.tar.gz
      cd netperf-netperf-2.5.0
      ./configure 
      make 
      make install
    3. 執(zhí)行netperf -Vnetserver -V,驗(yàn)證安裝是否成功。
      系統(tǒng)回顯以下信息時(shí),表示安裝成功。
      Netperf version 2.5.0
  3. 安裝iPerf3。
    1. 執(zhí)行以下命令,下載iPerf3。
      yum install git -y  
      git clone https://github.com/esnet/iperf
    2. 執(zhí)行以下命令,安裝iPerf3。
      cd iperf
      ./configure && make && make install && cd ..
      cd src
      ADD_PATH="$(pwd)" 
      PATH="${ADD_PATH}:${PATH}"
      export PATH
    3. 執(zhí)行iperf3 -v命令,驗(yàn)證安裝是否成功。
      系統(tǒng)回顯以下信息時(shí),表示安裝成功。
      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

開啟多隊(duì)列功能

假設(shè)與物理專線相連的接口為eth0,在IDC網(wǎng)絡(luò)接入設(shè)備執(zhí)行ethtool -L eth0 combined 4命令,開啟多隊(duì)列功能。

執(zhí)行命令后,系統(tǒng)回顯以下信息:

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工具測(cè)試物理專線的包轉(zhuǎn)發(fā)性能

Netperf概述

Netperf安裝完成后會(huì)創(chuàng)建兩個(gè)命令行工具:netserver(服務(wù)端:接收端工具)和netperf(客戶端:發(fā)送端工具),主要參數(shù)說明如下表所示。

工具名稱主要參數(shù)參數(shù)說明
netserver-p監(jiān)聽的端口號(hào)。
netperf-HIDC網(wǎng)絡(luò)接入設(shè)備或ECS實(shí)例的IP地址。
-pIDC網(wǎng)絡(luò)接入設(shè)備或ECS實(shí)例的端口。
-l運(yùn)行時(shí)間。
-t發(fā)送報(bào)文的協(xié)議類型:TCP_STREAM或UDP_STREAM。

推薦使用UDP_STREAM。

-m數(shù)據(jù)包大小。
  • 測(cè)試pps(packet per second)時(shí),建議設(shè)置為1。
  • 測(cè)試bps(bit per second)時(shí),建議設(shè)置為1400。

測(cè)試IDC網(wǎng)絡(luò)接入設(shè)備作為服務(wù)端的包轉(zhuǎn)發(fā)性能

  1. 在IDC網(wǎng)絡(luò)接入設(shè)備啟動(dòng)netserver進(jìn)程,指定不同端口。
     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個(gè)ECS實(shí)例上執(zhí)行netperf -H server_ip -p port 6 -t UDP_STREAM -l 300 -- -m 1命令,啟動(dòng)netperf進(jìn)程,并指定到IDC網(wǎng)絡(luò)接入設(shè)備的不同netserver端口。
    • 測(cè)試pps時(shí),執(zhí)行命令示例如下所示:
      netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1 #第二個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1 #第三個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1 #第四個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1 #第五個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1 #第六個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1 #第七個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1 #第八個(gè)ECS實(shí)例
    • 測(cè)試bps時(shí),執(zhí)行命令示例如下所示:
      netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七個(gè)ECS實(shí)例
      netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八個(gè)ECS實(shí)例

測(cè)試IDC網(wǎng)絡(luò)接入設(shè)備作為客戶端的包轉(zhuǎn)發(fā)性能

  1. 分別在8個(gè)ECS實(shí)例上執(zhí)行netserver -p 11256命令,啟動(dòng)netserver進(jìn)程,并指定端口。
  2. 在IDC網(wǎng)絡(luò)接入設(shè)備內(nèi)執(zhí)行netperf -H ECS_ip -p port -t UDP_STREAM -l 300 -- -m 1命令,啟動(dòng)8個(gè)netperf進(jìn)程,并指定為不同的ECS實(shí)例IP地址。
    • 測(cè)試pps時(shí),執(zhí)行命令示例如下所示:
       netperf -H 172.16.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一個(gè)ECS實(shí)例
       netperf -H 172.16.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第二個(gè)ECS實(shí)例
       netperf -H 172.16.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第三個(gè)ECS實(shí)例
       netperf -H 172.16.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第四個(gè)ECS實(shí)例
       netperf -H 172.16.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第五個(gè)ECS實(shí)例
       netperf -H 172.16.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第六個(gè)ECS實(shí)例
       netperf -H 172.16.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第七個(gè)ECS實(shí)例
       netperf -H 172.16.0.9 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第八個(gè)ECS實(shí)例
    • 測(cè)試bps時(shí),執(zhí)行命令示例如下所示:
       netperf -H 172.16.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一個(gè)ECS實(shí)例
       netperf -H 172.16.0.3 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二個(gè)ECS實(shí)例
       netperf -H 172.16.0.4 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三個(gè)ECS實(shí)例
       netperf -H 172.16.0.5 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四個(gè)ECS實(shí)例
       netperf -H 172.16.0.6 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五個(gè)ECS實(shí)例
       netperf -H 172.16.0.7 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六個(gè)ECS實(shí)例
       netperf -H 172.16.0.8 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七個(gè)ECS實(shí)例
       netperf -H 172.16.0.9 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八個(gè)ECS實(shí)例

分析測(cè)試結(jié)果

客戶端的netperf進(jìn)程執(zhí)行完畢后,會(huì)顯示以下結(jié)果。通過發(fā)送成功的報(bào)文數(shù)除以測(cè)試時(shí)間,計(jì)算出測(cè)試鏈路的pps,即pps=發(fā)送成功的報(bào)文數(shù)÷測(cè)試時(shí)間。

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

顯示結(jié)果中各字段含義如下表所示。

字段含義
Socket Size緩沖區(qū)大小
Message Size數(shù)據(jù)包大小(Byte)
Elapsed Time測(cè)試時(shí)間(s)
Message Okay發(fā)送成功的報(bào)文數(shù)
Message Errors發(fā)送失敗的報(bào)文數(shù)
Throughput網(wǎng)絡(luò)吞吐量(Mbps)

使用iPerf3測(cè)試物理專線的帶寬

iPerf3概述

iPerf3的主要參數(shù)說明如下表所示。

主要參數(shù)參數(shù)說明
-s服務(wù)端專用參數(shù),表示iPerf3以服務(wù)端模式運(yùn)行。
-c客戶端專用參數(shù),表示iPerf3以客戶端模式運(yùn)行。
-i設(shè)置每次報(bào)告之間的時(shí)間間隔,單位為秒。
-p
  • 服務(wù)端:指定服務(wù)端監(jiān)聽的端口,默認(rèn)為5201,同時(shí)監(jiān)聽TCP/UDP。
  • 客戶端:指定客戶端連接服務(wù)端的端口,默認(rèn)為5201。如果同時(shí)有-u參數(shù),表示通過UDP發(fā)起連接,否則默認(rèn)使用TCP連接。
-u表示使用UDP協(xié)議發(fā)送報(bào)文。若不指定該參數(shù)則表示使用TCP協(xié)議。
-l設(shè)置讀寫緩沖區(qū)的長度。通常測(cè)試包轉(zhuǎn)發(fā)性能時(shí)建議該值設(shè)為16,測(cè)試帶寬時(shí)建議該值設(shè)為1400。
-bUDP模式使用的帶寬,單位bit/s。
-t設(shè)置傳輸?shù)目倳r(shí)間。iPerf3在指定時(shí)間內(nèi),重復(fù)發(fā)送指定長度數(shù)據(jù)包的時(shí)間,默認(rèn)值為10秒。
-A設(shè)置CPU親和性,可以將iPerf3進(jìn)程綁定對(duì)應(yīng)編號(hào)的邏輯CPU,避免iPerf3進(jìn)程在不同的CPU間被調(diào)度。

測(cè)試IDC網(wǎng)絡(luò)接入設(shè)備作為服務(wù)端的帶寬

  1. 在IDC網(wǎng)絡(luò)接入設(shè)備上執(zhí)行以下命令,以服務(wù)端模式啟動(dòng)iPerf3進(jìn)程,指定不同端口。
     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個(gè)ECS實(shí)例上執(zhí)行iperf3 -u -l 16 -b 100m -t 120 -c server_ip -i 1 -p port -A 1命令,以客戶端模式啟動(dòng)iPerf3進(jìn)程,并指定到IDC網(wǎng)絡(luò)接入設(shè)備的不同端口。
    執(zhí)行命令示例如下:
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16001 -A 1 #第一個(gè)ECS實(shí)例
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16002 -A 2 #第二個(gè)ECS實(shí)例
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16003 -A 3 #第三個(gè)ECS實(shí)例
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16004 -A 4 #第四個(gè)ECS實(shí)例
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16005 -A 5 #第五個(gè)ECS實(shí)例
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16006 -A 6 #第六個(gè)ECS實(shí)例
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16007 -A 7 #第七個(gè)ECS實(shí)例
     iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16008 -A 8 #第八個(gè)ECS實(shí)例

測(cè)試IDC網(wǎng)絡(luò)接入設(shè)備作為客戶端的帶寬

  1. 分別在8個(gè)ECS實(shí)例上執(zhí)行iperf3 -s -i 1 -p 16001命令,以服務(wù)端模式啟動(dòng)iPerf3進(jìn)程并指定端口。
  2. 在IDC網(wǎng)絡(luò)接入設(shè)備上執(zhí)行以下命令,以客戶端模式啟動(dòng)8個(gè)iPerf3進(jìn)程。
     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

分析測(cè)試結(jié)果

客戶端的iPerf3進(jìn)程執(zhí)行完畢后,會(huì)顯示以下結(jié)果。通過將對(duì)端收到的包數(shù)除以時(shí)間,計(jì)算出測(cè)試鏈路的pps,即pps=對(duì)端收到的包÷時(shí)間。

[ 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
說明 建議您在服務(wù)端通過sar命令來統(tǒng)計(jì)實(shí)際收到的包并作為實(shí)際結(jié)果,例如:sar -n DEV 1 320

顯示結(jié)果中各字段含義如下表所示。

字段含義
Transfer傳輸?shù)目倲?shù)據(jù)量
Bandwidth帶寬大小
Jitter抖動(dòng)
Lost/Total Datagrams丟失報(bào)文數(shù)/總報(bào)文數(shù)(丟包率)