Linux – iperf (Bind to host)

一般測試 iperf 會使用兩台電腦來進行測試,如下所示:
測試方式請參考 http://benjr.tw/462
iperf01

我有只有一台電腦,但是有兩個網路埠,這樣是否可以使用 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 其他說明與應用

沒有解決問題,試試搜尋本站其他內容

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料