1. 程式人生 > 實用技巧 >Linux環境下網路效能測試

Linux環境下網路效能測試

網路效能測試的幾項重要指標

1、可用性

測試網路效能的第一步是確定網路是否正常工作,最簡單的方法就是使用ping命令,通過向遠端的機器傳送ICMP請求,並等待接收ICMP迴應,來判斷遠端的機器是否連通,網路是否正常工作。

2、響應時間

ping命令的ICMP報文響應一次往返所花費時間就是響應時間,有很多因素會影響到響應時間,如網段的負荷,網路主機的負荷,廣播風暴,工作不正常的網路裝置等等。

3、網路利用率

網路利用率是指網路被使用的時間佔總時間(即被使用的時間+空閒的時間)的比例。例如,Ethernet雖然是共享的,但同時卻只能有一個報文在傳輸,因此在任一時刻,Ethernet或者是100%的利用率,或者是0%的利用率。計算一個網段的網路利用率相對比較容易,但是確定一個網路的利用率就比較複雜。因此,網路測試工具一般使用網路吞吐量和網路頻寬容量來確定網路中兩個節點之間的效能。

4、網路吞吐量

網路吞吐量是指在某個時刻,在網路中的兩個節點之間,提供給網路應用的剩餘頻寬,通過網路吞吐量可以尋找出網路瓶頸。比如,即使client和server都被分別連線到各自的100M乙太網卡上,但是如果這兩個100M的乙太網卡被10M的交換機連線起來,那麼10M的交換機就是網路的瓶頸。

5、網路頻寬容量

與網路吞吐量不同,網路頻寬容量指的是在網路的兩個節點之間的最大可用頻寬,這是由組成網路的裝置能力所決定的。

使用iperf進行測試
iperf介紹

iperf是一個TCP/IP和UDP/IP效能測試工具,能夠提供網路吞吐率資訊,以及震動、丟包率、最大組和最大傳輸單元大小等統計資訊,可以由這些資訊來分析網路的通訊效能、定位網路瓶頸。

iperf以client/server方式工作,伺服器端和客戶端都使用同一程式iperf,伺服器端使用-s選項,而客戶端則使用-c選項。在
client與server之間,首先建立一個控制連線,傳遞有關測試配置的資訊,以及測試的結果;在控制連線建立並傳遞了測試配置資訊以後,client與server之間會再建立一個測試連線,用來回傳遞著特殊的流量模式,以測試網路的效能。

iperf獲取與安裝

下載地址:http://iperf.sourceforge.net/

配置與安裝:
在這裡插入圖片描述
iperf的使用

啟動server端:
在這裡插入圖片描述
還可以設定這些引數:
在這裡插入圖片描述
啟動client端:

用TCP的方式測試本機到192.168.0.138主機(-c 192.168.0.138)的網路效能,時長為60秒(-t60),緩衝區的大小為8KB (-l 8k),每10秒(-i 10)列印一次測試結果。

在這裡插入圖片描述
還可以設定這些引數:
在這裡插入圖片描述
使用netperf進行測試
netperf介紹
netperf是一種網路效能測量工具,主要針對基於TCP或UDP的傳輸。netperf根據應用的不同,可以進行不同模式的網路效能測試,即批量資料傳輸(bulk data transfer)模式和請求/應答(request/response)模式。netperf反應的是一個系統能以多快的速度向另一個系統傳送資料,以及另一個系統能以多快的速度接受資料。

netperf是以client/server的方式工作,server端是netserver,用來偵聽來自client端的連線;client端是netperf,用來向server發起網路測試。在client與server之間,首先建立一個控制連線,傳遞有關測試配置的資訊,以及測試結果;在控制連線建立並傳遞了測試配置資訊後,client與server之間會再建立一個測試連線,用來來回傳遞著特殊的流量模式,以測試網路的效能。

netperf可以模擬三種不同的TCP流量模式:

  • 單個TCP連線,批量(bulk)傳輸大量資料;
  • 單個TCP連線,client請求/server應答的交易(transaction)方式;
  • 多個TCP連線,每個連線中一對請求/應答的交易方式

netperf可以模擬兩種UDP的流量模式:

  • 從client到server的單向批量傳輸;
  • 請求/應答的交易方式。

由於UDP傳輸的不可靠性,在使用netperf時要確保傳送的緩衝區大小不大於接收緩衝區大小,否則資料會丟失,netperf將給出錯誤的結果。因此,對於接收到分組的統計不一定準確,需要結合傳送分組的統計綜合得出結論。

netperf獲取與安裝

下載地址:http://www.netperf.org/netperf/

配置與安裝:
在這裡插入圖片描述
netperf使用
啟動server端:
在這裡插入圖片描述
啟動client端:
1)TCP_STREAM模式。進行TCP批量傳輸效能測試。這是netperf預設情況。

批量資料傳輸典型的例子有FTP和其他類似的網路應用(即一次傳輸整個檔案)。根據使用傳輸協議的不同,批量資料傳輸又分為TCP批量傳輸和UDP批量傳輸。

用 TCP 批量傳輸的方式 (-t TCP_STREAM)測試本機到 192.168.0.138 主機(-H 192.168.0.138)的網路效能,時長 60 秒(-l 60),每次傳送本地傳送測試分組的大小為 2048Bytes (-m 2048)。

