linux測試帶寬命令,Linux服務器網絡帶寬測試iperf
必須先運行iperf server
iperf -s -i 2
客戶端
iperf -c 服務端IP地址
iperf原理解析
iperf工具可以用來測量TCP或者是UDP的網絡吞吐量,即bandwidth(帶寬)測試。
iPerf的主要目標是幫助調整特定路徑上的TCP連接。 眾所周知,TCP最基本的調整問題是調整TCP窗口大小,它控制在任何一點在網絡中可以有多少數據。如果它太小,發送者將會在一段時間內處於空閑狀態,從而影響發送TCP的性能。TCP窗口大小的理論值是:瓶頸帶寬與往返延時的乘積,即:
bottleneck bandwidth * round trip time
例如瓶頸鏈路是45 Mbit/sec,使用ping命令測量到的往返時延是42ms。那么TCP窗口的理論值是
45 Mbit/sec * 42 ms = (45e6) * (42e-3) = 1890000 bits= 230 KByte
在實際測試中,可以以計算得到的TCP窗口為基准,在這個值(如上面為230KByte)的基礎上,升高或者降低TCP窗口大小,可以得到一個性能的提升。 帶寬測試一般來說采用UDP模式測試,因為在UDP模式下能測出極限帶寬、路徑時延、丟包率,這些測試項會在帶寬測試報告中打印出來。
在進行測試時,先以鏈路理論帶寬作為數據發送速率進行測試,例如,從客戶端到服務器之間的鏈路的理論帶寬為1000Mbps,先用 -b 1000M進行測試,然后根據測試結果(包括實際帶寬,時延抖動和丟包率),再以實際帶寬作為數據發送速率進行測試,會發現時延抖動和丟包率比第一次好很多,重復測試幾次,就能得出穩定的實際帶寬。
iperf是基於server-client模式工作的,因此,要使用iperf測試帶寬,需要建立一個服務端(用於丟棄流量)和一個客戶端(用於產生流量)。
iperf服務端或者是客戶端,都是使用的同一個命令,不過是啟動命令的選項不同而已。
1. iperf服務啟動方式
先看下服務端和客戶端的啟動方式:
服務端
iperf -s
客戶端
iperf -c 服務端IP地址
注意:iperf默認測試的是TCP協議的帶寬,如果需要測試UDP的帶寬,則需要加上-u選項
2. iperf常用選項
iperf選項分為 通用選項、服務端特定選項以及客戶端特定選項
通用選項
-f <kmKM> 報告輸出格式。 [kmKM] format to report: Kbits, Mbits, KBytes, MBytes
-i <sec> 在周期性報告帶寬之間暫停n秒。如周期是10s,則-i指定為2,則每隔2秒報告一次帶寬測試情況,則共計報告5次
-p 設置服務端監聽的端口,默認是5001
-u 使用UDP協議測試
-w n<K/M> 指定TCP窗口大小
-m 輸出MTU大小
-M 設置MTU大小
-o <filename> 結果輸出至文件
服務端選項
-s iperf服務器模式
-d 以后台模式運行服務端
-U 運行一個單一線程的UDP模式
客戶端選項
-b , --bandwidth n[KM] 指定客戶端通過UDP協議發送數據的帶寬(bit/s)。默認是1Mbit/s
-c <ServerIP> 以客戶端模式運行iperf,並且連接至服務端主機ServerIP。 eg: iperf -c <server_ip>
-d 雙向測試
-t 指定iperf帶寬測試時間,默認是10s。 eg: iperf -c <server_ip> -t 20
-P 指定客戶端並發線程數,默認只運行一個線程。 eg,指定3個線程 : iperf -c <server_ip> -P 3
-T 指定TTL值
3.實例
master 為服務端
minion 為客戶端
注意:必須先運行iperf server
2秒返回一次帶寬測試報告
# iperf -c 120.24.25.65
------------------------------------------------------------
Client connecting to 120.24.25.65, TCP port 5001
TCP window size: 19.3 KByte (default)
------------------------------------------------------------
[ 3] local 113.58.113.136 port 49959 connected with 120.24.25.65 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.3 sec 3.12 MBytes 2.54 Mbits/sec
[root@iZwz96l7gxttha3j1hk494Z ~]# iperf -s -i 2
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 113.58.113.136 port 5001 connected with 120.24.25.65 port 56238
[ ID] Interval Transfer Bandwidth
[ 4] 0.0- 2.0 sec 792 KBytes 3.24 Mbits/sec
[ 4] 2.0- 4.0 sec 561 KBytes 2.30 Mbits/sec
[ 4] 4.0- 6.0 sec 513 KBytes 2.10 Mbits/sec
[ 4] 6.0- 8.0 sec 609 KBytes 2.50 Mbits/sec
[ 4] 8.0-10.0 sec 529 KBytes 2.17 Mbits/sec
[ 4] 0.0-11.3 sec 3.25 MBytes 2.41 Mbits/sec