Windows 8、8.1 の Client Hyper-V で無線 LAN を使用した場合に Windows XP の仮想マシンからの通信が切断される

現象
以下のような状況を想定します。

- Windows 8 または Windows 8.1 の Client Hyper-V で仮想スイッチ (外部ネットワーク) に無線 LAN アダプターをバインドします。
- 仮想マシンとして Windows XP を構成し、ネットワークアダプターにこの仮想スイッチを割り当てます。

このとき、Windows XP の仮想マシンから外部へのネットワーク通信を開始すると、5 分経過後に通信が切断されることがあります。
原因
Windows 8 および Windows 8.1 の Hyper-V で、無線 LAN アダプターを仮想スイッチにバインドした場合、仮想マシンから外部への通信はブリッジドライバ (bridge.sys) を経由してパケットが転送されます。
このブリッジドライバでは、仮想マシンから送信される ARP パケットをもとにしてパケット転送のためのテーブルを作成しています。
この転送テーブルの保持時間は 5 分 (固定値) であるため、5 分以内に仮想マシンからの ARP パケットが送信される必要があります。
しかし、Windows XP の ARP エントリのキャッシュ時間は最大で 10 分間であるため、最大で 10 分間は Windows XP からの ARP パケットが送信されない場合があります。
この場合に、ブリッジドライバで保持すべき転送テーブルが失われるため、仮想マシンから外部へのネットワーク通信が切断されます。
解決方法
回避策
仮想マシンである Windows XP にて ARP のキャッシュ時間を 5 分より短い値に設定しておくことで、本問題を回避することができます。

- 設定方法
仮想マシン (Windows XP) に、ArpCacheMinReferencedLife のレジストリを 300 秒より小さい値で追加して OS 再起動を行います。

キー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
名前 : ArpCacheMinReferencedLife
種類 : REG_DWORD
デフォルト値 : 600 (秒)
設定すべき値 (例) : 240 (秒)

また、ArpCacheLife の設定を変更し、300 秒以上の値にしている場合には、ArpCacheLife も 300 秒より小さい値に変更します。

キー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
名前 : ArpCacheLife
種類 : REG_DWORD
デフォルト値 : 120 (秒)

- 補足
・ArpCacheLife の値が ArpCacheMinReferencedLife の値より大きい場合は、参照中のの ARP キャッシュエントリと未参照の ARP キャッシュエントリは ArpCacheLife 秒後にクリアされます。
・ArpCacheLife の値が ArpCacheMinReferencedLife の値より小さい場合は、未参照の ARP キャッシュエントリは ArpCacheLife 秒後にクリアされ、参照中の ARP キャッシュエントリは ArpCacheMinReferencedLife 秒後に期限切れになります。

- 参照 URL
Appendix A: TCP/IP Configuration Parameters
http://technet.microsoft.com/en-us/library/cc739819(v=ws.10).aspx
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細
Windows Vista 以降の OS では、ARP パケットのキャッシュ保持の仕組みが Windows XP 以前と異なります。

- 参照 URL
Description of Address Resolution Protocol (ARP) caching behavior in Windows Vista TCP/IP implementations
http://support.microsoft.com/kb/949589/ja-jp

上記の公開情報に記載の通り、仮想マシンの OS が Windows Vista 以降の場合は、既定では ARP キャッシュ時間が 15 秒 ~ 45 秒となるため、通常であれば 5 分未満で ARP パケットが送信され、本問題が発生しないことが期待されます。

しかし、ARP のキャッシュが存在する状態で、同一の ARP エントリの解決を必要とする通信先に対して TCP の新規コネクションの要求 (SYN 要求) が行われると、ARP キャッシュの保持期間が延長されます。このため、仮想マシンの OS が Windows Vista 以降でも、同一の通信先に対して定期的に TCP の SYN 要求を繰り返すような環境においては、5 分以上 ARP パケットが送信されない条件を満たし、本問題が発生する可能性があります。

この場合の対処策は下記の通りです。 

(1) 定期的な TCP SYN 要求の発生要因について調査し、不要な通信の場合はそれを停止する

(2) 下記のコマンドを用いてパラメーターを調整し、"BaseReachable x 1.5" の値が定期的な TCP SYN 要求の間隔よりも短くなるようにする
   netsh interface ipv4 set interface {index} basereachable={value}
関連情報
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2832644 - 最終更新日: 10/31/2016 09:37:00 - リビジョン: 6.0

Windows 8, Windows 8.1

  • KB2832644
フィードバック