星期三, 1月 10, 2018

iperf with VMware vSphere 6.5 測試小記

iperf with VMware vSphere 6.5 測試小記


Host: VMware vSphere 6.5
Hardware:  Dell R730


測試環境


VMware  Host --  >   10G Switch  -- >  VMware Host  


沒有開 Jumbo Frames, 所以 MTU 是 1500 ( 因為 10G Switch 不在我的控制範圍內 )

最近因為工作的關係, 所以要來測試網路的連線速度以及效能


一開始在 VMware 的 Guest OS ( openSUSE Leap 42.3 ) 測試 iperf 的時候, 覺得頻寬沒有達到預期.


所以就決定先測試 VMware Host 彼此對連的速度


搜尋一下 google, 找到相關文章[1] , 之前找到的文章, iperf 位置是在別的地方, 所以找不到相關指令.

Server side:


確認 VMKernel 的 vSwitch 只連接上 10G 網卡


首先是關掉 VMware vSphere 的 firewall
  • 這個部份因為是測試環境才這樣做, 不然的話開啟 iperf 預設的 TCP port 5001 也可以


連線到 VMware vSphere 主機 SSH ( 開啟 SSH 服務 )


透過 esxcli 指令觀察 firewall 狀況( 參考文章[2] ).


[root@localhost:~] esxcli  network   firewall   get
  Default Action: DROP
  Enabled: true
  Loaded: true


停用 firewall
[root@localhost:~] esxcli  network  firewall  set  --enabled   false

觀察 firewall
[root@localhost:~] esxcli  network   firewall   get
  Default Action: DROP
  Enabled: false
  Loaded: true


複製 iperf 指令
為何要複製 iperf 指令呢?


因為如果用原來的 iperf 指令, 會出現 Operation not permitted, 連線會被拒絕


[root@localhost:~] /usr/lib/vmware/vsan/bin/iperf   -s
bind failed: Operation not permitted
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------


所以乖乖的複製吧 :)
[root@localhost:~] cp   /usr/lib/vmware/vsan/bin/iperf    /usr/lib/vmware/vsan/bin/i
perf.copy


以複製出來的指令執行 iperf   server  mode


[root@localhost:~] /usr/lib/vmware/vsan/bin/iperf.copy    -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------

Client side:


確認 VMKernel 的 vSwitch 只連接上 10G 網卡


首先是關掉 VMware vSphere 的 firewall
  • 這個部份因為是測試環境才這樣做, 不然的話開啟 iperf 預設的 TCP port 5001 也可以


連線到 VMware vSphere 主機 SSH ( 開啟 SSH 服務 )


透過 esxcli 指令觀察 firewall 狀況( 參考文章[2] ).


[root@localhost:~] esxcli  network   firewall   get
  Default Action: DROP
  Enabled: true
  Loaded: true


停用 firewall
[root@localhost:~] esxcli  network  firewall  set  --enabled   false

觀察 firewall
[root@localhost:~] esxcli  network   firewall   get
  Default Action: DROP
  Enabled: false
  Loaded: true


複製 iperf 指令
[root@localhost:~] cp   /usr/lib/vmware/vsan/bin/iperf    /usr/lib/vmware/vsan/bin/i
perf.copy


以複製出來的指令執行 iperf   client  mode
  • -c 後面你加上 iperf server的 IP
  • 每次 Client 這邊的 port 都會換


[root@localhost:~] /usr/lib/vmware/vsan/bin/iperf.copy   -c   YOUR_SERVER_IP
------------------------------------------------------------
Client connecting to YOUR_SERVER_IP, TCP port 5001
TCP window size: 32.5 KByte (default)
------------------------------------------------------------
[  3] local YOUR_CLIENT_IP port 43885 connected with YOUR_SERVER_IP port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  4.53 GBytes  3.89 Gbits/sec

嘗試使用 -P , --parallel  #        number of parallel client threads to run 方式執行


[root@localhost:~] /usr/lib/vmware/vsan/bin/iperf.copy   -c   YOUR_SERVER_IP  -P  8
  • 這樣的方式就是同時用 8 個連線, 可以再測試出更多一點效能與狀況
  • -w, --window    #[KM]    TCP window size (socket buffer size), 指定大小也是不錯的測試方式, 例如 -w 8M
  • 預設是 10 秒, 但是可以藉由 -t 15 指定測試 15 秒, 然後藉由 -i 1 每秒顯示結果


可以觀察測試結果


在 10G switch 使用 電的方式( 非光纖 ), 加上 MTU 為預設的 1500, 目前我測到的速度大概是 2.X Gbits / sec


[  4]  0.0-15.0 sec  4.32 GBytes  2.47 Gbits/sec


==========================
測試完 VMware vSphere, 接下來就是 Guest OS 部份


Guest OS: openSUSE Leap 42.2


VMware Guest 部份


使用 ethtool  網卡確認網卡速度


# ethtool   eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes:   1000baseT/Full
                       10000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: No
Advertised link modes:  Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Speed: 10000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
MDI-X: Unknown
Supports Wake-on: uag
Wake-on: d
Link detected: yes


安裝  iperf 套件
# zypper   install   iperf


檢查版本
# iperf3  --version
iperf 3.0.12
Linux template 4.4.79-18.26-default #1 SMP Thu Aug 10 20:30:05 UTC 2017 (fa5a935) x86_64 x86_64 x86_64 GNU/Linux


  • 在 VMware 內的 iperf 應該是 2.x 版本, iperf 3.x 版本有多一些新選項


因為是 iperf 3.x 版本, 所以指令Server side
  • 在 5201 port listen


# iperf3   -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

Client side 是


# iperf3  -c  YOUR_SERVER_IP

Notes

  • 要非常注意 Guest OS 的 VM網卡 Driver
    • 剛開始測試的網卡是 Flexible
      • 只有 Giga 的速度, 就算外面是 10G 也沒用 QQ, ethtool 是你的好朋友, 要先下這個指令看速度
      • E1000 我測試也是 Giga 速度
      • 有個 VM 範本不小心選到 Linux - other 32 bits, 只能選 Flexible and e1000, …….
    • 所以一定要用 VMXNET3, 才會跟 10G 做好朋友 :)

參考




~ enjoy it

沒有留言: