物理專線接入完成后,您需要測試鏈路的性能,確保物理專線可以滿足您的業務需求。本文介紹通過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為例。
- 登錄ECS實例。具體操作,請參見連接方式概述。
- 安裝Netperf。
- 安裝iPerf3。
開啟多隊列功能
假設與物理專線相連的接口為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 | -H | IDC網絡接入設備或ECS實例的IP地址。 |
-p | IDC網絡接入設備或ECS實例的端口。 | |
-l | 運行時間。 | |
-t | 發送報文的協議類型:TCP_STREAM或UDP_STREAM。 推薦使用UDP_STREAM。 | |
-m | 數據包大小。
|
測試IDC網絡接入設備作為服務端的包轉發性能
- 在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
- 分別在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實例
- 測試pps時,執行命令示例如下所示:
測試IDC網絡接入設備作為客戶端的包轉發性能
- 分別在8個ECS實例上執行
netserver -p 11256
命令,啟動netserver進程,并指定端口。 - 在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實例
- 測試pps時,執行命令示例如下所示:
分析測試結果
客戶端的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 |
|
-u | 表示使用UDP協議發送報文。若不指定該參數則表示使用TCP協議。 |
-l | 設置讀寫緩沖區的長度。通常測試包轉發性能時建議該值設為16,測試帶寬時建議該值設為1400。 |
-b | UDP模式使用的帶寬,單位bit/s。 |
-t | 設置傳輸的總時間。iPerf3在指定時間內,重復發送指定長度數據包的時間,默認值為10秒。 |
-A | 設置CPU親和性,可以將iPerf3進程綁定對應編號的邏輯CPU,避免iPerf3進程在不同的CPU間被調度。 |
測試IDC網絡接入設備作為服務端的帶寬
- 在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
- 分別在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網絡接入設備作為客戶端的帶寬
- 分別在8個ECS實例上執行
iperf3 -s -i 1 -p 16001
命令,以服務端模式啟動iPerf3進程并指定端口。 - 在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 | 丟失報文數/總報文數(丟包率) |