在這裡插入圖片描述
在這裡插入圖片描述
從上面netperf的輸出結果中,可以得到如下資訊:

  • 1)遠端系統(即 server)使用大小為 87380 位元組的 socket 接收緩衝;
  • 2)本地系統(即 client)使用大小為 16384 位元組的 socket 傳送緩衝;
  • 3)向遠端系統傳送的測試分組大小為 2048 位元組,通過 -m 2048 設定;
  • 4)測試經歷的時間為 60 秒;
  • 5)吞吐量的測試結果為 5463.11 Mbps;

在預設的情況下,netperf向遠端系統傳送的測試分組大小會設定為本地系統所使用的 socket 傳送緩衝大小。

還可以設定這些區域性命令列引數:
在這裡插入圖片描述
通過修改以上的引數,並觀察測試結果的變化,可以確定是什麼因素影響了連線的吞吐量。

例如,如果懷疑路由器由於缺乏足夠的緩衝區空間,使得轉發大的分組時存在問題,就可以改變測試分組的大小(-m),以觀察吞吐量的變化。如果當測試分組由較大變為較小,而吞吐量出現較大的變化(比如吞吐量變大),說明網路中路由器確實存在緩衝區不足的問題。

2)UDP_STREAM,進行 UDP 批量傳輸效能測試。

需要注意的是此時測試分組的大小不能大於 socket 傳送與接收的緩衝區大小,否則 netperf 會報錯。

UDP_STREAM 方式使用與 TCP_STREAM 方式相同的區域性命令列引數。

用 UDP 批量傳輸的方式 (-t UDP_STREAM)測試本機到 192.168.0.138 主機(-H 192.168.0.138)的網路效能,時長 60 秒(-l 60),每次傳送本地傳送測試分組的大小為 2048Bytes (-m 2048)。

在這裡插入圖片描述

可以看到,最後結果有兩行,第一行資料顯示的是本地系統的傳送統計,這裡的吞吐量表示 netperf 向本地 socket
傳送分組的能力。但是由於 UDP是不可靠的傳輸協議,傳送出去的分組數量不一定等於接收到的分組數量;第二行資料顯示的就是遠端系統接收的情況,這裡看到接收到的資料小於傳送的資料,即存在丟包的情況。遠端系統的接收吞吐量也小於本地傳送吞吐量。

3)TCP_RR,在一個 TCP 連線中進行多次 request 和 response 的交易過程的效能測試。

這種方式常出現在資料庫應用中,資料庫與客戶端程式建立一個 TCP 連線後,就在這個連線中傳遞資料庫的多次交易過程。

用 TCP_RR 的方式(-t TCP_RR)測試本機到 192.168.0.138 主機(-H 192.168.0.138)的網路效能,時長 60 秒(-l 60),設定 request 分組大小為 64Bytes,response 分組大小 1024Bytes。
在這裡插入圖片描述
在這裡插入圖片描述

這裡的輸出結果有兩行,第一行資料顯示的是本地系統的資訊,第二行資料顯示的遠端系統的資訊。Trans. Rate per sec
是平均交易率。

通常增加 request/response分組的大小會使得交易率下降。相對於實際的系統,這裡的交易率的計算沒有充分考慮到交易過程中的應用程式處理時延,因此結果會高於實際情況。

還可以設定這些引數:
在這裡插入圖片描述
4)TCP_CRR,與 TCP_RR 的方式不同,TCP_CRR 為每次交易建立一個新的 TCP 連線。測試這種情況的網路效能。

這種方式最典型的應用是 HTTP,每次 HTTP 交易是在一條單獨的 TCP 連線中進行的,這個過程需要不停地建立新的 TCP
連線,並在交易結束後結束 TCP 連線,交易率會受到較大影響。

用 TCP_CRR 的方式(-t TCP_CRR)測試本機到 192.168.0.138 主機(-H 192.168.0.138)的網路效能,時長 60 秒(-l 60),設定 request 分組大小為 64Bytes,response 分組大小 1024Bytes。
在這裡插入圖片描述
在這裡插入圖片描述
這裡的輸出結果有兩行,第一行資料顯示的是本地系統的資訊,第二行資料顯示的遠端系統的資訊。Trans. Rate per sec 是平均交易率。

5)UDP_RR,使用 UDP 分組進行 request 和 response 交易過程的效能測試。

用 UDP_RR 的方式(-t UDP_RR)測試本機到 192.168.0.138 主機(-H 192.168.0.138)的網路效能,時長 60 秒(-l 60),設定 request 分組大小為 64Bytes,response 分組大小 1024Bytes。

在這裡插入圖片描述
在這裡插入圖片描述

這裡的輸出結果有兩行,第一行資料顯示的是本地系統的資訊,第二行資料顯示的遠端系統的資訊。Trans. Rate per sec
是平均交易率。

UDP_RR 方式使用 UDP 分組進行 request/response 的交易過程。由於沒喲 TCP 連線所帶來的負擔,所以交易率相對
TCP_RR 方式一般會有相應的提升。

但是如果出現了相反的結果,即交易率反而降低了,也不用太驚訝,因為這說明在網路中,路由器或其他網路裝置對 UDP 採用了與 TCP不同的緩衝區空間和處理技術。

其他注意事項

測試的時候,常常由於防火牆的原因造成網路不能連線,這時候可以設定或關閉防火牆後再測試。關閉和啟動防火牆命令:

service iptables stop/start;

後記

常用的網路效能測試工具除了 iperf、netperf,還有 pathload、pathrate、DBS、tcptrace等工具。

本文參考:《網路管理必備工具軟體精解(Linux版)》,作者:李波;楊紅,人民郵電出版社。
http://www.samirchen.com/linux-network-performance-test/