Linux Iperf 測試網路效能
Iperf必須安裝在正在測試兩者之間的連線的兩臺計算機上。 如果在個人計算機上使用基於Unix或Linux的作業系統,則可以在本地計算機上安裝Iperf。 但是,如果正在測試Linode的吞吐量,最好使用另一臺伺服器作為終端,因為本地ISP可能會施加可能影響測試結果的網路限制。
TCP Clients & Servers
Iperf需要兩個系統,因為一個系統必須充當一個伺服器(DUT),而另一個則作為客戶端(Server)。
- 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 datagramsUDP 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