ESXiでのネットワークに関するKnowledgeメモです
経験上でいうと(あくまで個人的な意見です)、
・仮想NICは古いOSならフレシキブル。
新しいOS(2003以降)ならばE1000が安牌だけど、パフォーマンス重視であればVMXnet3も検討。
VMNET2?なにそれおいしいの?
(でもE1000にも一部条件で罠があるので注意(特定ESXiバージョンでのSolarisゲストとか)。
VMware的にはVMXnet3を使ってほしいような気がするけど)
・ネットワークに問題があった場合は、まずはTSOをOFF
(特にVMXNET3使用時やLinux使用時)
TSOをOFFにするとCPU使用率が上がるけど安定性重視。
LROも通信速度劣化の原因になる場合があるとのことなのでOFF推奨。
その他ネット上ではGSO,GRO,RX,TX とかもOFFにするのがよいという噂もあるので状況に応じて変更してください。
また、RX Ring Bufferが標準だと512Byteと小さく、Ringバッファがあふれる場合があるので最大値(4096)に増やしておきましょう。
Linuxの場合は以下のコマンドを実施(恒久的には、/etc/rc.d/rc.local とかに追記)
1 2 3 4 5 6 7 8 9 |
ethtool -K eth0 tso off ethtool -K eth0 lro off ethtool -G thh0 rx 4096 (状況に応じて) ethtool -K eth0 gso off ethtool -K eth0 gro off ethtool -K eth1 rx off ethtool -K eth1 tx off |
設定はNICごとに設定なので、複数NICがあれば、それぞれに設定です。
確認は ethtool -k eth0、ethtool 0g eth0 でどうぞ
VMXNET3の場合、Windows2008/R2,Windows2012/R2の場合は以下の設定をするといいらしいです
Netshでの設定
1 2 3 4 5 6 |
netsh int tcp set global chimney=Disabled netsh int tcp set global autotuninglevel=Disabled netsh int tcp set global congestionprovider=None netsh int tcp set global ecncapability=Disabled netsh int ip set global taskoffload=disabled netsh int tcp set global timestamps=Disabled |
確認は netsh int tcp show global でどうぞ。
後は、最新パッチのESX5.xを使用している場合は、以下の設定もいいそうです
(逆に、古いESX5.x(ESXi 5.1 Update 2 、 ESXi 5.0 Patch 12 、ESXi 5.5 Update 1より前)だとdisableにしましょう。)
Control Panel > Network and Internet > Network Connections > Propaties > Advance
RSS Disable ->enable へ変更
(参考)
Network performance with VMXNET3 on Windows Server 2008R2
・ゲストで大きいパケットを受信した時にDropする場合は、RXバッファを増やすのも手
Linuxの場合は以下のコマンドを実施(恒久的には、/etc/rc.d/rc.local とかに追記)
(E1000やVMXNet3の場合)
1 |
ethtool -G eth0 rx 4096 |
設定はNICごとに設定。
確認はethtool -g eth0 で どうぞ
Windowsの場合は、NICのプロパティから変更できるようです。
VMware Knoeledge Base
Enabling TSO in a Windows virtual machine (1465)
WindowsゲストでのTSOの有効化方法のお話
仮想マシンに使用するネットワーク アダプタの選択 (1036627)
Flexible(Vlance,VMXNET)、E1000、VMXNET 2 (拡張)、VMXNET 3について、使用可能OSなど条件のお話。
Poor TCP performance might occur in Linux virtual machines with LRO enabled(1027511)
VMXNET2,VMXNET3を使用している場合にネットワークパフォーマンスが悪くなるばあいがあるので、そのときはTSOを無効化してほしいというお話。
RSS が Windows 仮想マシンで有効になっていると、VMXNET3 が頻繁にリセットする (2065201)
RSSが有効なWindows仮想マシンでVMXNET3を使用しているとNICが頻繁にリセットする場合があるとのこと。対策はRSSを無効にしようというお話。
ESXi 5.1 Update 2 、 ESXi 5.0 Patch 12 、ESXi 5.5 Update 1で解決しているのこと
Broadcom アダプタで tg3 ドライバを利用する環境で TSO を有効にしている場合 ESX/ESXi ホストでデータ破損が発生する (2072706)
BCM5719 などの Broadcom 社製 NIC デバイスでTSOを使用している場合、古いドライバを使用していると通信に不具合が発生するので、ドライバのバージョンアップをするか、TSOを無効化してほしいというお話。
esxtop の出力で仮想スイッチの受信パケットのドロップが表示される (2079812)
ゲストで大きいパケットを受信した時にDropする場合は、RXバッファを増やすと解消できる場合があるというお話。
VMware ESXi 5.1 Update 2 および ESXi 5.5 GA上でSolaris仮想マシンを稼動させた場合、仮想e1000アダプタを使用しているとネットワークスループットが著しく低下するので、ESXiのバージョンを変更するか、仮想NICを変更してくださいというお話。
SolarisなZfsを使用してNFSの仮想内ストレージとして使用しているような方は、引っかかりそうです。(E1000でないとジャンボフレームが使えないので・・・)
VMWare 環境における TCP セグメンテーション オフロード (TSO) と Large Receive Offload (LRO) について (2092912)
TSOのメリット・デメリットと、有効化・無効化方法の説明。
同じ ESXi 5.x ホスト上で E1000 または E1000E 仮想ネットワーク アダプタを使用するゲストの場合ドロップされるパケットの率が高い (2094947)
ESX5.xな同一ホスト上で動かしているゲストがE1000,E1000e仮想NICを使用している場合、パケットドロップが発生する場合がある。ESXi 5.1 Update 2 で解決されているのバージョンアップするか、仮想NICを変えてねというお話。
VMXNET3 ドライバを使用した Linux 仮想マシンでトラフィック シェーピングが有効な分散 vSwitch への接続時にネットワーク スループットが低下する (2101312)
ESX4.1でVMXNET3を使用したゲストで、トラフィックシェービングを使用しているとネットワークスループットが落ちるので、TSOをOFFにしてくださいとのいうお話。
VMXNET3 ネットワーク アダプタを使用した Linux システムから UDP パケットがドロップされる (2101827)
ESX5.0ホスト上でVMXNET3をLinuxで使うと、40バイト以下の小さなUDPパケットでドロップが発生するというお話。
解決にはVMware ESXi 5.0, Patch 04 ESXi-5.0.0-20120904001-standard (2032591)を当てるかE1000に変更する必要があるとのこと。
ただ、状況によるチューニングですので、実際に設定する場合は各自の責任でお願いします。