網絡性能測試方法


1. 准備環境

您需要准備:

  • 測試機:被壓力測試網絡 PPS 的 ECS 實例,可作為 Netperf 或 iperf3 測試中的 client 端或 server 端。
  • 陪練機:ECS 實例,作為 Netperf 測試或 iperf3 測試中的 client 端或 server 端,與測試機之間建立控制連接,傳遞測試配置相關的信息,以及測試結果。

所有 實例必須在同一個安全組內。

1.1. 准備 1 台測試機

  • 鏡像:centos_7_2_64_40G_base_20170222.vhd
  • 規格:ecs.se1.14xlarge
  • 數量:1
  • 虛擬機名稱:i-test-vm(假設)

假設測試機 IP 地址為:172.0.0.1。

1.2. 准備 8 台陪練機

  • 鏡像:centos_7_2_64_40G_base_20170222.vhd
  • 規格:ecs.se1.14xlarge
  • 數量:8
  • 虛擬機名稱:i-partnerVm-{1-8}

假設 8 台陪練機的 IP 地址為:172.0.0.2 − 172.0.0.9。

1.3. 安裝 Netperf

按以下步驟在測試機和陪練機上安裝 Netperf。

  1. 運行以下命令下載 Netperf。

     
    1. wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
  2. 運行以下命令安裝 Netperf。

     
    1. tar -zxvf netperf-2.5.0.tar.gz
    2. cd netperf-netperf-2.5.0
    3. ./configure && make && make install && cd ..
  3. 運行 netperf -h 和 netserver -h 驗證安裝是否成功。

1.4. 安裝 iperf3

按以下步驟在測試機和陪練機上安裝 iperf3 工具。

  1. 運行以下命令下載 iperf3。

     
    1. yum install git -y
    2. git clone https://github.com/esnet/iperf
  2. 運行以下命令安裝 iperf3。

     
    1. cd iperf
    2. ./configure && make && make install && cd ..
    3. cd src
    4. ADD_PATH="$(pwd)"
    5. PATH="${ADD_PATH}:${PATH}"
    6. export PATH
  3. 運行 iperf3 -h,驗證安裝是否成功。

1.5. 開啟多隊列功能

在測試機內部執行以下命令(假設需要開啟的網卡是 eth0)開啟多隊列功能。

 
  1. ethtool -L eth0 combined 4
  2. echo "ff" > /sys/class/net/eth0/queues/rx-0/rps_cpus
  3. echo "ff" > /sys/class/net/eth0/queues/rx-1/rps_cpus
  4. echo "ff" > /sys/class/net/eth0/queues/rx-2/rps_cpus
  5. echo "ff" > /sys/class/net/eth0/queues/rx-3/rps_cpus

2. 使用 Netperf 工具測試網絡性能

2.1. 介紹工具相關參數

Netperf 安裝完成后,會生成 2 個工具:netserver 和 netperf。以下為 2 個工具的主要參數。

工具名稱 工具說明 主要參數 參數說明
netserver 接收端工具(server 端) -p 端口號
netperf 發送端工具(client 端) -H 指定 ECS 實例的 IP 地址。
-p 指定 ECS 實例的端口。
-l 指定運行時間。
-t 指定發包協議類型:TCP_STREAM 或 UDP_STREAM。建議使用 UDP_STREAM。
-m 指定數據包大小。
  • 測試 PPS 時,該值為 1。
  • 測試 bps(bit per second)時,該值為 1400。

2.2. 測試收方向

  1. 在測試機內啟動 netserver 進程,-p 指定不同端口:

     
    1. netserver -p 11256
    2. netserver -p 11257
    3. netserver -p 11258
    4. netserver -p 11259
    5. netserver -p 11260
    6. netserver -p 11261
    7. netserver -p 11262
    8. netserver -p 11263
  2. 在陪練機內啟動 netperf 進程,分別指定到測試機的不同 netserver 端口。

     
    1. netperf -H 172.0.0.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台
    2. netperf -H 172.0.0.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1 #第二台
    3. netperf -H 172.0.0.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1 #第三台
    4. netperf -H 172.0.0.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1 #第四台
    5. netperf -H 172.0.0.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1 #第五台
    6. netperf -H 172.0.0.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1 #第六台
    7. netperf -H 172.0.0.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1 #第七台
    8. netperf -H 172.0.0.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1 #第八台

    如果需要測試 bps,上述命令應該為:

     
    1. netperf -H 172.0.0.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台
    2. netperf -H 172.0.0.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二台
    3. netperf -H 172.0.0.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三台
    4. netperf -H 172.0.0.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四台
    5. netperf -H 172.0.0.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五台
    6. netperf -H 172.0.0.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六台
    7. netperf -H 172.0.0.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七台
    8. netperf -H 172.0.0.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八台

