一般測試 iperf 會使用兩台電腦來進行測試,如下所示:
測試方式請參考 https://benjr.tw/462
我有只有一台電腦,但是有兩個網路埠,這樣是否可以使用 iperf 直接進行測試,環境如下所示:
這時候可以使用 -B 參數:
-B, –bind host
Bind to host, one of this machine’s addresses. For the client this sets the outbound interface. For a server this sets the incoming interface. This is only useful on multihomed hosts, which have multiple network interfaces.
測試環境為 Ubuntu 16.04 x86_64 (虛擬機)
- Port 1 : IP – 192.168.95.151
- Port 2 : IP – 192.168.95.182
直接透過 apt 來安裝iperf
root@ubuntu:~# apt install iperf
Iperf Server
root@ubuntu:~# iperf -B 192.168.95.151 -s -c 192.168.95.182 -i 10
參數說明:
-B, –bind host
當 iPerf 為 server 模式時,指定這個 IP 為等待連線進來的網路埠 (Incoming Interface).
-s, –server
執行 iPerf 為 server 模式.
-c, –client host
當 iPerf 為 server 模式時, 需要指定 Client host 端的 IP 為何,無法使用在 UDP 測試.
-i, –interval #
每隔 # 秒將測量結果顯示出來,最後會有平均值.
Iperf Client
root@ubuntu:~# iperf -B 192.168.95.182 -c 192.168.95.151 -i 10 -t 60
參數說明:
-B, –bind host
當 iPerf 為 Client 模式時,指定這個 IP 為傳送出去的網路埠 (Outbound Interface).
-c, –client host
當 iPerf 為 Client 模式.
-i, –interval #
每隔 # 秒將測量結果顯示出來,最後會有平均值.
-t, –time #
傳輸資料時間為 # 秒.
測試結果
Client connecting to 192.168.95.151, TCP port 5001 Binding to local address 192.168.95.182 TCP window size: 2.50 MByte (default) ------------------------------------------------------------ [ 3] local 192.168.95.182 port 5001 connected with 192.168.95.151 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 28.8 GBytes 24.7 Gbits/sec [ 3] 10.0-20.0 sec 28.4 GBytes 24.4 Gbits/sec [ 3] 20.0-30.0 sec 29.3 GBytes 25.2 Gbits/sec [ 3] 30.0-40.0 sec 28.7 GBytes 24.6 Gbits/sec [ 3] 40.0-50.0 sec 28.0 GBytes 24.0 Gbits/sec [ 3] 0.0-60.0 sec 172 GBytes 24.6 Gbits/sec
奇怪明明只是 1G 的網卡,怎麼跑出超高的測試結果,透過指令 ifconfig 來檢視 TX , RX 的封包量也沒有增加.
的確這樣的測試只會在內部類似跑 loopback 的方式來執行,並不會透過實際的網路埠.
iperf 其他說明與應用
- MTU (Maximum Transmission Unit ) – https://benjr.tw/3025
- TCP window size – https://benjr.tw/3020
- 統計 jitter 以及 packet loss – https://benjr.tw/3030
- IPv6 – https://benjr.tw/94353
- Multiple client requests (多對一) – https://benjr.tw/94180
- Bidirectional test (雙向測試) – https://benjr.tw/94171
版主您好:
謝謝您這篇的示範啟發,
我目前在 Win 10 試出來主機用 2 個 USB LAN互打的方式, 如下就能跑了:
2 個 USB LAN分別設定 2 個 IP: 192.168.0.1 和 192.168.0.3
第1個視窗執行:
iperf -s -B 192.168.0.3 -c 192.168.0.1 -i 1
第 2 個視窗執行:
iperf -B 192.168.0.1 -c 192.168.0.3 -i 1 -t 180
我用 “工作管理員” 看過, 確實 2 個 LAN 都有再傳送和接收
請您試用看看…..
非常感謝~