轉(zhuǎn)載自:http://www.samirchen.com/linux-network-performance-test/網(wǎng)絡(luò)性能測試的幾項重要指標(biāo)
1、可用性
測試網(wǎng)絡(luò)性能的第一步是確定網(wǎng)絡(luò)是否正常工作,最簡單的方法就是使用ping
命令,通過向遠(yuǎn)端的機器發(fā)送ICMP請求,并等待接收ICMP回應(yīng),來判斷遠(yuǎn)端的機器是否連通,網(wǎng)絡(luò)是否正常工作。
2、響應(yīng)時間
ping
命令的ICMP報文響應(yīng)一次往返所花費時間就是響應(yīng)時間,有很多因素會影響到響應(yīng)時間,如網(wǎng)段的負(fù)荷,網(wǎng)絡(luò)主機的負(fù)荷,廣播風(fēng)暴,工作不正常的網(wǎng)絡(luò)設(shè)備等等。
3、網(wǎng)絡(luò)利用率
網(wǎng)絡(luò)利用率是指網(wǎng)絡(luò)被使用的時間占總時間(即被使用的時間+空閑的時間)的比例。例如,Ethernet雖然是共享的,但同時卻只能有一個報文在傳輸,因此在任一時刻,Ethernet或者是100%的利用率,或者是0%的利用率。計算一個網(wǎng)段的網(wǎng)絡(luò)利用率相對比較容易,但是確定一個網(wǎng)絡(luò)的利用率就比較復(fù)雜。因此,網(wǎng)絡(luò)測試工具一般使用網(wǎng)絡(luò)吞吐量和網(wǎng)絡(luò)帶寬容量來確定網(wǎng)絡(luò)中兩個節(jié)點之間的性能。
4、網(wǎng)絡(luò)吞吐量
網(wǎng)絡(luò)吞吐量是指在某個時刻,在網(wǎng)絡(luò)中的兩個節(jié)點之間,提供給網(wǎng)絡(luò)應(yīng)用的剩余帶寬,通過網(wǎng)絡(luò)吞吐量可以尋找出網(wǎng)絡(luò)瓶頸。比如,即使client
和server
都被分別連接到各自的100M
以太網(wǎng)卡上,但是如果這兩個100M
的以太網(wǎng)卡被10M
的交換機連接起來,那么10M
的交換機就是網(wǎng)絡(luò)的瓶頸。
5、網(wǎng)絡(luò)帶寬容量
與網(wǎng)絡(luò)吞吐量不同,網(wǎng)絡(luò)帶寬容量指的是在網(wǎng)絡(luò)的兩個節(jié)點之間的最大可用帶寬,這是由組成網(wǎng)絡(luò)的設(shè)備能力所決定的。
使用iperf進(jìn)行測試
iperf介紹
iperf是一個TCP/IP和UDP/IP性能測試工具,能夠提供網(wǎng)絡(luò)吞吐率信息,以及震動、丟包率、最大組和最大傳輸單元大小等統(tǒng)計信息,可以由這些信息來分析網(wǎng)絡(luò)的通信性能、定位網(wǎng)絡(luò)瓶頸。
iperf以client/server方式工作,服務(wù)器端和客戶端都使用同一程序iperf
,服務(wù)器端使用-s
選項,而客戶端則使用-c
選項。在 client與server之間,首先建立一個控制連接,傳遞有關(guān)測試配置的信息,以及測試的結(jié)果;在控制連接建立并傳遞了測試配置信息以后,client與server之間會再建立一個測試連接,用來回傳遞著特殊的流量模式,以測試網(wǎng)絡(luò)的性能。
iperf獲取與安裝
下載地址:http://iperf.sourceforge.net/
配置與安裝:
[root@rh tool]# tar -zxvf iperf-2.0.2.tar.gz
[root@rh tool]# cd iperf-2.0.2
[root@rh iperf-2.0.2]# ./configure --prefix=/usr/netperf
[root@rh iperf-2.0.2]# make
[root@rh iperf-2.0.2]# make install
[root@rh iperf-2.0.2]# ls /usr/netperf
iperf的使用
啟動server端:
[root@rh iperf-2.0.2]# cd /usr/iperf/bin
[root@rh bin]# ./iperf -s
還可以設(shè)置這些參數(shù):
服務(wù)器端選項 | 環(huán)境變量選項 | 說明 |
---|
-s, --server | $IPERF_SERVER | 在服務(wù)器端運行 iperf; |
-D | . | 以后臺方式運行 iperf 服務(wù)模式; |
-R | . | 如果 iperf 正在運行,則將其終止運行; |
啟動client端:
用TCP的方式測試本機到192.168.0.138
主機(-c 192.168.0.138)
的網(wǎng)絡(luò)性能,時長為60
秒(-t 60)
,緩沖區(qū)的大小為8KB
(-l 8k)
,每10
秒(-i 10)
打印一次測試結(jié)果。
[root@rh iperf-2.0.2]# cd /usr/iperf/bin
[root@rh bin]# ./iperf -c 192.168.0.138 -t 60 -l 8k -i 10
------------------------------------------------------------
Client connecting to 192.168.0.138, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.137 port 42812 connected with 192.168.0.138 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.64 GBytes 1.41 Gbits/sec
[ 3] 10.0-20.0 sec 5.26 GBytes 4.52 Gbits/sec
[ 3] 20.0-30.0 sec 5.26 GBytes 4.52 Gbits/sec
[ 3] 30.0-40.0 sec 5.27 GBytes 4.53 Gbits/sec
[ 3] 40.0-50.0 sec 5.26 GBytes 4.51 Gbits/sec
[ 3] 50.0-60.0 sec 5.26 GBytes 4.52 Gbits/sec
[ 3] 0.0-60.0 sec 27.9 GBytes 4.00 Gbits/sec
還可以設(shè)置這些參數(shù):
客戶端選項 | 環(huán)境變量選項 | 說明 |
---|
-b, --bandwidth | $IPERF_BANDWIDTH | 指定客戶端通過 UDP 協(xié)議發(fā)送信息的帶寬,默認(rèn)值為 1Mbps; |
使用netperf進(jìn)行測試
netperf介紹
netperf是一種網(wǎng)絡(luò)性能測量工具,主要針對基于TCP或UDP的傳輸。netperf根據(jù)應(yīng)用的不同,可以進(jìn)行不同模式的網(wǎng)絡(luò)性能測試,即批量數(shù)據(jù)傳輸(bulk data transfer)模式和請求/應(yīng)答(request/response)模式。netperf反應(yīng)的是一個系統(tǒng)能以多快的速度向另一個系統(tǒng)發(fā)送數(shù)據(jù),以及另一個系統(tǒng)能以多快的速度接受數(shù)據(jù)。
netperf是以client/server的方式工作,server端是netserver,用來偵聽來自client 端的連接;client端是netperf,用來向server發(fā)起網(wǎng)絡(luò)測試。在client與server之間,首先建立一個控制連接,傳遞有關(guān)測試配置的信息,以及測試結(jié)果;在控制連接建立并傳遞了測試配置信息后,client與server之間會再建立一個測試連接,用來來回傳遞著特殊的流量模式,以測試網(wǎng)絡(luò)的性能。
netperf可以模擬三種不同的TCP流量模式:
- 單個TCP連接,批量(bulk)傳輸大量數(shù)據(jù);
- 單個TCP連接,client請求/server應(yīng)答的交易(transaction)方式;
- 多個TCP連接,每個連接中一對請求/應(yīng)答的交易方式
netperf可以模擬兩種UDP的流量模式:
- 從client到server的單向批量傳輸;
- 請求/應(yīng)答的交易方式。
由于UDP傳輸?shù)牟豢煽啃裕谑褂?nbsp;netperf時要確保發(fā)送的緩沖區(qū)大小不大于接收緩沖區(qū)大小,否則數(shù)據(jù)會丟失,netperf將給出錯誤的結(jié)果。因此,對于接收到分組的統(tǒng)計不一定準(zhǔn)確,需要結(jié)合發(fā)送分組的統(tǒng)計綜合得出結(jié)論。
netperf獲取與安裝
下載地址:http://www.netperf.org/netperf/
配置與安裝:
[root@rh tool]# tar -zxvf netperf-2.6.0.tar.gz
[root@rh tool]# cd netperf-2.6.0
[root@rh netperf-2.6.0]# ./configure --prefix /usr/netperf
[root@rh netperf-2.6.0]# make
[root@rh netperf-2.6.0]# make check
[root@rh netperf-2.6.0]# make install
[root@rh netperf-2.6.0]# ls /usr/netperf
netperf使用
啟動server端:
[root@rh netperf-2.6.0]# cd /usr/netperf/bin
[root@rh bin]# ./netserver
啟動client端:
1)TCP_STREAM
模式。進(jìn)行TCP批量傳輸性能測試。這是netperf缺省情況。
批量數(shù)據(jù)傳輸?shù)湫偷睦佑蠪TP和其他類似的網(wǎng)絡(luò)應(yīng)用(即一次傳輸整個文件)。根據(jù)使用傳輸協(xié)議的不同,批量數(shù)據(jù)傳輸又分為TCP批量傳輸和UDP批量傳輸。
用 TCP 批量傳輸?shù)姆绞?/code> (-t TCP_STREAM)
測試本機到 192.168.0.138
主機(-H 192.168.0.138)
的網(wǎng)絡(luò)性能,時長 60
秒(-l 60)
,每次發(fā)送本地發(fā)送測試分組的大小為2048Bytes
(-m 2048)
。
[root@rh netperf-2.6.0]# cd /usr/netperf/bin
[root@rh bin]# ./netperf -t TCP_STREAM -H 192.168.0.138 -l 60 -- -m 2048
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.138 () port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 2048 60.00 5463.11
從上面netperf的輸出結(jié)果中,可以得到如下信息:
- 1)遠(yuǎn)端系統(tǒng)(即 server)使用大小為 87380 字節(jié)的 socket 接收緩沖;
- 2)本地系統(tǒng)(即 client)使用大小為 16384 字節(jié)的 socket 發(fā)送緩沖;
- 3)向遠(yuǎn)端系統(tǒng)發(fā)送的測試分組大小為 2048 字節(jié),通過 -m 2048 設(shè)置;
- 4)測試經(jīng)歷的時間為 60 秒;
- 5)吞吐量的測試結(jié)果為 5463.11 Mbps;
在缺省的情況下,netperf向遠(yuǎn)端系統(tǒng)發(fā)送的測試分組大小會設(shè)置為本地系統(tǒng)所使用的 socket 發(fā)送緩沖大小。
還可以設(shè)置這些局部命令行參數(shù):
客戶端選項 | 變量 | 說明 |
---|
-s | $size | 設(shè)置本地系統(tǒng)的 socket 發(fā)送與接收緩沖大小; |
-S | $size | 設(shè)置遠(yuǎn)端系統(tǒng)的 socket 發(fā)送與接收緩沖大小; |
-m | $size | 設(shè)置本地系統(tǒng)發(fā)送測試分組的大小; |
-M | $size | 設(shè)置遠(yuǎn)端系統(tǒng)接收測試分組的大小; |
-D | . | 對本地與遠(yuǎn)端系統(tǒng)的 socket 設(shè)置 TCP_NODELAY 選項; |
通過修改以上的參數(shù),并觀察測試結(jié)果的變化,可以確定是什么因素影響了連接的吞吐量。
例如,如果懷疑路由器由于缺乏足夠的緩沖區(qū)空間,使得轉(zhuǎn)發(fā)大的分組時存在問題,就可以改變測試分組的大小(-m)
,以觀察吞吐量的變化。如果當(dāng)測試分組由較大變?yōu)檩^小,而吞吐量出現(xiàn)較大的變化(比如吞吐量變大),說明網(wǎng)絡(luò)中路由器確實存在緩沖區(qū)不足的問題。
2)UDP_STREAM
,進(jìn)行 UDP 批量傳輸性能測試。
需要注意的是此時測試分組的大小不能大于 socket 發(fā)送與接收的緩沖區(qū)大小,否則 netperf 會報錯。
UDP_STREAM
方式使用與 TCP_STREAM
方式相同的局部命令行參數(shù)。
用 UDP 批量傳輸?shù)姆绞?/code> (-t UDP_STREAM)
測試本機到 192.168.0.138
主機(-H 192.168.0.138)
的網(wǎng)絡(luò)性能,時長 60
秒(-l 60)
,每次發(fā)送本地發(fā)送測試分組的大小為2048Bytes
(-m 2048)
。
[root@rh netperf-2.6.0]# cd /usr/netperf/bin
[root@rh bin]# ./netperf -t UDP_STREAM -H 192.168.0.138 -l 60 -- -m 2048
MIGRATED UDP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.138 () port 0 AF_INET
Socket Message Elapsed Messages
Size Size Time Okay Errors Throughput
bytes bytes secs # # 10^6bits/sec
229376 2048 60.00 11159606 0 3047.29
229376 60.00 11115165 3035.15
可以看到,最后結(jié)果有兩行,第一行數(shù)據(jù)顯示的是本地系統(tǒng)的發(fā)送統(tǒng)計,這里的吞吐量表示 netperf 向本地 socket 發(fā)送分組的能力。但是由于 UDP 是不可靠的傳輸協(xié)議,發(fā)送出去的分組數(shù)量不一定等于接收到的分組數(shù)量;第二行數(shù)據(jù)顯示的就是遠(yuǎn)端系統(tǒng)接收的情況,這里看到接收到的數(shù)據(jù)小于發(fā)送的數(shù)據(jù),即存在丟包的情況。遠(yuǎn)端系統(tǒng)的接收吞吐量也小于本地發(fā)送吞吐量。
3)TCP_RR
,在一個 TCP 連接中進(jìn)行多次 request 和 response 的交易過程的性能測試。
這種方式常出現(xiàn)在數(shù)據(jù)庫應(yīng)用中,數(shù)據(jù)庫與客戶端程序建立一個 TCP 連接后,就在這個連接中傳遞數(shù)據(jù)庫的多次交易過程。
用 TCP_RR
的方式(-t TCP_RR)
測試本機到 192.168.0.138
主機(-H 192.168.0.138)
的網(wǎng)絡(luò)性能,時長 60
秒(-l 60)
,設(shè)置 request 分組大小為 64Bytes
,response 分組大小1024Bytes
。
[root@rh netperf-2.6.0]# cd /usr/netperf/bin
[root@rh bin]# ./netperf -t TCP_RR -H 192.168.0.138 -l 60 -- -r 64,1024
MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.138 () port 0 AF_INET : first burst 0
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 64 1024 60.00 9194.92
16384 87380
這里的輸出結(jié)果有兩行,第一行數(shù)據(jù)顯示的是本地系統(tǒng)的信息,第二行數(shù)據(jù)顯示的遠(yuǎn)端系統(tǒng)的信息。Trans. Rate per sec
是平均交易率。
通常增加 request/response 分組的大小會使得交易率下降。相對于實際的系統(tǒng),這里的交易率的計算沒有充分考慮到交易過程中的應(yīng)用程序處理時延,因此結(jié)果會高于實際情況。
還可以設(shè)置這些參數(shù):
客戶端選項 | 變量 | 說明 |
---|
-r | $req,$resp | 設(shè)置 request 和 reponse 分組的大小; |
-s | $size | 設(shè)置本地系統(tǒng)的 socket 發(fā)送與接收緩沖大小; |
-S | $size | 設(shè)置遠(yuǎn)端系統(tǒng)的 socket 發(fā)送與接收緩沖大小; |
-D | . | 對本地與遠(yuǎn)端系統(tǒng)的 socket 設(shè)置 TCP_NODELAY 選項; |
4)TCP_CRR
,與 TCP_RR
的方式不同,TCP_CRR
為每次交易建立一個新的 TCP 連接。測試這種情況的網(wǎng)絡(luò)性能。
這種方式最典型的應(yīng)用是 HTTP,每次 HTTP 交易是在一條單獨的 TCP 連接中進(jìn)行的,這個過程需要不停地建立新的 TCP 連接,并在交易結(jié)束后結(jié)束 TCP 連接,交易率會受到較大影響。
用 TCP_CRR
的方式(-t TCP_CRR)
測試本機到 192.168.0.138
主機(-H 192.168.0.138)
的網(wǎng)絡(luò)性能,時長 60
秒(-l 60)
,設(shè)置 request 分組大小為 64Bytes
,response 分組大小 1024Bytes
。
[root@rh netperf-2.6.0]# cd /usr/netperf/bin
[root@rh bin]# ./netperf -t TCP_CRR -H 192.168.0.138 -l 60 -- -r 64,1024
MIGRATED TCP Connect/Request/Response TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.138 () port 0 AF_INET
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 64 1024 60.00 2728.00
16384 87380
這里的輸出結(jié)果有兩行,第一行數(shù)據(jù)顯示的是本地系統(tǒng)的信息,第二行數(shù)據(jù)顯示的遠(yuǎn)端系統(tǒng)的信息。Trans. Rate per sec
是平均交易率。
5)UDP_RR
,使用 UDP 分組進(jìn)行 request 和 response 交易過程的性能測試。
用 UDP_RR
的方式(-t UDP_RR)
測試本機到 192.168.0.138
主機(-H 192.168.0.138)
的網(wǎng)絡(luò)性能,時長 60
秒(-l 60)
,設(shè)置 request 分組大小為 64Bytes
,response 分組大小1024Bytes
。
[root@rh netperf-2.6.0]# cd /usr/netperf/bin
[root@rh bin]# ./netperf -t UDP_RR -H 192.168.0.138 -l 60 -- -r 64,1024
MIGRATED UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.138 () port 0 AF_INET : first burst 0
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
229376 229376 64 1024 60.00 10635.03
229376 229376
這里的輸出結(jié)果有兩行,第一行數(shù)據(jù)顯示的是本地系統(tǒng)的信息,第二行數(shù)據(jù)顯示的遠(yuǎn)端系統(tǒng)的信息。Trans. Rate per sec
是平均交易率。
UDP_RR
方式使用 UDP 分組進(jìn)行 request/response 的交易過程。由于沒喲 TCP 連接所帶來的負(fù)擔(dān),所以交易率相對 TCP_RR
方式一般會有相應(yīng)的提升。
但是如果出現(xiàn)了相反的結(jié)果,即交易率反而降低了,也不用太驚訝,因為這說明在網(wǎng)絡(luò)中,路由器或其他網(wǎng)絡(luò)設(shè)備對 UDP 采用了與 TCP 不同的緩沖區(qū)空間和處理技術(shù)。
其他注意事項
測試的時候,常常由于防火墻的原因造成網(wǎng)絡(luò)不能連接,這時候可以設(shè)置或關(guān)閉防火墻后再測試。關(guān)閉和啟動防火墻命令:
service iptables stop/start;
后記
常用的網(wǎng)絡(luò)性能測試工具除了 iperf、netperf,還有pathload、pathrate、DBS、tcptrace等工具。
本文參考:《網(wǎng)絡(luò)管理必備工具軟件精解(Linux版)》,作者:李波;楊紅,人民郵電出版社。