1. 程式人生 > >Linux Iperf 測試網路效能

Linux Iperf 測試網路效能

Iperf必須安裝在正在測試兩者之間的連線的兩臺計算機上。 如果在個人計算機上使用基於Unix或Linux的作業系統,則可以在本地計算機上安裝Iperf。 但是,如果正在測試Linode的吞吐量,最好使用另一臺伺服器作為終端,因為本地ISP可能會施加可能影響測試結果的網路限制。

TCP Clients & Servers

Iperf需要兩個系統,因為一個系統必須充當一個伺服器(DUT),而另一個則作為客戶端(Server)。

  1. DUT端執行:
iperf -s

2.DUT端會出現下列輸出:

Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)

3.Server端執行下面的命令連線到DUT端對應的網口的IP:

iperf -c 198.51.100.5

4.Server端會出現下面輸出:

Client connecting to 198.51.100.5, TCP port 5001
TCP window size: 45.0 KByte (default)

[ 3] local 198.51.100.6 port 50616 connected with 198.51.100.5 port 5001
[ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec

5.DUT端也會出現下列輸出:

Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)

[ 4] local 198.51.100.5 port 5001 connected with 198.51.100.6 port 50616
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec

6.退出:CTRL + c.

UDP Clients & Servers

使用Iperf,還可以測試通過UDP連線實現的最大吞吐量。

1.Start a UDP Iperf server:

iperf -s -u

2.server 的輸出:

Server listening on UDP port 5001
Receiving 1470 byte datagrams UDP buffer size: 208 KByte (default)

3.連線Client 和 Server 使用下面的命令

iperf -c 198.51.100.5 -u

4.我們已經通過-u選項告訴Iperf我們是通過UDP連線的,因為我們希望看到通過UDP實現的最大吞吐量。輸出應類似於:

Client connecting to 198.51.100.5, UDP port 5001
Sending 1470 byte datagrams

UDP buffer size: 208 KByte (default)
[ 3] local 198.51.100.6 port 58070 connected with 198.51.100.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 893 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.084 ms 0/ 893 (0%)

5.看看我們收到的輸出:1.05 Mbits / sec遠遠低於我們在TCP測試中收到的輸出。 它也遠遠低於1GB DUT(Client)提供的最大出站頻寬上限。 這是因為預設情況下,Iperf將UDP客戶端的頻寬限制為每秒1 Mbit。

6.可以使用-b標誌進行更改,將數字替換為要測試的最大頻寬速率。如果您正在測試網路速度,我們建議將此數字設定在DUT(Client)提供的最大頻寬上限之上。例如,這個測試是在1GB的執行緒上執行的:

iperf -c 198.51.100.5 -u -b 1000m

7.這說明,如果可能,我們希望每秒最多可以達到1000 Mbits。 -b標誌僅在使用UDP連線時有效,因為Iperf不會在TCP客戶端上設定頻寬限制。

8.輸出類似於:

Client connecting to 198.51.100.5, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)

[ 3] local 198.51.100.5 port 52308 connected with 198.51.100.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 966 MBytes 810 Mbits/sec
[ 3] Sent 688897 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 966 MBytes 810 Mbits/sec 0.001 ms
0/688896 (0%) [ 3] 0.0-10.0 sec 1 datagrams received out-of-order

9.現在比以前看到的1.05 Mbits / sec好多了!

Bidirectional(雙向) Tests

在某些情況下,可能需要測試兩個伺服器的最大吞吐量。這可以使用Iperf提供的內建雙向測試功能輕鬆完成。

 iperf -c 198.51.100.5 -d

結果是Iperf將在原始客戶端伺服器上啟動伺服器和客戶端連線(198.51.100.6)。 一旦這樣做,Iperf將原始的Iperf伺服器連線到客戶端連線,該客戶端連線現在充當伺服器連線和客戶端連線。輸出類似於:

Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)

Client connecting to 198.51.100.5, TCP port 5001
TCP window size: 351 KByte (default)

[ 3] local 198.51.100.6 port 50618 connected with 198.51.100.5 port 5001
[ 5] local 198.51.100.6 port 5001 connected with 198.51.100.5 port 58650
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
[ 3] 0.0-10.2 sec 1.28 GBytes 1.08 Gbits/sec

在原始的Iperf Server將會看到:

Client connecting to 198.51.100.6, TCP port 5001
TCP window size: 153 KByte (default)

[ 6] local 198.51.100.5 port 58650 connected with 198.51.100.6 port 5001
[ 6] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
[ 5] 0.0-10.2 sec 1.28 GBytes 1.08 Gbits/sec