測試准備
1. 計划考量參數
TCP上傳數據帶寬
TCP下載數據帶寬
UDP上傳帶寬
UDP下載帶寬
多並發支持
穩定性
Tcp通訊網絡延遲(小包:32、中包1k、大包1M)
UDP通訊網絡延遲(小包:32、中包1k、大包1M)
協議可用性
指定文件真實http下載速度
2. 使用的軟件
Iperf:可完成考量參數1-6
Pstools:可完成考量參數7-8
其余軟件:完成考量參數9-10
測試執行
1. Iperf
1.1. 安裝軟件
服務器端(Centos)執行如下命令:
wget http://downloads.es.net/pub/iperf/iperf-3.0.6.tar.gz
下載完成后進行解壓:
tar zxvf iperf-3.0.6.tar.gz
進入解壓后的程序目錄,執行以下命令:
./configure && make && make install
Iperf3 -s
其中“iperf3 -s”命令為以服務器模式啟動iperf軟件,若啟動成功則有如下提示(默認監聽5201端口):
注:錯誤及解決方法:
問題原因:
Linux系統中找不到libiperf.so.0 庫文件,導致執行iperf3 –s時提示缺少相關lib庫
解決方法:
先執行echo $LD_LIBRARY_PATH命令,得到系統LIB庫所在位置,如:
[root@hengda ~]# echo $LD_LIBRARY_PATH /usr/lib/oracle/11.2/client64/lib
再通過find ./ | grep libiperf.so.0查找服務器上是否存在該lib庫文件,查詢到后拷貝libiperf.so.0庫文件到上一步找到的LIB庫所在目錄下。
客戶端下載iperf windows版軟件,下載地址:https://iperf.fr/iperf-download.php
下載后解壓出iperf兩個文件,打開cmd命令行窗口,進入該文件解壓目錄。
1.2. Iperf使用方法
1.2.1. Tcp上傳數據帶寬
執行命令iperf3 -c [serverip] -b 100M -t 20
-c代表以客戶端方式運行
-b代表使用100M帶寬進行測試,如果館方為1000M有線網絡,也可以使用-b 1000M進行測試。帶寬測試需要考慮客戶端本機網卡能力、館方內網能力、出口帶寬、公網帶寬、服務雲接入帶寬等。
-t即為測試20s時間,如果省略該參數則默認測試10s。
結果上來看,上傳帶寬為93.8Mb/s,也就是達到了百兆左右。
這里說明的是,第一個包應為要建立tcp連接,所以傳輸和帶寬都會略低,而第12.00-13.00傳輸和帶寬都有所下降,說明在該秒存在明顯的丟包。正常無明顯丟包的測試結果應該如下:
1.2.2. Tcp下載數據帶寬
執行命令iperf3 -c [serverip] -b 100M -t 20 -R
相比下載數據帶寬測試多了一個-R參數,意為Reverse,即服務器端發送數據,客戶端接收數據。
1.2.3. UDP上傳數據帶寬
執行命令iperf3 -c [serverip] -u -b 100M -t 20
其中比tcp的上傳數據帶寬測試命令多一個-u,意為使用udp協議。
1.2.4. UDP下載數據帶寬
執行命令iperf3 -c [serverip] -u -b 100M -t 20 -R
1.2.5. 多並發支持
執行命令iperf3 -c [serverip] -P 127 -i 20 -t 20
此處的-P是指啟用多線程,127為線程數,范圍為1-128,但是使用128則會引起windows端的iperf3程序崩潰,所以最多一台電腦可以模擬127個線程同時連接服務器。觀察最后的統計結果,每個線程都有流量,且最后SUM為100M滿速即可。
當然,-R和-u都是可以使用的,但是使用-u只能實現90個線程同時測試,超過90個線程軟件最后會出現假死狀態。
1.2.6. 穩定性測試
執行命令iperf3 -c [serverip] -t 3600
-t是設置時間,3600為持續測試3600s,即1小時。測試思路是可以通過增加時間來評估穩定性,如測試1小時(t的取值范圍並未注明,但是10小時是可以的)。當然-P -u -R都是可選的參數。
2. PsTools
2.1. 軟件安裝
無需安裝,解壓即用。
2.2. 使用方法
2.2.1. Tcp通訊網絡延遲(小包:32、中包1k、大包1M)
執行命令Psping -w 2 -n 100 -l [packet-size] [serverip:port]
此命令可以兼顧時延和端口連通性測試。可以通過修改-l后面的參數達到完成小包至大包的測試工作。
2.2.2. UDP通訊網絡延遲(小包:32、中包1k、大包1M)
雖然在幫助信息中有提示使用-u參數可以測試udp的時延,但是經過抓包發現即使使用了-u參數,psping也是發出tcp報文,這應該是psping的一個bug。因而無法使用psping對udp的時延進行測試。
如果需要測試,則需要自研軟件進行。
2.2.3. 協議(端口)可用性
執行命令psping -q -i 0 [serverip:port]
由於psping在udp測試上存在的bug,所以只能對tcp的協議進行測試。
此命令僅能確認某些特定端口的tcp報文是否被館方網絡禁用(如類似文安的客流統計box的視頻在公司內部被禁止的情況),但也僅限於端口而未能覆蓋應用協議層次。如特定端口的報文被禁用則丟包應為100%。需要確認多少個特殊端口的tcp協議報文則執行多少次即可。
3. 指定文件真實http下載速度
Windows的批處理應該可以解決,但是我們這邊不太會。所以進行了簡單的操作。固定下載服務器上某文件(文件大小一致),打印出下載文件的大小,下載開始時間,下載結束時間,需要手動計算。
我這邊做了一個批處理文件,原理是將所有需要用的exe放在固定的位置,然后在批處理文件中依次執行上述命令,最后生成記錄文件,也即報告,以這個結果文件來評判用戶網絡的環境。
這個方法目前來看初步應該是勉強夠用了,但是在實際測試過程中需要手動修改批處理文件內容,所以還是建議如果可能,可以嘗試做個殼子,或請開發會寫bat編碼的同學重新給編一下具體內容,易用性會強很多。下方附件為初步生成的結果文件,這里面測試過程中使用了幾個公司內部的服務器,僅參考示意即可。