2.3. 測試發方向

  1. 在所有陪練機內啟動 1 個 netserver 進程,-p 指定端口。

     
    1. netserver -p 11256
  2. 在測試機內啟動 8 個 netperf 進程,-H指定為不同 IP 地址。

     
    1. netperf -H 172.0.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台
    2. netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第二台
    3. netperf -H 172.0.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第三台
    4. netperf -H 172.0.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第四台
    5. netperf -H 172.0.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第五台
    6. netperf -H 172.0.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第六台
    7. netperf -H 172.0.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第七台
    8. netperf -H 172.0.0.9 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第八台

    如果需要測試 bps,上述命令應該為:

     
    1. netperf -H 172.0.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台
    2. netperf -H 172.0.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第二台
    3. netperf -H 172.0.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第三台
    4. netperf -H 172.0.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第四台
    5. netperf -H 172.0.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第五台
    6. netperf -H 172.0.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第六台
    7. netperf -H 172.0.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第七台
    8. netperf -H 172.0.0.9 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第八台

2.4. 分析測試結果

最終發送端每個 netperf 進程會輸出如下結果,第一條數據行為發包信息概覽如下。

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

輸出結果中各字段含義解釋如下表所示。

字段數據 含義
124928 緩沖區大小
1 數據包大小(Byte)
10.00 測試時間(s)
4532554 數據包成功數
0 失敗數
3.63 網絡吞吐量(Mbit/s)

PPS = 數據包成功數/測試時間

通常我們建議在 server 端運行 sar 來統計實際收到的包並作為實際結果,具體命令為: sar -n DEV 1 320

3. 使用 iperf3 工具測試網絡性能

3.1. 介紹工具相關參數

iperf3 安裝完成后,在對應的 src 的。以下為工具的主要參數。

工具名稱 工具說明 主要參數 參數說明
iperf3 收發一體 -s 表示作為 server 端接收包。
-i 間隔多久輸出信息流量信息,默認單位為秒。
-p 指定服務的監聽端口。
-u 表示采用 UDP 協議發送報文,不帶該參數表示采用 TCP 協議
-l 表示包大小,默認單位為 Byte。通常測試 PPS 的時候該值為 16,測試 bps 時該值為 1400。
-b 設定流量帶寬,可選單位包括:k/m/g。
-t 流量的持續時間,默認單位為秒。
-A CPU 親和性,可以將具體的 iperf3 進程綁定對應編號的邏輯 CPU,避免 iperf 進程在不同的 CPU 間調度。

3.2. 測試收方向

  1. 在測試機中以 server 模式啟動 iperf3 進程,-p 指定不同端口:

     
    1. iperf3 -s -i 1 -p 16001
    2. iperf3 -s -i 1 -p 16002
    3. iperf3 -s -i 1 -p 16003
    4. iperf3 -s -i 1 -p 16004
    5. iperf3 -s -i 1 -p 16005
    6. iperf3 -s -i 1 -p 16006
    7. iperf3 -s -i 1 -p 16007
    8. iperf3 -s -i 1 -p 16008
  2. 在陪練機中以 client 模式啟動 iperf3 進程,分別指定到測試機的不同端口。

     
    1. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16001 -A 1
    2. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16002 -A 2
    3. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16003 -A 3
    4. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16004 -A 4
    5. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16005 -A 5
    6. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16006 -A 6
    7. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16007 -A 7
    8. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.1 -i 1 -p 16008 -A 8

3.3. 測試發方向

  1. 在每個陪練機中以 server 模式啟動 1 個 iperf3 進程,-p 指定端口。

     
    1. iperf3 -s -i 1 -p 16001
  2. 在測試機中以 client 模式啟動 8 個 iperf3 進程,-c 指定為各個陪練機的 IP 地址。

     
    1. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.2 -i 1 -p 16001 -A 1
    2. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.3 -i 1 -p 16001 -A 2
    3. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.4 -i 1 -p 16001 -A 3
    4. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.5 -i 1 -p 16001 -A 4
    5. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.6 -i 1 -p 16001 -A 5
    6. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.7 -i 1 -p 16001 -A 6
    7. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.8 -i 1 -p 16001 -A 7
    8. iperf3 -u -l 16 -b 100m -t 120 -c 172.0.0.9 -i 1 -p 16001 -A 8

3.4. 分析測試結果

最終發送端每個 iperf3 進程會輸出如下結果,第一條數據行為發包信息概覽如下。

 
  1. [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
  2. [ 4] 0.00-10.00 sec 237 MBytes 199 Mbits/sec 0.027 ms 500/30352 (1.6%)
  3. [ 4] Sent 30352 datagrams

輸出結果中各字段含義解釋如下表所示。

字段數據 含義
237 傳送的總數據量
199 帶寬大小
0.027 波動率
500/30352 丟包/總報文數
1.6% 丟包率

PPS = 對端收到的包/時間

通常我們建議在 server 端運行 sar 來統計實際收到的包並作為實際結果,具體命令為: sar -n DEV 1 320


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM