Hyper-Vの仮想マシン環境でネットワークを使う場合、トラフィックが激しくなるとエラーになることがある。Windows Server 2008 R2 SP1+Hyper-V 2.0の場合はパッチを適用する。それ以外の環境の場合は、ネットワーク・アダプタの設定でオフロード処理を無効にすると解決することがある。
対象OS:Windows Server 2008/Windows Server 2008 R2
Hyper-Vの仮想マシンでネットワークを使う場合、システム全体のネットワーク・トラフィックが激しくなると、ネットワークが遅くなったり、突然通信できなくなったりすることがある。例えば次のような症状が現れることがある。
ほかにもいろいろな症状があるが、このエラーは常に起こるわけではなく、大きなサイズのパケットを送受信している場合や、トラフィックが非常に多くなった場合に起こりやすいようだ。ファイル・サーバやWebサーバに対するアクセスの場合は、TCPの通信が遅延して途中で強制切断されたりしても、上位プロトコルで再接続を繰り返すように作られていることが多いので、かなり遅くなっても動作するが、アプリケーションによってはリトライをせずにすぐにエラーとなるものがある。
このとき、ネットワーク・モニタでトラフィックを観測してみると、Hyper-V(の仮想マシン)側の応答が途中で遅くなったり、無応答になったりしているようである。また、すべてのHyper-V環境で起こるわけではなく、Hyper-Vの仮想ネットワーク・マネージャで新しい仮想ネットワークを作ったり、その設定を変更したりした後に起こりやすいようである。
この症状に対して、マイクロソフトではWindows Server 2008 R2 SP1環境向けのホットフィックス・パッチを提供しているが、それ以外の環境には適用できない。SP1未適用のWindows Server 2008 R2やWindows Server 2008のHyper-Vの場合は、 Hyper-Vのネットワーク・インターフェイスでオフロード機能を無効にすると直ることがある。本TIPSではそれらの方法を紹介する。
なおオフロード機能とは、IPパケットやTCP/UDPパケットのヘッダ中に格納するチェックサム値の計算を、ホストのCPUではなく、NIC上のコントローラ・チップで行う機能である。これにより、ホストCPUの負荷が軽減され、ネットワーク処理やシステム全体のパフォーマンスが改善するというわけだ。ヘッダ中にセットするチェックサムの計算は、処理は単純なものの、送信するパケット全体に渡ってデータを読み出して計算しなければならないため、少なからずCPUパワーを必要とする(チェックサムについては関連記事参照)。これをネットワーク・インターフェイス側で実行してくれるなら、CPU側での処理は送信するパケットのデータを送信バッファにセットするだけでよい。
Hyper-Vでネットワークが重くなる場合、最初にするべきことは最新のネットワーク・ドライバへの更新である。ドライバのバージョンによってこのような症状が出たり、出なかったりすることがあるようなので、まずは最新のネットワーク・ドライバへの更新を試みる。それでも症状が改善されないようなら、以下の方法を実行する。
Windows Server 2008 R2 SP1上でHyper-V 2.0を利用している場合は、次のサポート技術情報経由で入手できる更新プログラムを適用する。
方法1が使えない場合や効果がない場合、すでにインストールされているなどと表示された場合には、ネットワーク・インターフェイスのオフロード機能を無効にしてみるとよいだろう。オフロード機能を無効にするには2つの方法がある。1つは、Hyper-Vのサーバ全体でオフロード処理を無効にする方法であり、もう1つは各仮想マシンごとで無効にする方法である。
Hyper-Vをインストールする場合、ネットワーク・インターフェイスを2つ用意して、1つを仮想マシン(Hyper-V)専用のネットワークとして利用することが推奨されている。このインターフェイスでオフロード処理を無効にすると、Hyper-V全体でオフロード処理が無効になる。このためにはまずHyper-Vのサーバでネットワーク・アダプタの一覧画面を開き([コントロール パネル]の[ネットワークと共有センター]から[アダプターの設定の変更]を開く)、Hyper-Vの仮想ネットワークとして利用しているインターフェイスのプロパティ画面を開く。
「Microsoft 仮想ネットワーク スイッチ プロトコル」にバインドされているインターフェイス((3))であることを確認後、一番上にある[構成]ボタンをクリックする。すると次のような画面が表示されるので、オフロード関連の機能をすべてオフ/無効に設定する。
この例ではオフロード関連の機能は3つしかないが、ネットワーク・インターフェイスによってはこれ以外にもいくつかオフロード機能があるので(次の表参照)、トラブルを防ぐためにも、すべてオフにしておくとよいだろう。
オフロード機能名の例 |
---|
IPv4 チェックサム オフロード |
TCP チェックサム オフロード(IPv4) |
UDP チェックサム オフロード(IPv4) |
TCP チェックサム オフロード(IPv6) |
UDP チェックサム オフロード(IPv6) |
大容量送信オフロード(IPv4)(large send offload IPv4) |
大容量送信オフロード Version 2(IPv4) |
大容量送信オフロードVersion 2(IPv6) |
設定後はシステムを再起動しておく。なお、この方法を行っても症状が改善しない場合は、次の各マシンごとの設定も行っていただきたい。
Hyper-VのVM上にゲストOSをインストールし、「統合サービス」も導入すると、「Microsoft Virtual Machine バス ネットワーク アダプター」という仮想ネットワーク・インターフェイスがインストールされる。このインターフェイスでオフロード機能を無効にすると、個別の仮想マシンごとにオフロード処理を無効にできる。システム全体での無効化が管理者権限の問題などで利用できない場合は、代わりにこの機能を使って、仮想マシンごとに無効化してもよい。
まずゲストOSでネットワーク・インターフェイスのプロパティ画面を表示させる。
次にアダプタの[構成]ボタンをクリックして、各オフロード機能をすべて無効にする。
設定後は仮想マシンを再起動する。仮想マシンに複数の仮想ネットワーク・アダプタがインストールされている場合は、そのすべてでこの設定を行っておく。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.